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 

Daten vom com-port lesen und array in floats umwandeln



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!

30.04.2010, 14:57
Beitrag #1

estiro Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Apr 2010

8.2
-
en

8006
Schweiz
Daten vom com-port lesen und array in floats umwandeln
Hallo zusammen,
mal zum anfangen: ich bin blutiger Anfänger in LabVIEW und hab mir den Auftrag geangelt, eine IMU auszulesen und darzustellen. Die IMU sendet permanent Daten (Orientierung, GPS, Beschleunigung, Barometer, usw.) folgendermassen: 4 byte präambel (immer gleich), 4 byte roll-winkel, 4 byte pitch-winkel...und zum Schluss eine Checksum. Daten auslesen hat einigermassen geklappt (obwohl er alle paar Sekunden eine Fehlermeldung ausspuckt), aber nun stellen sich mir einige Fragen:

1. Im Datenstring möchte ich die Präambel finden und dann die folgeneden 40 byte bearbeiten. Wie mache ich das? Danach muss ich wieder die Präambel finden usw...
2. Wie wandle ich ein 4byte Datenarray in einen Float um? In C++ habe ich das mit einer Union lösen können.

Wäre um jeden Tipp sehr froh!

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.04.2010, 16:00
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Daten vom com-port lesen und array in floats umwandeln
Hallo estiro,

zu 2)
   
Dafür gibt es eine TypeCast-Funktion. Dazu findest du auch jede Menge weitere Threads hier im Forum.

zu 1)
Empfangene Bytes im String sammeln. Mit der String-Suche nach deiner Präambel suchen. Die nächsten 40 Zeichen per StringSubset "ausschneiden" und weiterverarbeiten...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2010, 16:28 (Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2010 16:29 von eg.)
Beitrag #3

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Daten vom com-port lesen und array in floats umwandeln
Oh ja, ich habe tag täglich mit IMUs zu tun. Meine Hauptbeschäftigung ist User Interfaces für IMUs zu programmierenBig Grin

Also geht folgendermaßen:
1 Byte lesen mit dem ersten Syncbyte vergleichen
wenn gleich dann weiter im Switch Case
1 Byte lesen und mit dem 2. Syncbyte vergleichen
wenn gleich dann weiter im Switch Case
u.s.w. bis alle 4 Bytes zutreffen
Das war die Synchronisierung.
Weiter geht es mit dem Auslesen des Restes bis zur Checksum (also Read soviel Bytes), Daten noch nicht umwandeln, sondern erst Checksumme auslesen, berechnen, vergleichen und falls gleich, erst dann die Daten umwandeln.

Die Umwandlung kann mit TypeCast funktionieren, tut es aber normalerweise nicht, da TypeCast von Big Endian Byte Order ausgeht, was nicht üblich ist.
Beim Unflatten from String kannst du aber Byte Order angeben.

Bei Fragen fragen...

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2010, 16:40 (Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2010 16:44 von estiro.)
Beitrag #4

estiro Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Apr 2010

8.2
-
en

8006
Schweiz
Daten vom com-port lesen und array in floats umwandeln
Ok, vielen dank euch beiden. Ich werde das mal ausprobieren und dann meine nächsten Probleme posten (weil die kommen ganz bestimmt...Big Grin). Aber zuerst mal wochenende...

@eg: Ich arbeite mit einer Xsens MTi-g IMU. Vielleicht hast du ja schonmal dafür ein User-Interface gemacht!??
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2010, 09:06
Beitrag #5

estiro Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Apr 2010

8.2
-
en

8006
Schweiz
Daten vom com-port lesen und array in floats umwandeln
nächste frage... ich hab jetzt mal die Präambel gefunden und möchte jetzt die Checksum überprüfen. Dafür muss ich meinen String aufsummieren und dann das letzte byte mit null vergleichen. Wie mach ich das? Damit ihr mal was zum lachen habt, hänge ich mein bisheriges VI an.
P.s. der Sensor gibt uns Daten in BigEndian, also sollte die Typecast funktion zum parsen funktionieren, oder?


Angehängte Datei(en)
Sonstige .vi  Lesen.vi (Größe: 15,13 KB / Downloads: 298)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Daten von Seriellen Port in While-Schleife auswerten Bensch 4 6.263 26.10.2015 11:28
Letzter Beitrag: Bensch
  Daten werden nicht eingelesen | Assistent zu Instrumenten I/O - lesen und analyiseren Troet 3 5.389 12.12.2014 15:58
Letzter Beitrag: jg
  Dauerhaft Daten aus Agilent 34970A lesen Pero 6 7.826 19.02.2014 06:21
Letzter Beitrag: sthamann
  Mit RS232 Daten lesen und schreiben Moxel 22 28.145 15.01.2014 12:38
Letzter Beitrag: jokersad
  Daten lesen über USB dbuckl 8 10.916 23.09.2013 11:56
Letzter Beitrag: GerdW
  Probleme beim Lesen von GPIB-Port MWStui 11 12.133 18.09.2013 11:18
Letzter Beitrag: MWStui

Gehe zu: