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 

GetSnapshot-Funktion funktioniert in While-Schleife nicht richtig



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!

09.02.2012, 06:18 (Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2012 06:21 von rolfk.)
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: GetSnapshot-Funktion funktioniert in While-Schleife nicht richtig
(07.02.2012 22:30 )labrat schrieb:  Im Prinzip hast du recht, so würde es gehen. Aber an müsste man anstelle der Snapshot-Funktion natürlich ständig den Trigger abfragen. Das hieße dann aber, dass eine DAQ-Karte benötigt wird um das Triggersignal einzulesen.

Das Seltsame ist ja, dass die Funktion nach aufruf auch tatsächlich auf eine Triggerflanke wartet. Kaum packt man sie in eine Schleife scheint das Warte-Feature jedoch nicht mehr zu funktionieren. Das dürfte doch eigentlich nicht so sein, oder?

Dürfte? Es wäre natürlich sinnvoll wenn das nicht so wäre, aber da Du nicht weisst was der Programmierer getan hat, ist es schwierig zu beurteilen ob das jetzt ein Bug ist oder einfach ein unwillkommenes Feature. Wahrscheinlich verhedert sich die DLL an den inherenten Multithreadingmöglichkeiten von LabVIEW, indem sie beispielsweise per aufrufendem Thread beihält ob der Trigger schon abgefragt wurde. Funktioniert perfekt wenn man das aus einer C Routine in einer Schleife aufruft, aber in LabVIEW ist die Chance recht gross, dass bei einem folgenden Aufruf ein anderer Thread aus dem vorhandenen Pool verwendet wird, dann zuvor.

Abhilfen wären:

- Sicherstellen dass Du die Parallelisierung der Loop nicht eingeschaltet hast.
- Dem VI explizit ein bestimmtes Execution System zuweisen und mit dem vi.lib\utility\sysinfo.llb\threadconfig.vi diesem Execution System nur einen einzigen Thread zuweisen. LabVIEW muss neu gestartet werden, da die Threadkonfiguration nur beim Starten gemacht wird.
- Die DLL Funktion im UI Thread laufen lassen (nicht empfehlenswert da Dein Image Capture dann mit dem LabVIEW UI konkuriert und das kann unschöne Ergebnisse haben (schlechte Performance) bis hin zu totalen Lockouts der LabVIEW Applikation, wenn die DLL sich selber auch noch irgendwie in die Windows Message Queue einhängt).

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
RE: GetSnapshot-Funktion funktioniert in While-Schleife nicht richtig - rolfk - 09.02.2012 06:18

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Einbindung DLL funktioniert nicht Schrankwand 1 4.106 10.03.2023 18:50
Letzter Beitrag: GerdW
  HWND auslesen, funktioniert nicht mit jedem PC Mischa E 10 12.907 23.04.2012 13:31
Letzter Beitrag: rolfk
  VI mit .net dll's funktioniert nur als exe, nicht im Entwicklungsmodus markus321 7 7.974 31.01.2012 15:31
Letzter Beitrag: markus321
Sad dll-funktion open öffnet nicht und bei get_info bleibt Labview hängen Erik_M 6 8.298 02.01.2012 23:44
Letzter Beitrag: rolfk
  WinAPI Aufruf funktioniert nicht unter Win7 Lessy2205 5 8.160 15.11.2011 13:03
Letzter Beitrag: Lessy2205
  dll einbinden Fehler: Funktion in Bibliothek nicht gefunden mrstrom 1 7.569 06.12.2010 13:40
Letzter Beitrag: oenk

Gehe zu: