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 

Konflikt mit der Initialisierung von 2 Kamera-DLL's



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!

23.01.2012, 10:49
Beitrag #1

labrat Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: Oct 2011

2011 DS2
2008
DE



Konflikt mit der Initialisierung von 2 Kamera-DLL's
Hallo,

ich konnte 2 verschiedene Kameras mit Hilfe der zugehörigen DLL-Datein bereits erfolgreich in LabView einbinden. Jede Kamera für sich betrachtet funktioniert soweit einwandfrei. Nun gibt es jedoch bei der Initialisierung ein Problem, wenn ich beide Kameras gleichzeitig laufen lassen möchte.

Man kann beiden Kameras eine sog. DeviceID zuordnen, dies ist eine Zahl zwischen 0 und 36 (Quelle: API der SMX150). Damit beide gleichzeitig funktionieren muss ich folglich jeder Kamera eine unterschiedliche DeviceID geben. Genau hier liegt das Problem: Jede der beiden Kameras wird nur dann initalisiert wenn die DeviceID der Zahl NULL entspricht.

Trage ich jedoch bei beiden eine NULL als DeviceID ein, bekomme ich nur von einer Kamera ein Bild, von der anderen nicht.
Dabei spielt es im Übrigen keine Rolle, ob die Kameras in verschiedenen oder im selben VI laufen.

Hat jemand einen Rat, was ich tun könnte um beide Kameras zu initalisieren?

Anmerkung zum Scrennshot: Dies ist mein Test-VI. Ich habe alle möglichen Zahlenkombinationen für die DeviceID bereits getestet. Wie gesagt, funktionieren beide jedoch nur mit der NULL. Da es sich um verschiedene Kameras handelt, ist auch die Abfrage des Rückgabewerts (Handle) unterschiedlich (Xenics: ungleich 0 => OK, SMX150: ungleich -1 => OK).

Vielen Dank schonmal.


Kamera 1: Xenics IR camera
Kamera 2: Sumix SMX150


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.01.2012, 07:38 (Dieser Beitrag wurde zuletzt bearbeitet: 24.01.2012 07:39 von Y-P.)
Beitrag #2

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
RE: Konflikt mit der Initialisierung von 2 Kamera-DLL's
Gute Frage. Ich stand zwar noch nie vor dem Problem, aber interessieren würde es mich auch.
Evtl. musst Du an der DLL herumbasteln.

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.01.2012, 14:54
Beitrag #3

labrat Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: Oct 2011

2011 DS2
2008
DE



RE: Konflikt mit der Initialisierung von 2 Kamera-DLL's
Nun vielleicht hilft ja noch der folgende Hinweis: Im Windows Gerätemanager erscheinen die beiden Kameras unter verschiedenen Kategorien.

Die Sumix SMX-150 USB ist untder dem Punkt "Bildbearbeitungsgeräte" aufgelistet, während die Xencis Xeva XS in einem extra Verzeichnis "Xenics devices" vorzufinden ist.

Meine Vermutung ist jetzt, dass dem Rechner nicht wirklich klar ist, dass da zwei Kameras angeschlossen sind. Folglich lässt er die Initialisierung nur für eine Kamera (mit der DeviceID = 0) zu. Würde das Sinn machen oder bin ich da komplett auf dem Holzweg?

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.01.2012, 08:45
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Konflikt mit der Initialisierung von 2 Kamera-DLL's
(25.01.2012 14:54 )labrat schrieb:  Nun vielleicht hilft ja noch der folgende Hinweis: Im Windows Gerätemanager erscheinen die beiden Kameras unter verschiedenen Kategorien.

Die Sumix SMX-150 USB ist untder dem Punkt "Bildbearbeitungsgeräte" aufgelistet, während die Xencis Xeva XS in einem extra Verzeichnis "Xenics devices" vorzufinden ist.

Meine Vermutung ist jetzt, dass dem Rechner nicht wirklich klar ist, dass da zwei Kameras angeschlossen sind. Folglich lässt er die Initialisierung nur für eine Kamera (mit der DeviceID = 0) zu. Würde das Sinn machen oder bin ich da komplett auf dem Holzweg?

Danke

Ich tippe auf den Holzweg Big Grin

Meines Erachtens sind das zwei grundlegend verschiedene Treiber, die beide ihr eigenes Resourcen Management haben. Damit ist es nicht verwunderlich, dass die beide mit der Device Number 0 beginnen zu zählen, und da Du nur je eine Kamera hast, gibts halt bei beiden auch kein Device 1. Die Tatsache dass hier halt beide Treiber Device 0 als erstes Gerät haben ist einfach eine Koinzidenz aber keine wirkliche Fehlerursache.

Interessant wäre es zu wissen, ob man in einer anderen Umgebung (bevorzugt C) beide Kameras problemlos gleichzeitig betreiben kann. Geht das, dann hakelt es wohl mit der Tatsache dass LabVIEW VIs threadingmässig etwas aufwendiger aufgerufen werden dann man das typischerweise in C macht. Threadmanagement ist nämlich eine komplizierte Angelegenheit, weshalb die meisten Programmierer dies in C nur machen wenn es absolut nicht zu vermeiden ist. In LabVIEW ist Defaultmässig alles Multithreading, und muss man einiges an Mühe machen um das anders zu kriegen. Das ist normalerweise kein Problem, ausser Du rufst Dinge auf, die mit Multithreading nicht zurecht kommen (was in der heutigen Zeit eindeutig als Makel (sprich Bug) der aufgerufenen Komponente gesehen werden sollte).

Wen das auch in einem C Programm nicht funktioniert wirds lustig. Dann haben die zwei Treiber irgendwo einen Konflikt weil sie dieselben Windows Resourcen zu verwenden versuchen. Dann kannst Du die Lieferanten anschreiben und Ihnen dies als Bug melden. Grosse Chancen dass die aber nur mit dem Finger auf den anderen weisen und sagen dass sie nichts falsch machen und der Fehler beim anderen Treiber liegt.

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
Antwort schreiben 


Gehe zu: