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 

Design "Erzeuger/Verbraucher



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!

06.10.2009, 17:28
Beitrag #9

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
Design "Erzeuger/Verbraucher
' schrieb:Oh, da gibt es schon noch Möglichkeiten. Das Auslesen des Elementes, in dessen Folge zuerst mal lediglich der Wert des Elementes zurückgesetzt wird, erzwingt zwar einen Refresh am Bildschirm - der kann aber zeitversetzt (zwischen 1ms und 10 Sekunden sag ich jetzt mal) passieren.

Wenn die gesamte GUI (also dein FP) blockiert ist, kann das auch daran liegen, dass irgendwo eine While-Schleife (z.B. die vom Verbraucher) soviel Prozessor-Leistung für das Blockdiagramm verbraucht, dass keine Zeit mehr für den FP-Refreh bleibt. Manchmal hilf da eine Wartezeit von 1ms in die While-Schleife zu plazieren.

Gut wäre es, wenn du ein MusterVI mit den Auffälligkeiten erstellen kannst.

Hi,
ich antworte so spät, weil ich langsam begreife wo es hängt.
Meine Erzeugerschleife reagiert auf Drücken von Buttons meines Frontpanels, und stellt dann passende Strings in die Queue.
Meine Verbraucherschleife holt sich diese Strings raus, und bearbeitet sie im passenden case.
Auch wenn ich in so einem Case einen LabVIEW-Timer mit einer Wartezeit von 10000ms stelle, funktioniert die GUI korrekt.

Ich habe aber eine DLL in C (VS2005) erstellt, die ich im betreffenden case aufrufe. Diese DLL kommuniziert über TCP/IP mit einem SerialDeviceServer, der im Prinzip eine RS232 Schnittstelle bereitstellt. Daran hängen RS232-Geräte (mehrere). Die Kommunikation funktioniert so, dass so ein Gerät ein Kommando gesendet bekommt (z.B.: "VALVE7 OPEN") und dann antwortet (z.B: "OK"). Diese Antwort erfolgt zeitverzögert, z.B.: nach 10 Sekunden.

Was bei mir vermutlich der Fall ist, ist dass LV in meine DLL springt (CallLibraryFunctionNode) und da halt etwa 10 Sekunden hängt. Im C-Code hänge ich in den 10 Sekunden in einer while-Schleife, wo ich mit sleep(100); halt warte, und dachte so CPU-Zeit abzugeben. Aber offensichtlich blockiere ich so das gesamte LabVIEW, so dass weder meine GUI-Buttons sich bewegen, noch sonst was ausgeführt wird.

Hier ein C-Code-Fragment von mir:

[code]//unterscheiden zwischen UDP und TCP

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Design "Erzeuger/Verbraucher - jg - 06.10.2009, 11:41
Design "Erzeuger/Verbraucher - wernerIBN - 06.10.2009 17:28

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Ansprechendes Design des Frontpanels | Muster in Hintergrund einfügen dulfried 3 3.956 23.08.2017 17:45
Letzter Beitrag: GerdW
  Error Handling in einem Queue Message Design Architektur galilio 2 4.298 09.08.2016 12:20
Letzter Beitrag: galilio
  Protokolieren durch TDMS in einer Erzeuger und Verbraucher Synchronisation Atlaspremier 0 2.509 28.07.2016 13:21
Letzter Beitrag: Atlaspremier
  Queued Message Handler Design galilio 3 5.653 14.07.2016 15:34
Letzter Beitrag: Freddy
  Design Pattern für sequentiellen Verlauf galilio 6 4.537 23.02.2016 08:50
Letzter Beitrag: Freddy
  Erzeuger-Verbraucher Muster Abbruch Verbraucherschleife mit Abarbeitung der Queue lumaxo 5 6.212 12.02.2015 13:55
Letzter Beitrag: Lucki

Gehe zu: