2 Stimmen

SerialPort.ReadLine() gibt Müll zurück

Ich lese Daten von einer Waage über eine serielle Schnittstelle. Die Kommunikation funktioniert gut, aber ich erhalte Müll von der seriellen Schnittstelle.

Ein Beispiel:

???s.R?????0?   ??o???????0?    ??o???????0?

Mein Problem ist, ich kenne das Verhalten der Waage nicht. Ich weiß nicht, ob sie mir Hexadezimal-, Binär- oder was für Daten schickt. Und ich weiß nicht, welchen Wert sie tatsächlich sendet. Ich habe keine Dokumentation über die Waage, um dies zu recherchieren.

Also vermute ich, standardmäßig, was normalerweise über die serielle Schnittstelle zurückgesendet wird und wie ich es in einen lesbaren Wert umwandeln kann?

4voto

Hans Passant Punkte 894572

So viele Fragezeichen sind ein Zeichen dafür, dass die SerialPort-Einstellungen falsch sind. Beginnend mit der Baudrate folgt die Parität.

Wenn die Waage binäre Daten sendet, ist die Codierungseigenschaft wichtig. Der Standardwert ist ASCII, daher werden viele Fragezeichen erzeugt, wenn die Bytes in den binären Daten >= 128 sind. In diesem Fall sollten Sie Read() anstelle von ReadLine() verwenden. Das ist das, was Sie verwenden möchten, um mit der Fehlerbehebung dieses Problems zu beginnen. Sie möchten sich die Rohbyte-Werte ansehen, Sie können nicht viel von Fragezeichen erkennen. Achten Sie besonders auf die letzten ein oder zwei Bytes, die Sie beim Lesen erhalten, sie sollten sich gut wiederholen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X