|
From: Stephan M. <ste...@we...> - 2006-07-24 20:05:04
|
bulk_read() worked correctly. It just timed out because
your printer didn't send any data.
Are you certain that your device actually has data to send
when you issue the read request?
Stephan
> Hello everybody,
>
> after two days I'm quite happy with the integration of a usb printer into my
> application. I can write to the printer but not read from. I'v to say that I'm
> new to USB. The error happens when i call usb_bulk_read(...)
>
> Version:
> DLL version: 0.1.10.1
> Driver version: 0.1.10.1
>
> Following informations ...
> 1) Application code
> 2) Stdout of application
> 3) Output of TestLibUsb-win.exe
> 4) Output of Dbgview
>
> I hope anybody can give me a hint
>
> 1) -- code of my application
> struct usb_bus *bus;
> int c, i, a;
>
> /* ... */
>
> for (bus = busses; bus; bus = bus->next) {
> struct usb_device *dev;
>
> for (dev = bus->devices; dev; dev = dev->next) {
> /* Check if this device is a printer */
> if (dev->descriptor.bDeviceClass == 7)
> {
> /* Open the device, claim the interface and do your processing */
> cout << "+++++" << endl;
> }
>
> /* Loop through all of the configurations */
> for (c = 0; c < dev->descriptor.bNumConfigurations; c++)
> {
> /* Loop through all of the interfaces */
> for (i = 0; i < dev->config[c].bNumInterfaces; i++)
> {
> /* Loop through all of the alternate settings */
> for (a = 0; a < dev->config[c].interface[i].num_altsetting; a++)
> {
> /* Check if this interface is a printer */
> if (dev->config[c].interface[i].altsetting[a].bInterfaceClass == 7)
> {
> /* Open the device, set the alternate setting, claim the interface
> and do your processing */
> usb_set_debug(255);
> usb_dev_handle* aH;
> void *context0 = NULL;
> int aRc = 0;
>
> aH = usb_open(dev);
> aRc = usb_set_configuration(aH, 1);
> if (usb_claim_interface(aH, 0))
> {
> cout << "Error usb_claim_interface" << endl;
> return;
> }
>
> int aNumBytes = 0;
> char aBuf[64*20+11];
> int aSz = sizeof(aBuf);
> memset(aBuf, 0, aSz );
> SetLastError(0);
>
> // ---- Write ----
> aNumBytes = usb_bulk_write(aH, 0x06, "MI\r", 3, 1000);
> if (aNumBytes < 0) {
>
> } else {
> cout << aNumBytes << " Bytes written" << endl;
> }
>
> // --- Read ---
> SetLastError(0);
> aNumBytes = usb_bulk_read(aH, 0x85, aBuf, aSz, 1000);
> if (aNumBytes < 0) {
> cout << "Error usb_bulk_read: " << aNumBytes << endl;
> DWORD aErr = GetLastError();
> printf("%s (%d)\n", usb_strerror(), aErr);
> }
>
> aRc = usb_release_interface(aH, 0);
> aRc = usb_reset(aH);
> aRc = usb_close(aH);
> cout << "----- Sucess -----" << endl
> }
> }
> }
> }
> }
> }
>
> 2) --- stdout
> found 1 busses
> usb_set_debug: Setting debugging level to 255 (on)
> 3 Bytes written
> LIBUSB_DLL error: usb_reap_async: timeout error
> Error usb_bulk_read: -116
> usb_reap_async: timeout error (2)
> ----- Sucess -----
>
> 3) --- what TestLibUsb-win.exe reports
> bus-0/\\.\libusb0-0001--0x0a5f-0x4e00 0A5F/4E00
> - Manufacturer : Eltron
> - Product : P330i
> - Serial Number: P330009314
> wTotalLength: 32
> bNumInterfaces: 1
> bConfigurationValue: 1
> iConfiguration: 86
> bmAttributes: c0h
> MaxPower: 0
> bInterfaceNumber: 0
> bAlternateSetting: 0
> bNumEndpoints: 2
> bInterfaceClass: 7
> bInterfaceSubClass: 1
> bInterfaceProtocol: 2
> iInterface: 132
> bEndpointAddress: 85h
> bmAttributes: 02h
> wMaxPacketSize: 64
> bInterval: 0
> bRefresh: 0
> bSynchAddress: 0
> bEndpointAddress: 06h
> bmAttributes: 02h
> wMaxPacketSize: 64
> bInterval: 0
> bRefresh: 0
> bSynchAddress: 0
>
> 4) ---- And finally output of Dbgview
> LIBUSB-DRIVER - release_interface(): releasing all interfaces
> LIBUSB-DRIVER - set_configuration(): configuration 1
> LIBUSB-DRIVER - set_configuration(): timeout 5000
> LIBUSB-DRIVER - get_descriptor(): buffer size 18
> LIBUSB-DRIVER - get_descriptor(): type 0001
> LIBUSB-DRIVER - get_descriptor(): index 0000
> LIBUSB-DRIVER - get_descriptor(): language id 0000
> LIBUSB-DRIVER - get_descriptor(): timeout 5000
> LIBUSB-DRIVER - get_descriptor(): buffer size 9
> LIBUSB-DRIVER - get_descriptor(): type 0002
> LIBUSB-DRIVER - get_descriptor(): index 0000
> LIBUSB-DRIVER - get_descriptor(): language id 0000
> LIBUSB-DRIVER - get_descriptor(): timeout 5000
> LIBUSB-DRIVER - get_descriptor(): buffer size 32
> LIBUSB-DRIVER - get_descriptor(): type 0002
> LIBUSB-DRIVER - get_descriptor(): index 0000
> LIBUSB-DRIVER - get_descriptor(): language id 0000
> LIBUSB-DRIVER - get_descriptor(): timeout 5000
> LIBUSB-DRIVER - set_configuration(): interface 0 found
> LIBUSB-DRIVER - update_pipe_info(): interface 0
> LIBUSB-DRIVER - update_pipe_info(): endpoint address 0x85
> LIBUSB-DRIVER - update_pipe_info(): endpoint address 0x06
> LIBUSB-DRIVER - claim_interface(): interface 0
> LIBUSB-DRIVER - transfer(): bulk or interrupt transfer
> LIBUSB-DRIVER - transfer(): direction out
> LIBUSB-DRIVER - transfer(): endpoint 0x06
> LIBUSB-DRIVER - transfer(): size 3
> LIBUSB-DRIVER - transfer_complete(): 3 bytes transmitted
> LIBUSB-DRIVER - transfer(): bulk or interrupt transfer
> LIBUSB-DRIVER - transfer(): direction in
> LIBUSB-DRIVER - transfer(): endpoint 0x85
> LIBUSB-DRIVER - transfer(): size 1291
> LIBUSB-DRIVER - transfer_cancel(): timeout error
> [2772] LIBUSB_DLL error: usb_reap_async: timeout error
> LIBUSB-DRIVER - release_interface(): interface 0
> LIBUSB-DRIVER - reset_device()
>
> Regards
> Alexander
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys -- and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Libusb-win32-devel mailing list
> Lib...@li...
> https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
______________________________________________________________
Verschicken Sie romantische, coole und witzige Bilder per SMS!
Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193
|
|
From: Alexander E. <st...@st...> - 2006-07-25 06:40:45
|
Yes I' sure that the printer send data, because I can send the printer request
with the help of a terminal supplied by the manufacturer and see 1 char 0x06
(ACK) returned. Might 1 byte be a problem?
Ok, now it is possible that there are further printer or usb command send to the
firmware of the printer that force the printer to answer (anyhow a behavior that
sounds quite exceptional to me)
Isn't it possible that the printers answer is grabbed by the windows printing
system?
Can I use a usb-sniffer together with libusb. I read about snoopy, but didn't
manage to install it together with usblib. Either the printer disappears at
snoopy or in the output of TestLibUsb-win.exe.
Alexander
Stephan Meyer schrieb:
> bulk_read() worked correctly. It just timed out because
> your printer didn't send any data.
>
> Are you certain that your device actually has data to send
> when you issue the read request?
>
> Stephan
>
>
>> Hello everybody,
>>
>> after two days I'm quite happy with the integration of a usb printer into my
>> application. I can write to the printer but not read from. I'v to say that I'm
>> new to USB. The error happens when i call usb_bulk_read(...)
>>
>> Version:
>> DLL version: 0.1.10.1
>> Driver version: 0.1.10.1
>>
>> Following informations ...
>> 1) Application code
>> 2) Stdout of application
>> 3) Output of TestLibUsb-win.exe
>> 4) Output of Dbgview
>>
>> I hope anybody can give me a hint
>>
>> 1) -- code of my application
>> struct usb_bus *bus;
>> int c, i, a;
>>
>> /* ... */
>>
>> for (bus = busses; bus; bus = bus->next) {
>> struct usb_device *dev;
>>
>> for (dev = bus->devices; dev; dev = dev->next) {
>> /* Check if this device is a printer */
>> if (dev->descriptor.bDeviceClass == 7)
>> {
>> /* Open the device, claim the interface and do your processing */
>> cout << "+++++" << endl;
>> }
>>
>> /* Loop through all of the configurations */
>> for (c = 0; c < dev->descriptor.bNumConfigurations; c++)
>> {
>> /* Loop through all of the interfaces */
>> for (i = 0; i < dev->config[c].bNumInterfaces; i++)
>> {
>> /* Loop through all of the alternate settings */
>> for (a = 0; a < dev->config[c].interface[i].num_altsetting; a++)
>> {
>> /* Check if this interface is a printer */
>> if (dev->config[c].interface[i].altsetting[a].bInterfaceClass == 7)
>> {
>> /* Open the device, set the alternate setting, claim the interface
>> and do your processing */
>> usb_set_debug(255);
>> usb_dev_handle* aH;
>> void *context0 = NULL;
>> int aRc = 0;
>>
>> aH = usb_open(dev);
>> aRc = usb_set_configuration(aH, 1);
>> if (usb_claim_interface(aH, 0))
>> {
>> cout << "Error usb_claim_interface" << endl;
>> return;
>> }
>>
>> int aNumBytes = 0;
>> char aBuf[64*20+11];
>> int aSz = sizeof(aBuf);
>> memset(aBuf, 0, aSz );
>> SetLastError(0);
>>
>> // ---- Write ----
>> aNumBytes = usb_bulk_write(aH, 0x06, "MI\r", 3, 1000);
>> if (aNumBytes < 0) {
>>
>> } else {
>> cout << aNumBytes << " Bytes written" << endl;
>> }
>>
>> // --- Read ---
>> SetLastError(0);
>> aNumBytes = usb_bulk_read(aH, 0x85, aBuf, aSz, 1000);
>> if (aNumBytes < 0) {
>> cout << "Error usb_bulk_read: " << aNumBytes << endl;
>> DWORD aErr = GetLastError();
>> printf("%s (%d)\n", usb_strerror(), aErr);
>> }
>>
>> aRc = usb_release_interface(aH, 0);
>> aRc = usb_reset(aH);
>> aRc = usb_close(aH);
>> cout << "----- Sucess -----" << endl
>> }
>> }
>> }
>> }
>> }
>> }
>>
>> 2) --- stdout
>> found 1 busses
>> usb_set_debug: Setting debugging level to 255 (on)
>> 3 Bytes written
>> LIBUSB_DLL error: usb_reap_async: timeout error
>> Error usb_bulk_read: -116
>> usb_reap_async: timeout error (2)
>> ----- Sucess -----
>>
>> 3) --- what TestLibUsb-win.exe reports
>> bus-0/\\.\libusb0-0001--0x0a5f-0x4e00 0A5F/4E00
>> - Manufacturer : Eltron
>> - Product : P330i
>> - Serial Number: P330009314
>> wTotalLength: 32
>> bNumInterfaces: 1
>> bConfigurationValue: 1
>> iConfiguration: 86
>> bmAttributes: c0h
>> MaxPower: 0
>> bInterfaceNumber: 0
>> bAlternateSetting: 0
>> bNumEndpoints: 2
>> bInterfaceClass: 7
>> bInterfaceSubClass: 1
>> bInterfaceProtocol: 2
>> iInterface: 132
>> bEndpointAddress: 85h
>> bmAttributes: 02h
>> wMaxPacketSize: 64
>> bInterval: 0
>> bRefresh: 0
>> bSynchAddress: 0
>> bEndpointAddress: 06h
>> bmAttributes: 02h
>> wMaxPacketSize: 64
>> bInterval: 0
>> bRefresh: 0
>> bSynchAddress: 0
>>
>> 4) ---- And finally output of Dbgview
>> LIBUSB-DRIVER - release_interface(): releasing all interfaces
>> LIBUSB-DRIVER - set_configuration(): configuration 1
>> LIBUSB-DRIVER - set_configuration(): timeout 5000
>> LIBUSB-DRIVER - get_descriptor(): buffer size 18
>> LIBUSB-DRIVER - get_descriptor(): type 0001
>> LIBUSB-DRIVER - get_descriptor(): index 0000
>> LIBUSB-DRIVER - get_descriptor(): language id 0000
>> LIBUSB-DRIVER - get_descriptor(): timeout 5000
>> LIBUSB-DRIVER - get_descriptor(): buffer size 9
>> LIBUSB-DRIVER - get_descriptor(): type 0002
>> LIBUSB-DRIVER - get_descriptor(): index 0000
>> LIBUSB-DRIVER - get_descriptor(): language id 0000
>> LIBUSB-DRIVER - get_descriptor(): timeout 5000
>> LIBUSB-DRIVER - get_descriptor(): buffer size 32
>> LIBUSB-DRIVER - get_descriptor(): type 0002
>> LIBUSB-DRIVER - get_descriptor(): index 0000
>> LIBUSB-DRIVER - get_descriptor(): language id 0000
>> LIBUSB-DRIVER - get_descriptor(): timeout 5000
>> LIBUSB-DRIVER - set_configuration(): interface 0 found
>> LIBUSB-DRIVER - update_pipe_info(): interface 0
>> LIBUSB-DRIVER - update_pipe_info(): endpoint address 0x85
>> LIBUSB-DRIVER - update_pipe_info(): endpoint address 0x06
>> LIBUSB-DRIVER - claim_interface(): interface 0
>> LIBUSB-DRIVER - transfer(): bulk or interrupt transfer
>> LIBUSB-DRIVER - transfer(): direction out
>> LIBUSB-DRIVER - transfer(): endpoint 0x06
>> LIBUSB-DRIVER - transfer(): size 3
>> LIBUSB-DRIVER - transfer_complete(): 3 bytes transmitted
>> LIBUSB-DRIVER - transfer(): bulk or interrupt transfer
>> LIBUSB-DRIVER - transfer(): direction in
>> LIBUSB-DRIVER - transfer(): endpoint 0x85
>> LIBUSB-DRIVER - transfer(): size 1291
>> LIBUSB-DRIVER - transfer_cancel(): timeout error
>> [2772] LIBUSB_DLL error: usb_reap_async: timeout error
>> LIBUSB-DRIVER - release_interface(): interface 0
>> LIBUSB-DRIVER - reset_device()
>>
>> Regards
>> Alexander
|