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 

Designproblem: RS232 Kommunikation



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!

16.02.2009, 17:58
Beitrag #1

therobbot Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Feb 2009

8.2
2008
de

97082
Deutschland
Designproblem: RS232 Kommunikation
Hallo,

ich habe ein Design-Problem für eine Kommunikation via RS232. Ich komme eigentlich aus der C++ - Ecke und hatte mit LabVIEW bisher nur am Rande zu tun. Jetzt will ich ein LabVIEW-Projekt, das bisher sehr mangelhaft umgesetzt war umschreiben und stoße dabei auf einige Probleme. Ich könnte mir aber vorstellen, dass das daran liegt, dass ich die Dinge aus dem falschen Blickwinkel betrachte, weshalb ich mir hier Hilfe erhoffe.

Das Szenario (vereinfacht):

Ein Gerät soll mit dem PC via RS232 kommunizieren. Das Gerät sendet nach einer Initialisierung permanent Datenpakete raus. Gleichzeitig kann man dem Gerät Befehle senden und bekommt Antwort-Pakete zurück. Wenn man einen Befehl gesendet hat, ist nicht bekannt, ob erst die Antwort zurückkommt, oder zunächst noch einige Daten-Pakete. Allerdings können die Pakete unterschieden werden.

Mindestens ein, idealerweise aber mehrere VIs sollen mit dem Gerät kommunizieren können. Über Buttons sollen Befehle gesendet werden können und die empfangenen Daten auf verschiedene Weise verarbeitet werden (Graph, abspeichern, etc.).

Lösungsansatz:

Mein erster Gedanke war, eine Klasse zu erstellen, die die Kommunikation handlet, d.h. den einkommenden Datenstrom permanent ausliest und nach Antwort- und Datenpaketen aufsplittet. Diese sollte den Datenstrom dann gleich noch parsen und die Daten daraus extrahieren (enthält verschiedene Messdaten). Diese Klasse hätte dann eine Funktion, um einen Befehl zu senden, die entweder einen Timeout oder die Antwort zurückliefern würde. Weiterhin hätte sie die Möglichkeit für jeden einkommenden Messwert-Datenstrom Listeners zu registrieren. Dafür hatte ich Queues angedacht, die man bei der Klasse registrieren und wieder abmelden kann. Das ganze habe ich versucht mit LVOOP umzusetzen.

Das Problem:

Das VI, das permanent samplet, muss auch permanent laufen. Das erste Problem ist also, wie ich das von außen wieder anhalten kann. Das habe ich mit Referenzen auf das VI gelöst, was ich irgendwie unschön finde. Das größere Problem ist, dass ich diesem Permanent laufenden VI ja nicht die Klasseninstanz übergeben kann, da ich sie ja dann nicht mehr zurückbekommen würde. Damit kann dieses VI keine wirkliche Objektmethode sein. Dadurch habe ich aber das Problem, dass ich Änderungen an der Klasse (Listener hinzugefügt, entfernt, etc.) in dem VI nicht mitbekomme. Natürlich könnte ich mir da jetzt irgendwie mit Queues behelfen, aber das wird dann gleich alles sehr komplex. Gibt es für so ein Szenario vielleicht irgendeine einfache und elegante Methode?

Vielen Dank,

Tobias
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Nachrichten in diesem Thema
Designproblem: RS232 Kommunikation - therobbot - 16.02.2009 17:58
Designproblem: RS232 Kommunikation - eg - 16.02.2009, 20:38
Designproblem: RS232 Kommunikation - eg - 18.02.2009, 10:48
Designproblem: RS232 Kommunikation - eg - 18.02.2009, 13:07

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  RS232 / VISA - Alternativer Ansatz für Kommunikation ? fidel 21 15.969 18.12.2006 13:17
Letzter Beitrag: tron
  Voraussetzung zur Kommunikation über RS232 / GPIB / USB-Port jameson 6 5.847 27.09.2006 08:43
Letzter Beitrag: jameson

Gehe zu: