Ich habe ein kleines Problem mit der seriellen Kommunikation. Ich möchte mit dem Arduino Messergebnisse eines Agilent Multimeters auswerten. Dieses sendet nun die Messdaten nicht im Integer Format, sondern als byte (oder float). Serial.read(); liefert aber immer bloß ein int Wert zurück (konkret: -1 egal was gemessen wurde). Gibt es noch andernweitig Möglichkeiten seriell Daten einzulesen?
Das Multimeter liefert die korrekten Werte zurück, hab es mit HTerm überprüft.
Bin für jede Idee oder Denkanstoß dankbar
LG MAX
hier mal die Funktion, die die Messwerte einlesen soll:
So wie Du den Fall beschreibst, bekommst Du gar keine Daten. Wenn ein Serial.Read() eine "-1" zurück liefert, bedeutet das, das keine Daten vorhanden sind.
Da Du Serial1 verwendest, stellt sich die Frage welchen Arduino Du hast? Soweit ich weiss hat nur der Mega mehr als eine serielle Schnittstelle.
Weiterhin ist die Frage mit welche Baud-Rate das Messgerät sendet und wie Du das Gerät angeschlossen hast? Falls das Gerät RS232 spricht, ist z.B. auch wichtig ob es das mit TTL-Pegel (5V) oder mit RS232 Pegel (+/- 12V) macht. Im zweiten Fall hast Du die serielle Schnittstelle Deines Arduino vermutlich bereits gegrillt.
Hier würde ich die entsprechenden Pins per Taster und LED mal prüfen, ob die als Eingang und Ausgang noch funktionieren.
Zusätzlich zur Baudrate gibt es noch weitere Parameter für eine serielle Verbindung (Stop-Bits, Paritäts-Bits, etc.) Default ist in der Regel 8N1.
aber die Probleme die du da ansprichst habe ich alle schon überprüft. Wenn ich vom Arduino (Leonardo) Befehle an das Multimeter sende, kommen diese auch ordnungsgemäß an und werden ausgeführt. Wenn ich von meinem Rechner aus den "READ?" Befehl (direkt an das Messgerät) sende, dann bekomme ich auch eine zufriedenstellende Antwort (am PC).
das Problem besteht meiner Meinung nach nur darin, das das Arduino mit dem ankommenden format schwierigkeiten hat.
Heute hat sich allerdings herausgestellt, dass das Problem doch nicht softwareseitig zu suchen ist.
Nachdem ich einige Zeit mit dem Oszi herumgemessen habe, bin ich zu den folgenden Erkenntnissen gekommen:
am Arduino kommt kein Signal an
es liegt nicht am Pegelwandler (MAX3232), den hab ich zum einen gewechselt, zum anderen kommt dort auch kein richtiges Signal an. Sonstige Beschaltung des MAX 3232 ist auch i.o.
Kommunikation zwischen PC und Multimeter funktioniert tadellos (wunderschönen Oszibildern)
Kommunikation zwischen PC und Arduino funktioniert auch tadellos (ebenfalls super Oszibilder)
Wenn das Multimeter am Arduino angeschlossen ist, ist zwar am TX des Arduino alles i.o. aber am RX kommt nix an und vom Multimeter geht auch nix Vernünftiges weg. (man erkenn am Oszi zwar etwas aber zum einen nix was nach Daten aussieht und zum anderen stimmen die Pegel auch nicht, es wird kein HIGH - Pegel erreicht. LOW -> ~ -7.5V das ist ja gut, aber HIGH -> ~ -1V/0V)
Ich weiß, dass das wahrscheinlich hier nicht so ganz das richtige Forum ist aber vllt. hat jemand ne Idee oder schon mal ein ähnliches Problem gehabt und kann mir in irgendeiner Weise weiterhelfen.