Printable Version of Topic

Click here to view this topic in its original format

IBB Forum _ LabVIEW Beispiele _ Asynchrones Empfangen über RS232

Posted by: CB 24. Oct 2006, 19:30

In diesem Beispiel wird demonstriert, wie man ohne einen vorgegeben Sende-/Empfangstakt Botschaften mit einer vorgegebenen Struktur über RS232 empfangen und parsen kann.



 RS232Demo.LV71.zip ( 34.92K ) : 1892


ein paar Erläuterungen zum Blockdiagramm:



als erstes muss der Treiber für den Com-Port initialisiert werden. Dies geschieht mit dem VISA Configure Serial Port VI. Wenn hierbei kein Fehler aufgetreten ist, dann wird in der While-Schleife zyklisch geprüft, ob Daten im RS232 Eingangspuffer vorhanden sind. Wenn nein, dann wartet das Programm einfach 250 ms, wenn JA, werden die Daten aus dem Puffer gelesen (VISA Read) und in den Zwischenspeicher geschoben.

Bei jedem Schleifendurchlauf wird der Inhalt des Zwischenspeichers dahingehend geprüft, ob der darin enthaltene String dem Prototyp der zu empfangenden Daten-Strings entspricht (Länge, Format, etc ...) Wenn dies zutrifft, wird der String mit dem VI "Scan from String geparst.

Bei Parsing werden 2 Schritte angewandt: zunächst wird mit "Match Pattern" geprüft ob das Format stimmt. Wenn das zutrifft gibt "Match Pattern" den "machting substring" aus, der an die Funktion "Scan from String" weitergereicht wird. "Scan from String" macht aus dem String in dem Beispiel dann eine Zahl (Format: Double)

Das "wait for next ms multiple"-VI ist im Case "0" versteckt:



gewartet wird also nur, wenn keine Daten zur Verarbeitung anliegen, ansonsten werden die neuen Daten schnellstmöglich abgeholt und verarbeitet ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)