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!

17.02.2009, 08:42
Beitrag #4

therobbot Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Feb 2009

8.2
2008
de

97082
Deutschland
Designproblem: RS232 Kommunikation
Hi,

erstmal vielen Dank für die Antworten. Ich glaube, ich habe teilweise noch nicht so ganz verständlich machen können, was ich mir vorgestellt hatte.

' schrieb:Zu LVOOP: Das nicht. Geht auch ohne.
Hm, und ohne dass man globale Variablen oder Ähnliches verwendet? Unten redest Du auch immer von "Klassen". Ich dachte, das ist dann automatisch LVOOP?!

' schrieb:Der Klasse über die Steuerqueue den Befehl senden, sich selbst zu beenden.
Ja, das ist natürlich eine Möglichkeit, die auch ein Kollege vorgeschlagen hatte. Vielleicht ist das tatsächlich die beste Möglichkeit.


' schrieb:Das klingt, als wolltest du die Klasse, die die RS232 handlet, als Methode einer übergeordneten, applikationsspezifischen Klasse haben. Da sehe ich aber keine Notwendigkeit für. Für so kompliziert halte ich das mit den Queues nicht.
Den fett markierten Text verstehe ich nicht. Welches VI bekommt die Änderung an der Klasse nicht mit? Warum sollte das übergeordnete VI eine Änderung in der Klasse mitbekommen?


Ich hab mal folgendes überlegt:
Das mit dem Listener-Management könnte man über ein Array of Queue machen. Jeder der Daten haben will, muss der Klasse eine Queue (Referenz auf Queue) übergeben (das geht). Diese Queue wird dann nur von diesem einen Anmelder ausgelesen. Die RS232-Klasse merkt sich die Queues in einer Liste (also in einem Array). Das Management, welche empfangenen Daten über welche Queue weitergesendet werden müssen, liegt innerhalb der RS232-Klasse.
Genau so habe ich es auch implementiert. Und genau da liegt der Punkt, wo ich ein Problem habe. Bei mir sind die Listener als ein Array von Queues innerhalb der Objektdaten implementiert. Am Anfang ist das leer. Jetzt wird das Kommunikations-VI gestartet, das dann durchlaufen soll (dazu, wie und wo das gestartet wird, unten nochmal mehr). Jetzt registriert sich ein anderes VI als Listener (gibt eine Referenz auf eine Queue an eine AddListener Methode der Klasse, die das in das Listener-Array hinzufügt). Allerdings hat das Kommunikations-VI ja jetzt keinen Zugriff auf dieses Array, da es in den privaten Daten der Klasse liegt. Entweder kann ich das als globale Variable machen (unschön wegen Datenkapselung, oder?), oder selber wieder in eine Queue legen (was dann zu einer Queue mit einem Array von Queues führt - nicht grade elegant), oder es geht irgendwie anders und ich sehe das nur nicht.

Warum ich das ganze als Klasse machen wollte, war, dass ich dachte, ich könnte es als Singleton implementieren. D.h., ein VI fordert die Kommunikation an und bekommt eine "Referenz" darauf und kann jetzt Queues als Listener registrieren und andere Kommunikation machen. Jetzt wird ein anderes VI gestartet, dass die Kommunikation auch anfordert. Da sie schon existiert, bekommt es nur eine Referenz auf das schon existierende Objekt zurück und kann damit ganz normal weitermachen (Ich hatte gedacht, das als Mischung zwischen den Beispielen Grundlagen->Objektorientiert->Design Pattern.lvproj und Grundlagen->Objektorientiert->ReferenceObject.lvproj zu implementieren).

' schrieb:Man kann auch zusammen mit den Sendedaten eine Queue an die RS232-Klasse übergeben. Die Antwort auf diese Sendung geht dann an diese Queue.
Die Antwort-Queue ist gar nicht das Problem, sondern die Queues für den kontinuierlichen Datenstrom.

Jetzt noch zum Starten des kontinuierlich laufenden VIs: Da ich es ja in verschiedenen VIs dynamisch verwenden wollte, kann ich es eigentlich nicht in einem VI ablegen, denn dann würde es ja beendet, wenn dieses VI beendet wird, obwohl vielleicht ein anderes VI noch darauf zugreift. Ich hatte deshalb gedacht, die Klasse bekommt eine StartCommunication-Methode, die dann über eine Referenz auf das RS232-VI dieses startet. Aber das ist auch nicht so richtig schön, finde ich.

Wenn ihr wollt, kann ich mal ein Beispiel-Projekt hochladen, wo ich die eigentliche Kommunikation rausnehme, damit ihr mal seht, wie das momentan aussieht.

Gruß,

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


Nachrichten in diesem Thema
Designproblem: RS232 Kommunikation - eg - 16.02.2009, 20:38
Designproblem: RS232 Kommunikation - therobbot - 17.02.2009 08:42
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 17.002 18.12.2006 13:17
Letzter Beitrag: tron
  Voraussetzung zur Kommunikation über RS232 / GPIB / USB-Port jameson 6 6.114 27.09.2006 08:43
Letzter Beitrag: jameson

Gehe zu: