Hallo!
Ich bin absoluter C#-Anfänger und bin mir dementsprechend nicht sicher, in wie weit man hier bereit ist, mir bei meinen Problemen zu helfen - versuchen möchte ich's trotzdem mal. Sollte es hier nicht herpassen, wäre ein kurzer expliziter Hinweis darauf nett...
Zum eigentlichen Problem: Ich habe eine kleine Microcontroller-Schaltung, die mir per serieller Schnittstelle 8 Datenbytes sendet, die abschließend mit CR und LF terminiert werden (es werden also ings. 10 bytes gesendet). Dieses lese ich in C# mit ReadLine() ein in einem DataReceived Event-Handler ein. An dieser Stelle habe ich die ersten Fragen:
Welches sind die default NewLine Zeichen? Also welche Zeichen in meinem gesendeten String führen dazu, dass ReadLine() eine Zeile für beendet hält?
Wie kann ich diese Verändern, im meinem Falle praktischweise auf CR/LF (falls das nicht default ist)?
Das übergrordnete Problem ist, dass ich aus den acht empfangenen Bytes vier Integers machen möchte. Die ersten zwei Bytes entsprechen also High- und Lowbyte des ersten Integers, das dritte und vierte Byte High- und Lowbyte des zweiten Integers, usw. Auch da habe ich noch keinen Ansatz gefunden...
Ich bin sehr dankbar für alles Tipps und Hinweise!
Gruß
Mono
wäre ein kurzer expliziter Hinweis darauf nett...
Bitte sehr: [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.
Hi mono,
ich könnte dir zur Umwandlung zwei Möglichkeiten vorschlagen:
BitConverter.ToInt16(...);
short myValues = byte1 * 256 + byte2;
In beiden Fällen gilt: Endianness beachten! Siehe Wikipedia (Bei erster Variante gilt auf X86-Prozessoren LittleEndian).
Die Zeichen, die von ReadLine verwendet werden, kannst du mit dieser Eigenschaft abfragen:
Environment.NewLine
Müsste CR und LF entsprechen, sicherheitshalber würde ich da aber nochmal nachschauen. Empfehlen würde ich dir bei solchen Geschichten aber nicht ReadLine zu verwenden, sondern die Bytes einzeln zu lesen und selber auf das Ende abprüfen.
Gruß
Roland
Hallo mono,
bitte immer in die Doku schauen!
Die Zeichen, die von ReadLine verwendet werden, kannst du mit dieser Eigenschaft abfragen:
eigentlich ist's SerialPort.NewLine und der Standard ist Line-Feed. Damit lässt sich der Wert auch ändern.