usb_bulk_write problem

Hey Ihr,

ich benutze nun usblib um mit meinem ps-2305 (ieee 1284 Controller) zu kommunizieren. Jedenfalls will ich mal kommunizieren…

Das komische Problem ist nun, dass eigentlich ALLES funktioniert, außer das schreiben und lesen von bulk daten.
Das soll heißen, dass ich das usb Gerät initialisieren, konfigurieren und beanspruchen (claim) kann und auch wieder freigeben kann und keine Probleme treten auf, nur wenn ich den Befehl:

usb_bulk_write aufrufe, dann passiert die ersten 4x nix (auch keine Fehlermeldung) und danach erhalte ich einen Returnwert von -116 (???) was auch immer der heißen mag.

Ich habe ein Oszilloskop an das LPT ende der Adapters angeschlossen um die einzelnen Ausgaben der Pins zu kontrollieren. Das was ich erhalte ist auch komisch. Sobald ich den Adapter an den Laptop anschließe, sind alle Datenbits vom Parallelport des Adapters auf „HIGH“, sobald ich aber das erste Wort sende, so werden alle Datenbits auf „LOW“ geschalten (ausnahmslos).

Ich stehe nun auf dem Schlauch… Vielleicht hat jemand einen Hinweiß? wäre für alles Dankbar.

viele Grüße,
Andy

Hier ist mein Code:

#pragma comment(lib,"libusb.lib")

#include 
#include 
#include 

/\* the device's vendor and product id \*/
#define MY\_VID 0x067b
#define MY\_PID 0x2305

/\* the device's endpoints \*/
#define EP\_IN 0x81
#define EP\_OUT 0x01

#define BUF\_SIZE 2

usb\_dev\_handle \*open\_dev(void);

usb\_dev\_handle \*open\_dev(void)
{
 struct usb\_bus \*bus;
 struct usb\_device \*dev;

 for(bus = usb\_get\_busses(); bus; bus = bus-\>next) 
 {
 for(dev = bus-\>devices; dev; dev = dev-\>next) 
 {
 if(dev-\>descriptor.idVendor == MY\_VID
 && dev-\>descriptor.idProduct == MY\_PID)
 {
 return usb\_open(dev);
 }
 }
 }
 return NULL;
}

int main(void)
{
 usb\_dev\_handle \*dev = NULL; /\* the device handle \*/
 int ret = 255;

 char tmp[BUF\_SIZE];
 memset(tmp, 0, sizeof(tmp));

 for(int i=0; i