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!

19.11.2013, 17:26
Beitrag #9

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: 2Byte Wert "aufteilen" und auslesen
(19.11.2013 15:35 )redhand schrieb:  Danke, der erste Teil der Antwort hätte mir genügt, denn wenn ich das nicht weiß bringt mir auch die Mathematik nichts.2hands

Also ist das folgendermaßen zu verstehen??
Wenn das erste Byte bsp so ankommt: 0001 0000 entspricht es dezimal 16(dem ersten Element), deshalb wird durch 16 geteilt, so weiß man welcher Kanal gerade gelesen wird.
Nicht ganz. Das erste "Datenbyte" wird nur selten 0001 0000 entsprechen, denn die letzten vier Bits bilden zusammen mit dem zweiten Datenbyte den "Kanalwert". Ganzzahlige Division durch 16 "entfernt" diese 4 "low bits.

(19.11.2013 16:10 )redhand schrieb:  Da liegt bei mir auch noch ein Verständnisproblem.
Zunächst: Bis eine Information (Kanal und Weg) aufgenommen wurde, werden 5 Bytes abgearbeitet (3mal 0x00). Muss ich dann bei VISA-Lesen bei Byte-Anzahl auch 5 wählen oder wie ist hier der Zusammenhang?

Wenn dann beispielsweise 3x 0x00 kommt, klar dann sieht man, wenn man den kontinuierlichen Datenfluss anschaut, welches das Byte mit der Kanalinformation ist bzw wann es kommt.
Wie kann man dann das Auslesen des Strings so steuern, dass die 3x 0x00 immer abgewartet werden und die zwei darauf folgenden Bytes entsprechend ausgelesen werden?
Da kann ich auch nur spekulieren, du lieferst zu wenige Infos.
Punkt 1) Dein VI liest "nur" Daten von der Schnittstelle, ohne ein Write-Kommando.
Punkt 2) Dann hast du noch die Info mit den 3 0x0 Bytes nachgeliefert.

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. Mglw. wird aber auch nach jedem Kanal der 0x0-Block eingefügt.

Prinzipiell musst du die Schnittstelle öffen, in einer Schleife andauernd die anliegenden Bytes auslesen und solange zu einem String zusammensetzen und analysieren (Stichwort Schieberegister), bis du auf das Synchronisationsmuster "3x 0x0" triffst. Jetzt muss das nächste Byte im Stream untersucht werden. Ist es ungleich 0x0, dann ist es das erste Byte einer Kanal-Info, falls es dagegen 0x0 lautet, dann war es das letzte Byte eines Trennblocks und das darauffolgende Byte muss das erste Byte einer Kanal-Info sein.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RE: 2Byte Wert "aufteilen" und auslesen - jg - 19.11.2013 17:26

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

Gehe zu: