2013/12/26 Christian Bianchini <max...@gmail.com>: > Hello, > I am trying to access on my OCR device that reads from invoice the number > and fill the input text box in the webpage. > I have the DLL for Windows and the file for Mac osx but I can't really turn > on the device. > > This is the lsusb: > > $ lsusb -vv -d0852:0005 > > Bus 001 Device 010: ID 0852:0005 CSEM > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 1.00 > bDeviceClass 255 Vendor Specific Class > bDeviceSubClass 0 > bDeviceProtocol 255 > bMaxPacketSize0 64 > idVendor 0x0852 CSEM > idProduct 0x0005 > bcdDevice 0.01 > iManufacturer 1 Xemtec SA > iProduct 2 Xemscan > iSerial 0 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 55 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0x80 > (Bus Powered) > MaxPower 200mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 0 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 0 > bInterfaceProtocol 0 > iInterface 0 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 1 > bNumEndpoints 4 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 0 > bInterfaceProtocol 0 > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x01 EP 1 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x82 EP 2 IN > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0005 1x 5 bytes > bInterval 10 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x88 EP 8 IN > bmAttributes 1 > Transfer Type Isochronous > Synch Type None > Usage Type Data > wMaxPacketSize 0x0284 1x 644 bytes > bInterval 1 > Device Status: 0x0000 > (Bus Powered) > > > I am trying to get it works under linux because there is nothing ready and I > would like to avoid to install windows. > > First thing that I found is that the Device status changes when you plug the > first time and then after a few seconds it changes to 0x000. > > This is the status when you plug it in: > Device Status: 0x0002 > (Bus Powered) > Remote Wakeup Enabled > > It's flashing for a few second and then off, on windows it turns on when is > reading the numbers. > > So far I have made this: > > dev = usb.core.find(idVendor=0x0852, idProduct=0x0005) > try: > dev.set_configuration() > > except usb.core.USBError as e: > sys.exit("Could not set configuration") > > endpointWrite = dev[0][(0,1)][1] > endpointRead = dev[0][(0,1)][0] > > print usb.control.get_status(dev) > > print usb.legacy.DeviceHandle(dev).interruptRead(0x82,0x0005) >
First of all, you don't really want to mix up the new API with the legacy interface. Just forget about the legacy module, it is there for backward compatibility with PyUSB 0.4. > > But the output is: > > 0 > Traceback (most recent call last): > File "test.py", line 20, in <module> > print usb.legacy.DeviceHandle(dev).interruptRead(0x82,0x0005) > File "/usr/local/lib/python2.7/dist-packages/usb/legacy.py", line 182, in > interruptRead > return self.dev.read(endpoint, size, self.__claimed_interface, timeout) > File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 662, in > read > fn = fn_map[self._ctx.get_endpoint_type(self, endpoint, intf)] > File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 180, in > get_endpoint_type > etype = util.endpoint_type(e.bmAttributes) > AttributeError: 'NoneType' object has no attribute 'bmAttributes' > > > I tried to use read, interruptWrite, etc.. but always is giving me this > error, it seems that I have turn it on or something else. > Can someone help me with get this device working? > Now, you need to set the alternate setting to 1 (as shown by lsusb). You may want to give a look at the PyUSB tutorial [1] to learn how to use PyUSB functions, as well as the doc strings. [1] https://github.com/walac/pyusb/blob/master/docs/tutorial.rst -- Best Regards, Wander Lairson Costa ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ pyusb-users mailing list pyusb-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pyusb-users