LabVIEWForum.de - RS232 Datenstrom auswerten: Probleme mit 0x00

LabVIEWForum.de

Normale Version: RS232 Datenstrom auswerten: Probleme mit 0x00
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

fange gerade (zwangsweise ;=)) mit LabVIEW 7.1 an zu arbeiten.
Es geht darum, dass Bilder aus einer Kamera (ITM-C-328) seriell ausgelesen werden sollen. Ein zugehöriges Datenblatt der Kamera befindet sich z.B. unter http://www.intertec-components.de/common/d...-328_Manual.pdf . Das einzig wichtige daraus ist: Datenworte sind immer (!) 6 Bytes lang, enthalten aber sehr häufig 0x00 an einer oder mehreren Stellen. Und da liegt das Problem... Mein Testaufbau orientiert sich stark an der Forumsvorlage: http://forum.ib-berger.com/index.php?showtopic=7 (danke dafür).
Mit einem Probeaufbau, der immer wieder (auf Knopfdruck) die Initialisierungszeichenkette 0xAA0D00000000 verschickt (nur als Test), kann ich etwas von der Kamera empfangen. Allerdings werden mir beim Empfang immer die "Nullen" im Datenwort ab-/rausgeschnitten, d.h. ich empfange von der Kamera nur die ersten Bytes eines Datenwortes, z.B. 0xAA0E0D??AA0D (für ACK und SYNC als Antwort von der Kamera auf mein SYNC). Deshalb meine Fragen:
1) Wie kann ich in LabVIEW beim seriellen Empfang immer 6 Bytes empfangen/zusammen interpretieren, wobei das erste Byte immer ein 0xAA ist und dann fünf beliebige Bytes (teilweise mit 0x00) folgen?
2) Wie kann man in LabVIEW am Besten eine Art State-Machine aufbauen (später für die komplette Ansteuerung der Kamera)?

Gruß und Danke,

Robert
Das beim Christian Berger gezeigtes Beispiel ist gut für asynchrones Lesen. Du brauchst aber etwas synchrones, weil du dich auf 0xAA synchronisieren kannst. Probiere mal folgendes:


[attachment=6147]


Und wenn es auch nicht klappt, dann kannst du doch das Beispiel vom Christien nehmen, aber dann einen Parser machen, der nach 0xAA sucht und, wenn gefunden, 5 weitere Bytes abschneidet.


eg
Hallo,

danke für deine Antwort, auch wenn mich das nicht wirklich weiter gebracht hat, bzw. ich mich evtl. unverständlich ausgedrückt habe.
Die 0xAA sind kein "Zeilenumbruch" der am Ende erwartet wird, sondern die Kamera (oder ich) verschickt diese Sequenz immer am Anfang.
Was ich bisher habe, findet sich im Anhang, einmal als JPEG und einmal die VI Datei von LabVIEW (Version 7.1). Funktioniert ja auch fast...

Gruß,

Robert
Das mit dem 0xAA könnte auch funktionieren, wenn es am Anfang steht, nur du wirst die aller erste Sequenz verlieren, danach soll es gehen.

Aber gut, zu deinem VI, du musst die ausgelesenen Daten in einem Schieberegister puffern, im Puffer nach 0xAA suchen und wenn du es gefunden hast, die Bytes abschneiden. Wenn neue Sequenz dazukommt hängst du diese einfach in dein Puffer dazu.

Ok?

eg
Hi,

vom Ablauf her ist mir das jetzt klar, nun muss ich nur noch LabVIEW dazu überreden das auch zu machen...
Wede mich evtl. in den nächsten Tagen wieder melden, bis dahin wurstel ich erst mal weiter rum ;=)

Danke,

Robert
Referenz-URLs