' schrieb:Hi,
auf Basis des lcd2usb-Projekts nutze ich 'nen Atmel MC um irgendwelche Hardware zu steuern. Die Ansteuerung über die libusb läuft, ich würde das ganze gerne von LV8.5 (auf WinXP) aus steuern. Ich hab entsprechend dem "USB Instrument Control Tutorial" den Treiber erstellt und versucht einzubinden. Das funktioniert bei mir aber nur wenn ich eine der libusb noch nicht bekannte VID oder PID verwende, sonst nimmt Windows trotz der Visa-inf. immer den libusb-Treiber.
Fragen:
1. Ist es grundsätzlich nicht möglich Visa-USB und libusb-win32 parallel zu nutzen? (Also z.B. mal ein C-Programm und mal ein LV-Programm zu nutzen?)
2. Wenn nicht scheint ja der einzige Weg in der Verwendung der dll-Einbindung zu liegen. Lt. google hat das wohl immer mal jemanden beschäftigt, aber 'ne richtige Lösung hab ich noch nicht gefunden. Hat jemand 'nen fertiges LV-Programmgerüst der dieses "for(bus = usb_get_busses(); ....... usw.)" umsetzt und es mir / uns zur Verfügung stellt? Meine C- und LV-Kenntnisse sind nicht soo überragend, würde mir die Mühe gerne sparen, anderseits finde ich die Schiene "(z.B.) ATmega8 - libusb - LabVIEW " schön um mit wenig Aufwand praktische Geräte zu bauen, z.B. 'nen PID-Temperaturcontroller.
'ne nette Woche wünschend
Also ich kenne libusb selber nicht aber es ist gut möglich dass sich diese Library bei Windows auf Basis ihrer Implementation beim Booten für alle ihm bekannten USB Devices einlinkt und dass dies mit der USB Registrierung mittels INF File beim späteren aufstarten von VISA so wie das eben VISA tut, einen Konflikt gibt. Da libusb eher war hat VISA das Nachsehen und Windows teilt ihm ganz einfach mit, sorry das Device ist schon durch einen Treiber geclaimt. Das Injecten von einem Treiber in den USB Stack ist etwas das man nur in ganz speziellen Fällen tun will und VISA ist dafür aus gutem Grund nicht vorgesehen.
Wenn Du also libusb unbedingt verwenden willst bleiben Dir nur drei Dinge.
1) Die VID und PID Deines Devices aus der libusb Registrierung nehmen.
2) Oder Du sprichst halt libusb so wie von Dir schon vorgeschlagen als DLL an um mit Deinem Gerät zu kommunizieren. Wie gesagt ich kenne libusb nicht und kann nicht beurteilen wie kompliziert die Parameter sind. Das Problem ist aber ganz sicher im
usw. in Deinem Satz "dieses "for(bus = usb_get_busses(); ....... usw.)" umsetzt". Da ist nämlich garantiert einiges an Arbeit zu tun, da Du viele verschiedene Funktionen benötigst bevor Du mit Deinem Gerät kommunizieren kannst.
3) Mit den Autoren oder der Community von libusb überlegen wie die von Dir beschriebene Wirkingsweise angepasst werden kann. Vielleicht gibts da eine Änderung die in libusb gemacht werden könnte. Erwarte aber nicht zuviel, das was Du willst ist eine USB Benützungsweise die von Windows nicht vorgesehen ist und daher nur mit viel Aufwand gemacht werden kann und zudem die Chance auf ganz komische Effekte hat.
Im Moment habe ich leider keine Zeit um mich da einzulesen um Dir bei der DLL Einbindung zu helfen. Wenn Du LabVIEW 8.5 hast kannst Du ja mal den Bibliotheksimport-Wizard (ääh sorry: Zauberer :-) ) probieren.
Rolf Kalbermatter