INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

2Byte Wert "aufteilen" und auslesen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.11.2013, 12:33 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2013 12:34 von redhand.)
Beitrag #11

redhand Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 112
Registriert seit: Sep 2013

2013
2013
DE


Deutschland
RE: 2Byte Wert "aufteilen" und auslesen
(19.11.2013 17:26 )jg schrieb:  Deshalb die folgende plausible Vermutung:
Deine Gegenstelle sendet unaufgefordert ihre Messwerte. Mglw. werden immer alle Messkanäle als 1 langer Block gesendet, wobei die Blöcke durch die erwähnten 3 0x0 Bytes getrennt werden.
Genau so ist es.

(19.11.2013 17:26 )jg schrieb:  Das ist aber noch nicht alles. Wenn man mitten in einen laufenden Datenstrom hineinhört, dann beginnt das Lesen nicht nur mit dem womöglich falschem Byte. Das Lesen kann sogar mitten ein einem der seriell übertragenen Bytes beginnen. Man muß also zu allererst so lange 1-Byte-weise Lesen, bis kein "Rahmenfehler" mehr auftritt.
Man sollte auch mal darauf hinweisen, dass Daten über die seriellen Schnitstelle normalerweise im ASCII-Format übertragen werden. Man braucht dann allerdings für jedes Datenbyte einen String von 2 Byte Länge, also z.B. für den Wert "255" den zweistelligen Srring "FF". Dafür fällt aber der ganze Shit mit Synchronisation-Bytes und Parsen weg. Ein Datensatz wird dann einfach mit dem Zeilenendezeichen abgeschlossen, das genügt zur Synchronisation.
In hier in diesem Fall bringt die direkte Übertragung von Datenbytes sogar überhaupt nichts: Es werden jetzt pro Datensatz 5 Bytes übertragen (3 Synchronisationsbytes und 2 Datenbytes). Eine ASCII-Übertragung würde auch nur 5 Bytes brauchen (1 Byte Kanal-Nr, 3 Bytes Daten, 1 Bytes Zeilenende)
Bei der Direkt-Byte-Übertragung gibt es immer das Problem, dass das Synchronisationsmuster nicht in den Daten vorkommen darf. Das könnte man hier dadurch erreichen, dass man die KanalNr. "0" nicht verwendet. Ansonsten könnte es passieren, dass bei gleichzeitigem Dateninhalt = 0 mehr als 3 Byte den Wert 0 haben und die Start-Markierung nicht eindeutig ist.
Das "Experimental-Board" hast Du doch selbst programmiert, nehme ich an. Was hindert Dich daran, auf ASCII-Format umzusteigen?

puh okay, da merke ich wieder, dass ich nicht so sehr mit der Materie vertraut bin wie ich es vlt. schon gerne wäre.
ich hatte das so verstanden, dass auch im Moment eine ASCII-Übertragung vorliegt und ich aber den ASCII-String mit "String to Byte-Array" konvertiere. Das Board wurde mir so gestellt.
Innerhalb einer Schleife müsste ich ja dann eine Bedingung erzeugen welche prüft, ob 3x 0x00 hintereinander kommt, und wenn nicht, das nächste Byte abgewartet wird um den gesamten String dann wieder daurauf zu untersuchen, stimmt das? Wie das funktioniert ist dann wieder eine andere BaustelleConstructionBahn
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
RE: 2Byte Wert "aufteilen" und auslesen - redhand - 20.11.2013 12:33

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Aufteilen von String der ser. Schnittstelle Andree123 4 3.978 28.10.2008 17:31
Letzter Beitrag: Andree123

Gehe zu: