From: Setia B. <boe...@gm...> - 2014-02-08 07:30:11
|
Anyone has an experience to read RFID tags using MTI RU-824 RFID reader in Python (using pylab)? To be honest, I have zero experience with accessing USB devices or any hardware without and driver. I can easily read the tags using this reader in C# since the manufacturer provide a library which is only suitable for .Net. However, I need to make the device to be able to operate under linux and python is the best option for me to start. I have read a bit about pylab from here: http://pyusb.sourceforge.net/docs/1.0/tutorial.html My specific question is how to instruct the reader to start reading and how to get the data from the reader? At the moment I already have EP (I assume EP stands for EndPoint). What can I do with this EP? I know, this can be a silly question, but I am totally new in USB world. Kindest regards, Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* |
From: Wander L. C. <wan...@gm...> - 2014-02-08 11:11:57
|
2014-02-08 5:30 GMT-02:00 Setia Budi <boe...@gm...>: > > Anyone has an experience to read RFID tags using MTI RU-824 RFID reader in Python (using pylab)? > To be honest, I have zero experience with accessing USB devices or any hardware without and driver. I can easily read the tags using this reader in C# since the manufacturer provide a library which is only suitable for .Net. > However, I need to make the device to be able to operate under linux and python is the best option for me to start. I have read a bit about pylab from here: http://pyusb.sourceforge.net/docs/1.0/tutorial.html > > My specific question is how to instruct the reader to start reading and how to get the data from the reader? > > At the moment I already have EP (I assume EP stands for EndPoint). What can I do with this EP? > > I know, this can be a silly question, but I am totally new in USB world. > The best start it to read a basic USB tutorial, so you can learn about descriptors and transfer types, once you understand the basics of USB, the PyUSB tutorial will make a lot more sense for you. -- Best Regards, Wander Lairson Costa |
From: Ian D. <it....@gm...> - 2014-02-08 15:01:21
|
I'm personally a fan of USB in a Nutshell / http://www.beyondlogic.org/usbnutshell/usb1.shtml. If you have the source to the .NET library, you ought to be able to figure out out the supported requests. Have you emailed them for more / better documentation? On Sat, Feb 8, 2014 at 6:11 AM, Wander Lairson Costa < wan...@gm...> wrote: > 2014-02-08 5:30 GMT-02:00 Setia Budi <boe...@gm...>: > > > > Anyone has an experience to read RFID tags using MTI RU-824 RFID reader > in Python (using pylab)? > > To be honest, I have zero experience with accessing USB devices or any > hardware without and driver. I can easily read the tags using this reader > in C# since the manufacturer provide a library which is only suitable for > .Net. > > However, I need to make the device to be able to operate under linux and > python is the best option for me to start. I have read a bit about pylab > from here: http://pyusb.sourceforge.net/docs/1.0/tutorial.html > > > > My specific question is how to instruct the reader to start reading and > how to get the data from the reader? > > > > At the moment I already have EP (I assume EP stands for EndPoint). What > can I do with this EP? > > > > I know, this can be a silly question, but I am totally new in USB world. > > > > The best start it to read a basic USB tutorial, so you can learn about > descriptors and transfer types, once you understand the basics of USB, > the PyUSB tutorial will make a lot more sense for you. > > > -- > Best Regards, > Wander Lairson Costa > > > ------------------------------------------------------------------------------ > Managing the Performance of Cloud-Based Applications > Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. > Read the Whitepaper. > > http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk > _______________________________________________ > pyusb-users mailing list > pyu...@li... > https://lists.sourceforge.net/lists/listinfo/pyusb-users > |
From: Setia B. <boe...@gm...> - 2014-02-09 02:08:57
|
Thanks for the USB reading reference, I will read it in order to get some basic understanding about USB. But if there is anyone who had an experience working with pyusb and and kind of RFID reader, I would be grateful to have some advices. Kindest regards, Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Sun, Feb 9, 2014 at 2:01 AM, Ian Daniher <it....@gm...> wrote: > I'm personally a fan of USB in a Nutshell / > http://www.beyondlogic.org/usbnutshell/usb1.shtml. > > If you have the source to the .NET library, you ought to be able to figure > out out the supported requests. Have you emailed them for more / better > documentation? > > > On Sat, Feb 8, 2014 at 6:11 AM, Wander Lairson Costa < > wan...@gm...> wrote: > >> 2014-02-08 5:30 GMT-02:00 Setia Budi <boe...@gm...>: >> > >> > Anyone has an experience to read RFID tags using MTI RU-824 RFID reader >> in Python (using pylab)? >> > To be honest, I have zero experience with accessing USB devices or any >> hardware without and driver. I can easily read the tags using this reader >> in C# since the manufacturer provide a library which is only suitable for >> .Net. >> > However, I need to make the device to be able to operate under linux >> and python is the best option for me to start. I have read a bit about >> pylab from here: http://pyusb.sourceforge.net/docs/1.0/tutorial.html >> > >> > My specific question is how to instruct the reader to start reading and >> how to get the data from the reader? >> > >> > At the moment I already have EP (I assume EP stands for EndPoint). What >> can I do with this EP? >> > >> > I know, this can be a silly question, but I am totally new in USB world. >> > >> >> The best start it to read a basic USB tutorial, so you can learn about >> descriptors and transfer types, once you understand the basics of USB, >> the PyUSB tutorial will make a lot more sense for you. >> >> >> -- >> Best Regards, >> Wander Lairson Costa >> >> >> ------------------------------------------------------------------------------ >> Managing the Performance of Cloud-Based Applications >> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. >> Read the Whitepaper. >> >> http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk >> _______________________________________________ >> pyusb-users mailing list >> pyu...@li... >> https://lists.sourceforge.net/lists/listinfo/pyusb-users >> > > > > ------------------------------------------------------------------------------ > Managing the Performance of Cloud-Based Applications > Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. > Read the Whitepaper. > > http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk > _______________________________________________ > pyusb-users mailing list > pyu...@li... > https://lists.sourceforge.net/lists/listinfo/pyusb-users > > |
From: Setia B. <boe...@gm...> - 2014-02-11 05:56:13
|
Hi fellows, I will try to give further information related to my problem. I am facing difficulties in order to send USB commands to an RFID reader. This is the command reference of the device: https://github.com/mti-rfid/RFID_Explorer I am working with the MTI RU-824 model. The manufacturer of the device only provide a driver for Windows (using .Net), but we need to run the device on Linux. That's why I need to write few lines of code in Python as a new "driver". I am using PyUSB for accessing the device, and this is few lines of my code: ============================================================================ import usb.core import usb.util import sys VENDOR_ID = 0x24e9 PRODUCT_ID = 0x0824 device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) if device is None: sys.exit("Could not find Id System Barcode Reader.") else: print 'Device detected' device.set_configuration() cfg = device.get_active_configuration() interface_number = cfg[(0, 0)].bInterfaceNumber alternate_setting = usb.control.get_interface(device, interface_number) usb_interface = usb.util.find_descriptor( cfg, bInterfaceNumber=interface_number, bAlternateSetting=alternate_setting ) endpoint_out = usb.util.find_descriptor( usb_interface, # match the first OUT endpoint custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT ) endpoint_in = usb.util.find_descriptor( usb_interface, # match the first IN endpoint custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN ) endpoint_out.write('0x01') print endpoint_in.read(len('0x01'), 1000) ============================================================================= My question is on the last 2 lines. I am using endpoint_out to send a command and endpoint_in to read data from the reader. Am I correct? The problem is, when I run the code, there is an error message like this: usb.core.USBError: [Errno 110] Operation timed out Anyone can give a clue? Thank you. Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Sun, Feb 9, 2014 at 1:08 PM, Setia Budi <boe...@gm...> wrote: > Thanks for the USB reading reference, I will read it in order to get some > basic understanding about USB. > But if there is anyone who had an experience working with pyusb and and > kind of RFID reader, I would be grateful to have some advices. > > Kindest regards, > > Budi > > ========================= > <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> > <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> > > <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> > ========================= > *Please consider the environment * > *before printing this email* > > > On Sun, Feb 9, 2014 at 2:01 AM, Ian Daniher <it....@gm...> wrote: > >> I'm personally a fan of USB in a Nutshell / >> http://www.beyondlogic.org/usbnutshell/usb1.shtml. >> >> If you have the source to the .NET library, you ought to be able to >> figure out out the supported requests. Have you emailed them for more / >> better documentation? >> >> >> On Sat, Feb 8, 2014 at 6:11 AM, Wander Lairson Costa < >> wan...@gm...> wrote: >> >>> 2014-02-08 5:30 GMT-02:00 Setia Budi <boe...@gm...>: >>> > >>> > Anyone has an experience to read RFID tags using MTI RU-824 RFID >>> reader in Python (using pylab)? >>> > To be honest, I have zero experience with accessing USB devices or any >>> hardware without and driver. I can easily read the tags using this reader >>> in C# since the manufacturer provide a library which is only suitable for >>> .Net. >>> > However, I need to make the device to be able to operate under linux >>> and python is the best option for me to start. I have read a bit about >>> pylab from here: http://pyusb.sourceforge.net/docs/1.0/tutorial.html >>> > >>> > My specific question is how to instruct the reader to start reading >>> and how to get the data from the reader? >>> > >>> > At the moment I already have EP (I assume EP stands for EndPoint). >>> What can I do with this EP? >>> > >>> > I know, this can be a silly question, but I am totally new in USB >>> world. >>> > >>> >>> The best start it to read a basic USB tutorial, so you can learn about >>> descriptors and transfer types, once you understand the basics of USB, >>> the PyUSB tutorial will make a lot more sense for you. >>> >>> >>> -- >>> Best Regards, >>> Wander Lairson Costa >>> >>> >>> ------------------------------------------------------------------------------ >>> Managing the Performance of Cloud-Based Applications >>> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. >>> Read the Whitepaper. >>> >>> http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> pyusb-users mailing list >>> pyu...@li... >>> https://lists.sourceforge.net/lists/listinfo/pyusb-users >>> >> >> >> >> ------------------------------------------------------------------------------ >> Managing the Performance of Cloud-Based Applications >> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. >> Read the Whitepaper. >> >> http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk >> _______________________________________________ >> pyusb-users mailing list >> pyu...@li... >> https://lists.sourceforge.net/lists/listinfo/pyusb-users >> >> > |
From: Wander L. C. <wan...@gm...> - 2014-02-11 11:07:05
|
2014-02-11 3:56 GMT-02:00 Setia Budi <boe...@gm...>: > > Hi fellows, > I will try to give further information related to my problem. > > I am facing difficulties in order to send USB commands to an RFID reader. > This is the command reference of the device: https://github.com/mti-rfid/RFID_Explorer > > I am working with the MTI RU-824 model. > > The manufacturer of the device only provide a driver for Windows (using .Net), but we need to run the device on Linux. That's why I need to write few lines of code in Python as a new "driver". > > I am using PyUSB for accessing the device, and this is few lines of my code: > > ============================================================================ > > import usb.core > import usb.util > import sys > > VENDOR_ID = 0x24e9 > PRODUCT_ID = 0x0824 > > device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) > > if device is None: > sys.exit("Could not find Id System Barcode Reader.") > else: > print 'Device detected' > > device.set_configuration() > > cfg = device.get_active_configuration() > interface_number = cfg[(0, 0)].bInterfaceNumber > alternate_setting = usb.control.get_interface(device, interface_number) > usb_interface = usb.util.find_descriptor( > cfg, bInterfaceNumber=interface_number, > bAlternateSetting=alternate_setting > ) > > endpoint_out = usb.util.find_descriptor( > usb_interface, > # match the first OUT endpoint > custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT > ) > > endpoint_in = usb.util.find_descriptor( > usb_interface, > # match the first IN endpoint > custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN > ) > > endpoint_out.write('0x01') > print endpoint_in.read(len('0x01'), 1000) > > ============================================================================= > My question is on the last 2 lines. > I am using endpoint_out to send a command and endpoint_in to read data from the reader. Am I correct? > > The problem is, when I run the code, there is an error message like this: > usb.core.USBError: [Errno 110] Operation timed out > > Anyone can give a clue? Does this happen on write or read operation? -- Best Regards, Wander Lairson Costa |
From: Setia B. <boe...@gm...> - 2014-02-11 11:09:13
|
it happens on read operation. Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Tue, Feb 11, 2014 at 10:06 PM, Wander Lairson Costa < wan...@gm...> wrote: > 2014-02-11 3:56 GMT-02:00 Setia Budi <boe...@gm...>: > > > > Hi fellows, > > I will try to give further information related to my problem. > > > > I am facing difficulties in order to send USB commands to an RFID reader. > > This is the command reference of the device: > https://github.com/mti-rfid/RFID_Explorer > > > > I am working with the MTI RU-824 model. > > > > The manufacturer of the device only provide a driver for Windows (using > .Net), but we need to run the device on Linux. That's why I need to write > few lines of code in Python as a new "driver". > > > > I am using PyUSB for accessing the device, and this is few lines of my > code: > > > > > ============================================================================ > > > > import usb.core > > import usb.util > > import sys > > > > VENDOR_ID = 0x24e9 > > PRODUCT_ID = 0x0824 > > > > device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) > > > > if device is None: > > sys.exit("Could not find Id System Barcode Reader.") > > else: > > print 'Device detected' > > > > device.set_configuration() > > > > cfg = device.get_active_configuration() > > interface_number = cfg[(0, 0)].bInterfaceNumber > > alternate_setting = usb.control.get_interface(device, interface_number) > > usb_interface = usb.util.find_descriptor( > > cfg, bInterfaceNumber=interface_number, > > bAlternateSetting=alternate_setting > > ) > > > > endpoint_out = usb.util.find_descriptor( > > usb_interface, > > # match the first OUT endpoint > > custom_match=lambda e: > usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT > > ) > > > > endpoint_in = usb.util.find_descriptor( > > usb_interface, > > # match the first IN endpoint > > custom_match=lambda e: > usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN > > ) > > > > endpoint_out.write('0x01') > > print endpoint_in.read(len('0x01'), 1000) > > > > > ============================================================================= > > My question is on the last 2 lines. > > I am using endpoint_out to send a command and endpoint_in to read data > from the reader. Am I correct? > > > > The problem is, when I run the code, there is an error message like this: > > usb.core.USBError: [Errno 110] Operation timed out > > > > Anyone can give a clue? > > Does this happen on write or read operation? > > > -- > Best Regards, > Wander Lairson Costa > > > ------------------------------------------------------------------------------ > Android apps run on BlackBerry 10 > Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > Now with support for Jelly Bean, Bluetooth, Mapview and more. > Get your Android app in front of a whole new audience. Start now. > > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > _______________________________________________ > pyusb-users mailing list > pyu...@li... > https://lists.sourceforge.net/lists/listinfo/pyusb-users > |
From: Wander L. C. <wan...@gm...> - 2014-02-11 11:12:27
|
2014-02-11 9:09 GMT-02:00 Setia Budi <boe...@gm...>: > > it happens on read operation. > Could you please post the output of the following command? lsusb -v -d 24e9:0824 > > On Tue, Feb 11, 2014 at 10:06 PM, Wander Lairson Costa <wan...@gm...> wrote: >> >> 2014-02-11 3:56 GMT-02:00 Setia Budi <boe...@gm...>: >> > >> > Hi fellows, >> > I will try to give further information related to my problem. >> > >> > I am facing difficulties in order to send USB commands to an RFID reader. >> > This is the command reference of the device: https://github.com/mti-rfid/RFID_Explorer >> > >> > I am working with the MTI RU-824 model. >> > >> > The manufacturer of the device only provide a driver for Windows (using .Net), but we need to run the device on Linux. That's why I need to write few lines of code in Python as a new "driver". >> > >> > I am using PyUSB for accessing the device, and this is few lines of my code: >> > >> > ============================================================================ >> > >> > import usb.core >> > import usb.util >> > import sys >> > >> > VENDOR_ID = 0x24e9 >> > PRODUCT_ID = 0x0824 >> > >> > device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) >> > >> > if device is None: >> > sys.exit("Could not find Id System Barcode Reader.") >> > else: >> > print 'Device detected' >> > >> > device.set_configuration() >> > >> > cfg = device.get_active_configuration() >> > interface_number = cfg[(0, 0)].bInterfaceNumber >> > alternate_setting = usb.control.get_interface(device, interface_number) >> > usb_interface = usb.util.find_descriptor( >> > cfg, bInterfaceNumber=interface_number, >> > bAlternateSetting=alternate_setting >> > ) >> > >> > endpoint_out = usb.util.find_descriptor( >> > usb_interface, >> > # match the first OUT endpoint >> > custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT >> > ) >> > >> > endpoint_in = usb.util.find_descriptor( >> > usb_interface, >> > # match the first IN endpoint >> > custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN >> > ) >> > >> > endpoint_out.write('0x01') >> > print endpoint_in.read(len('0x01'), 1000) >> > >> > ============================================================================= >> > My question is on the last 2 lines. >> > I am using endpoint_out to send a command and endpoint_in to read data from the reader. Am I correct? >> > >> > The problem is, when I run the code, there is an error message like this: >> > usb.core.USBError: [Errno 110] Operation timed out >> > >> > Anyone can give a clue? >> >> Does this happen on write or read operation? >> >> >> -- >> Best Regards, >> Wander Lairson Costa >> >> ------------------------------------------------------------------------------ >> Android apps run on BlackBerry 10 >> Introducing the new BlackBerry 10.2.1 Runtime for Android apps. >> Now with support for Jelly Bean, Bluetooth, Mapview and more. >> Get your Android app in front of a whole new audience. Start now. >> http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk >> >> _______________________________________________ >> pyusb-users mailing list >> pyu...@li... >> https://lists.sourceforge.net/lists/listinfo/pyusb-users > > > > ------------------------------------------------------------------------------ > Android apps run on BlackBerry 10 > Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > Now with support for Jelly Bean, Bluetooth, Mapview and more. > Get your Android app in front of a whole new audience. Start now. > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > _______________________________________________ > pyusb-users mailing list > pyu...@li... > https://lists.sourceforge.net/lists/listinfo/pyusb-users > -- Best Regards, Wander Lairson Costa |
From: Setia B. <boe...@gm...> - 2014-02-11 11:15:46
|
I left the RFID reader at my office. Tomorrow morning I will send the lsusb output. It's 10:14 pm in Tasmania :) Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Tue, Feb 11, 2014 at 10:11 PM, Wander Lairson Costa < wan...@gm...> wrote: > 2014-02-11 9:09 GMT-02:00 Setia Budi <boe...@gm...>: > > > > it happens on read operation. > > > > Could you please post the output of the following command? > lsusb -v -d 24e9:0824 > > > > > > On Tue, Feb 11, 2014 at 10:06 PM, Wander Lairson Costa < > wan...@gm...> wrote: > >> > >> 2014-02-11 3:56 GMT-02:00 Setia Budi <boe...@gm...>: > >> > > >> > Hi fellows, > >> > I will try to give further information related to my problem. > >> > > >> > I am facing difficulties in order to send USB commands to an RFID > reader. > >> > This is the command reference of the device: > https://github.com/mti-rfid/RFID_Explorer > >> > > >> > I am working with the MTI RU-824 model. > >> > > >> > The manufacturer of the device only provide a driver for Windows > (using .Net), but we need to run the device on Linux. That's why I need to > write few lines of code in Python as a new "driver". > >> > > >> > I am using PyUSB for accessing the device, and this is few lines of > my code: > >> > > >> > > ============================================================================ > >> > > >> > import usb.core > >> > import usb.util > >> > import sys > >> > > >> > VENDOR_ID = 0x24e9 > >> > PRODUCT_ID = 0x0824 > >> > > >> > device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) > >> > > >> > if device is None: > >> > sys.exit("Could not find Id System Barcode Reader.") > >> > else: > >> > print 'Device detected' > >> > > >> > device.set_configuration() > >> > > >> > cfg = device.get_active_configuration() > >> > interface_number = cfg[(0, 0)].bInterfaceNumber > >> > alternate_setting = usb.control.get_interface(device, > interface_number) > >> > usb_interface = usb.util.find_descriptor( > >> > cfg, bInterfaceNumber=interface_number, > >> > bAlternateSetting=alternate_setting > >> > ) > >> > > >> > endpoint_out = usb.util.find_descriptor( > >> > usb_interface, > >> > # match the first OUT endpoint > >> > custom_match=lambda e: > usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT > >> > ) > >> > > >> > endpoint_in = usb.util.find_descriptor( > >> > usb_interface, > >> > # match the first IN endpoint > >> > custom_match=lambda e: > usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN > >> > ) > >> > > >> > endpoint_out.write('0x01') > >> > print endpoint_in.read(len('0x01'), 1000) > >> > > >> > > ============================================================================= > >> > My question is on the last 2 lines. > >> > I am using endpoint_out to send a command and endpoint_in to read > data from the reader. Am I correct? > >> > > >> > The problem is, when I run the code, there is an error message like > this: > >> > usb.core.USBError: [Errno 110] Operation timed out > >> > > >> > Anyone can give a clue? > >> > >> Does this happen on write or read operation? > >> > >> > >> -- > >> Best Regards, > >> Wander Lairson Costa > >> > >> > ------------------------------------------------------------------------------ > >> Android apps run on BlackBerry 10 > >> Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > >> Now with support for Jelly Bean, Bluetooth, Mapview and more. > >> Get your Android app in front of a whole new audience. Start now. > >> > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > >> > >> _______________________________________________ > >> pyusb-users mailing list > >> pyu...@li... > >> https://lists.sourceforge.net/lists/listinfo/pyusb-users > > > > > > > > > ------------------------------------------------------------------------------ > > Android apps run on BlackBerry 10 > > Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > > Now with support for Jelly Bean, Bluetooth, Mapview and more. > > Get your Android app in front of a whole new audience. Start now. > > > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > > _______________________________________________ > > pyusb-users mailing list > > pyu...@li... > > https://lists.sourceforge.net/lists/listinfo/pyusb-users > > > > > > -- > Best Regards, > Wander Lairson Costa > > > ------------------------------------------------------------------------------ > Android apps run on BlackBerry 10 > Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > Now with support for Jelly Bean, Bluetooth, Mapview and more. > Get your Android app in front of a whole new audience. Start now. > > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > _______________________________________________ > pyusb-users mailing list > pyu...@li... > https://lists.sourceforge.net/lists/listinfo/pyusb-users > |
From: Setia B. <boe...@gm...> - 2014-02-11 11:18:58
|
There is one thing which I am not quite sure whether it is right or wrong. This is my understanding, there are two types of endpoint, endpoint out and endpoint in. Every time we want to send a command to the device, we sent the command through endpoint out, on the other hand, if we want to read data from the device, we read it from endpoint in. is that correct? Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Tue, Feb 11, 2014 at 10:15 PM, Setia Budi <boe...@gm...> wrote: > I left the RFID reader at my office. Tomorrow morning I will send the > lsusb output. > It's 10:14 pm in Tasmania :) > > Budi > > ========================= > <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> > <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> > > <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> > ========================= > *Please consider the environment * > *before printing this email* > > > On Tue, Feb 11, 2014 at 10:11 PM, Wander Lairson Costa < > wan...@gm...> wrote: > >> 2014-02-11 9:09 GMT-02:00 Setia Budi <boe...@gm...>: >> > >> > it happens on read operation. >> > >> >> Could you please post the output of the following command? >> lsusb -v -d 24e9:0824 >> >> >> > >> > On Tue, Feb 11, 2014 at 10:06 PM, Wander Lairson Costa < >> wan...@gm...> wrote: >> >> >> >> 2014-02-11 3:56 GMT-02:00 Setia Budi <boe...@gm...>: >> >> > >> >> > Hi fellows, >> >> > I will try to give further information related to my problem. >> >> > >> >> > I am facing difficulties in order to send USB commands to an RFID >> reader. >> >> > This is the command reference of the device: >> https://github.com/mti-rfid/RFID_Explorer >> >> > >> >> > I am working with the MTI RU-824 model. >> >> > >> >> > The manufacturer of the device only provide a driver for Windows >> (using .Net), but we need to run the device on Linux. That's why I need to >> write few lines of code in Python as a new "driver". >> >> > >> >> > I am using PyUSB for accessing the device, and this is few lines of >> my code: >> >> > >> >> > >> ============================================================================ >> >> > >> >> > import usb.core >> >> > import usb.util >> >> > import sys >> >> > >> >> > VENDOR_ID = 0x24e9 >> >> > PRODUCT_ID = 0x0824 >> >> > >> >> > device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) >> >> > >> >> > if device is None: >> >> > sys.exit("Could not find Id System Barcode Reader.") >> >> > else: >> >> > print 'Device detected' >> >> > >> >> > device.set_configuration() >> >> > >> >> > cfg = device.get_active_configuration() >> >> > interface_number = cfg[(0, 0)].bInterfaceNumber >> >> > alternate_setting = usb.control.get_interface(device, >> interface_number) >> >> > usb_interface = usb.util.find_descriptor( >> >> > cfg, bInterfaceNumber=interface_number, >> >> > bAlternateSetting=alternate_setting >> >> > ) >> >> > >> >> > endpoint_out = usb.util.find_descriptor( >> >> > usb_interface, >> >> > # match the first OUT endpoint >> >> > custom_match=lambda e: >> usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT >> >> > ) >> >> > >> >> > endpoint_in = usb.util.find_descriptor( >> >> > usb_interface, >> >> > # match the first IN endpoint >> >> > custom_match=lambda e: >> usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN >> >> > ) >> >> > >> >> > endpoint_out.write('0x01') >> >> > print endpoint_in.read(len('0x01'), 1000) >> >> > >> >> > >> ============================================================================= >> >> > My question is on the last 2 lines. >> >> > I am using endpoint_out to send a command and endpoint_in to read >> data from the reader. Am I correct? >> >> > >> >> > The problem is, when I run the code, there is an error message like >> this: >> >> > usb.core.USBError: [Errno 110] Operation timed out >> >> > >> >> > Anyone can give a clue? >> >> >> >> Does this happen on write or read operation? >> >> >> >> >> >> -- >> >> Best Regards, >> >> Wander Lairson Costa >> >> >> >> >> ------------------------------------------------------------------------------ >> >> Android apps run on BlackBerry 10 >> >> Introducing the new BlackBerry 10.2.1 Runtime for Android apps. >> >> Now with support for Jelly Bean, Bluetooth, Mapview and more. >> >> Get your Android app in front of a whole new audience. Start now. >> >> >> http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk >> >> >> >> _______________________________________________ >> >> pyusb-users mailing list >> >> pyu...@li... >> >> https://lists.sourceforge.net/lists/listinfo/pyusb-users >> > >> > >> > >> > >> ------------------------------------------------------------------------------ >> > Android apps run on BlackBerry 10 >> > Introducing the new BlackBerry 10.2.1 Runtime for Android apps. >> > Now with support for Jelly Bean, Bluetooth, Mapview and more. >> > Get your Android app in front of a whole new audience. Start now. >> > >> http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk >> > _______________________________________________ >> > pyusb-users mailing list >> > pyu...@li... >> > https://lists.sourceforge.net/lists/listinfo/pyusb-users >> > >> >> >> >> -- >> Best Regards, >> Wander Lairson Costa >> >> >> ------------------------------------------------------------------------------ >> Android apps run on BlackBerry 10 >> Introducing the new BlackBerry 10.2.1 Runtime for Android apps. >> Now with support for Jelly Bean, Bluetooth, Mapview and more. >> Get your Android app in front of a whole new audience. Start now. >> >> http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk >> _______________________________________________ >> pyusb-users mailing list >> pyu...@li... >> https://lists.sourceforge.net/lists/listinfo/pyusb-users >> > > |
From: Wander L. C. <wan...@gm...> - 2014-02-11 11:30:05
|
2014-02-11 9:18 GMT-02:00 Setia Budi <boe...@gm...>: > > There is one thing which I am not quite sure whether it is right or wrong. > This is my understanding, there are two types of endpoint, endpoint out and endpoint in. > Every time we want to send a command to the device, we sent the command through endpoint out, on the other hand, if we want to read data from the device, we read it from endpoint in. > is that correct? > Actually your device can have more than one read and/or write endpoint. Your device can even be more than one logical device, it is called a composite device, with each logical device having its own set of endpoints. -- Best Regards, Wander Lairson Costa |
From: Setia B. <boe...@gm...> - 2014-02-11 22:11:39
|
This is the output for lsusb -v -d 24e9:0824 Bus 002 Device 007: ID 24e9:0824 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 0 bDeviceProtocol 255 bMaxPacketSize0 8 idVendor 0x24e9 idProduct 0x0824 bcdDevice 0.01 iManufacturer 1 MICROELECTRONICS TECHNOLOGY INC. iProduct 2 MTI UHF RFID PRODUCT iSerial 3 1326U0002 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 41 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 No Subclass bInterfaceProtocol 0 None iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 98 Report Descriptor: (length is 98) Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 (null) Item(Local ): Usage, data= [ 0x01 ] 1 (null) Item(Main ): Collection, data= [ 0x01 ] 1 Application Item(Global): Report ID, data= [ 0x43 ] 67 Item(Global): Report Count, data= [ 0x0f ] 15 Item(Global): Report Size, data= [ 0x08 ] 8 Item(Global): Logical Minimum, data= [ 0x00 ] 0 Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 Item(Local ): Usage, data= [ 0x01 ] 1 (null) Item(Main ): Output, data= [ 0x02 ] 2 Data Variable Absolute No_Wrap Linear Preferred_State No_Null_Position Non_Volatile Bitfield Item(Global): Report ID, data= [ 0x52 ] 82 Item(Global): Report Count, data= [ 0x0f ] 15 Item(Global): Report Size, data= [ 0x08 ] 8 Item(Global): Logical Minimum, data= [ 0x00 ] 0 Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 Item(Local ): Usage, data= [ 0x01 ] 1 (null) Item(Main ): Input, data= [ 0x02 ] 2 Data Variable Absolute No_Wrap Linear Preferred_State No_Null_Position Non_Volatile Bitfield Item(Global): Report ID, data= [ 0x42 ] 66 Item(Global): Report Count, data= [ 0x17 ] 23 Item(Global): Report Size, data= [ 0x08 ] 8 Item(Global): Logical Minimum, data= [ 0x00 ] 0 Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 Item(Local ): Usage, data= [ 0x01 ] 1 (null) Item(Main ): Input, data= [ 0x02 ] 2 Data Variable Absolute No_Wrap Linear Preferred_State No_Null_Position Non_Volatile Bitfield Item(Global): Report ID, data= [ 0x41 ] 65 Item(Global): Report Count, data= [ 0x3f ] 63 Item(Global): Report Size, data= [ 0x08 ] 8 Item(Global): Logical Minimum, data= [ 0x00 ] 0 Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 Item(Local ): Usage, data= [ 0x01 ] 1 (null) Item(Main ): Input, data= [ 0x02 ] 2 Data Variable Absolute No_Wrap Linear Preferred_State No_Null_Position Non_Volatile Bitfield Item(Global): Report ID, data= [ 0x49 ] 73 Item(Global): Report Count, data= [ 0x3f ] 63 Item(Global): Report Size, data= [ 0x08 ] 8 Item(Global): Logical Minimum, data= [ 0x00 ] 0 Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 Item(Local ): Usage, data= [ 0x01 ] 1 (null) Item(Main ): Input, data= [ 0x02 ] 2 Data Variable Absolute No_Wrap Linear Preferred_State No_Null_Position Non_Volatile Bitfield Item(Global): Report ID, data= [ 0x45 ] 69 Item(Global): Report Count, data= [ 0x17 ] 23 Item(Global): Report Size, data= [ 0x08 ] 8 Item(Global): Logical Minimum, data= [ 0x00 ] 0 Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 Item(Local ): Usage, data= [ 0x01 ] 1 (null) Item(Main ): Input, data= [ 0x02 ] 2 Data Variable Absolute No_Wrap Linear Preferred_State No_Null_Position Non_Volatile Bitfield Item(Main ): End Collection, data=none Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 Device Status: 0x0001 Self Powered Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Tue, Feb 11, 2014 at 10:11 PM, Wander Lairson Costa < wan...@gm...> wrote: > 2014-02-11 9:09 GMT-02:00 Setia Budi <boe...@gm...>: > > > > it happens on read operation. > > > > Could you please post the output of the following command? > lsusb -v -d 24e9:0824 > > > > > > On Tue, Feb 11, 2014 at 10:06 PM, Wander Lairson Costa < > wan...@gm...> wrote: > >> > >> 2014-02-11 3:56 GMT-02:00 Setia Budi <boe...@gm...>: > >> > > >> > Hi fellows, > >> > I will try to give further information related to my problem. > >> > > >> > I am facing difficulties in order to send USB commands to an RFID > reader. > >> > This is the command reference of the device: > https://github.com/mti-rfid/RFID_Explorer > >> > > >> > I am working with the MTI RU-824 model. > >> > > >> > The manufacturer of the device only provide a driver for Windows > (using .Net), but we need to run the device on Linux. That's why I need to > write few lines of code in Python as a new "driver". > >> > > >> > I am using PyUSB for accessing the device, and this is few lines of > my code: > >> > > >> > > ============================================================================ > >> > > >> > import usb.core > >> > import usb.util > >> > import sys > >> > > >> > VENDOR_ID = 0x24e9 > >> > PRODUCT_ID = 0x0824 > >> > > >> > device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) > >> > > >> > if device is None: > >> > sys.exit("Could not find Id System Barcode Reader.") > >> > else: > >> > print 'Device detected' > >> > > >> > device.set_configuration() > >> > > >> > cfg = device.get_active_configuration() > >> > interface_number = cfg[(0, 0)].bInterfaceNumber > >> > alternate_setting = usb.control.get_interface(device, > interface_number) > >> > usb_interface = usb.util.find_descriptor( > >> > cfg, bInterfaceNumber=interface_number, > >> > bAlternateSetting=alternate_setting > >> > ) > >> > > >> > endpoint_out = usb.util.find_descriptor( > >> > usb_interface, > >> > # match the first OUT endpoint > >> > custom_match=lambda e: > usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT > >> > ) > >> > > >> > endpoint_in = usb.util.find_descriptor( > >> > usb_interface, > >> > # match the first IN endpoint > >> > custom_match=lambda e: > usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN > >> > ) > >> > > >> > endpoint_out.write('0x01') > >> > print endpoint_in.read(len('0x01'), 1000) > >> > > >> > > ============================================================================= > >> > My question is on the last 2 lines. > >> > I am using endpoint_out to send a command and endpoint_in to read > data from the reader. Am I correct? > >> > > >> > The problem is, when I run the code, there is an error message like > this: > >> > usb.core.USBError: [Errno 110] Operation timed out > >> > > >> > Anyone can give a clue? > >> > >> Does this happen on write or read operation? > >> > >> > >> -- > >> Best Regards, > >> Wander Lairson Costa > >> > >> > ------------------------------------------------------------------------------ > >> Android apps run on BlackBerry 10 > >> Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > >> Now with support for Jelly Bean, Bluetooth, Mapview and more. > >> Get your Android app in front of a whole new audience. Start now. > >> > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > >> > >> _______________________________________________ > >> pyusb-users mailing list > >> pyu...@li... > >> https://lists.sourceforge.net/lists/listinfo/pyusb-users > > > > > > > > > ------------------------------------------------------------------------------ > > Android apps run on BlackBerry 10 > > Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > > Now with support for Jelly Bean, Bluetooth, Mapview and more. > > Get your Android app in front of a whole new audience. Start now. > > > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > > _______________________________________________ > > pyusb-users mailing list > > pyu...@li... > > https://lists.sourceforge.net/lists/listinfo/pyusb-users > > > > > > -- > Best Regards, > Wander Lairson Costa > > > ------------------------------------------------------------------------------ > Android apps run on BlackBerry 10 > Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > Now with support for Jelly Bean, Bluetooth, Mapview and more. > Get your Android app in front of a whole new audience. Start now. > > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > _______________________________________________ > pyusb-users mailing list > pyu...@li... > https://lists.sourceforge.net/lists/listinfo/pyusb-users > |
From: Wander L. C. <wan...@gm...> - 2014-02-12 10:53:37
|
2014-02-11 20:11 GMT-02:00 Setia Budi <boe...@gm...>: > This is the output for lsusb -v -d 24e9:0824 > > Bus 002 Device 007: ID 24e9:0824 > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 1.10 > bDeviceClass 255 Vendor Specific Class > bDeviceSubClass 0 > bDeviceProtocol 255 > bMaxPacketSize0 8 > idVendor 0x24e9 > idProduct 0x0824 > bcdDevice 0.01 > iManufacturer 1 MICROELECTRONICS TECHNOLOGY INC. > iProduct 2 MTI UHF RFID PRODUCT > iSerial 3 1326U0002 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 41 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0xc0 > Self Powered > MaxPower 500mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 3 Human Interface Device > bInterfaceSubClass 0 No Subclass > bInterfaceProtocol 0 None > iInterface 0 > HID Device Descriptor: > bLength 9 > bDescriptorType 33 > bcdHID 1.11 > bCountryCode 0 Not supported > bNumDescriptors 1 > bDescriptorType 34 Report > wDescriptorLength 98 > Report Descriptor: (length is 98) > Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 > (null) > Item(Local ): Usage, data= [ 0x01 ] 1 > (null) > Item(Main ): Collection, data= [ 0x01 ] 1 > Application > Item(Global): Report ID, data= [ 0x43 ] 67 > Item(Global): Report Count, data= [ 0x0f ] 15 > Item(Global): Report Size, data= [ 0x08 ] 8 > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > Item(Local ): Usage, data= [ 0x01 ] 1 > (null) > Item(Main ): Output, data= [ 0x02 ] 2 > Data Variable Absolute No_Wrap Linear > Preferred_State No_Null_Position Non_Volatile > Bitfield > Item(Global): Report ID, data= [ 0x52 ] 82 > Item(Global): Report Count, data= [ 0x0f ] 15 > Item(Global): Report Size, data= [ 0x08 ] 8 > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > Item(Local ): Usage, data= [ 0x01 ] 1 > (null) > Item(Main ): Input, data= [ 0x02 ] 2 > Data Variable Absolute No_Wrap Linear > Preferred_State No_Null_Position Non_Volatile > Bitfield > Item(Global): Report ID, data= [ 0x42 ] 66 > Item(Global): Report Count, data= [ 0x17 ] 23 > Item(Global): Report Size, data= [ 0x08 ] 8 > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > Item(Local ): Usage, data= [ 0x01 ] 1 > (null) > Item(Main ): Input, data= [ 0x02 ] 2 > Data Variable Absolute No_Wrap Linear > Preferred_State No_Null_Position Non_Volatile > Bitfield > Item(Global): Report ID, data= [ 0x41 ] 65 > Item(Global): Report Count, data= [ 0x3f ] 63 > Item(Global): Report Size, data= [ 0x08 ] 8 > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > Item(Local ): Usage, data= [ 0x01 ] 1 > (null) > Item(Main ): Input, data= [ 0x02 ] 2 > Data Variable Absolute No_Wrap Linear > Preferred_State No_Null_Position Non_Volatile > Bitfield > Item(Global): Report ID, data= [ 0x49 ] 73 > Item(Global): Report Count, data= [ 0x3f ] 63 > Item(Global): Report Size, data= [ 0x08 ] 8 > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > Item(Local ): Usage, data= [ 0x01 ] 1 > (null) > Item(Main ): Input, data= [ 0x02 ] 2 > Data Variable Absolute No_Wrap Linear > Preferred_State No_Null_Position Non_Volatile > Bitfield > Item(Global): Report ID, data= [ 0x45 ] 69 > Item(Global): Report Count, data= [ 0x17 ] 23 > Item(Global): Report Size, data= [ 0x08 ] 8 > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > Item(Local ): Usage, data= [ 0x01 ] 1 > (null) > Item(Main ): Input, data= [ 0x02 ] 2 > Data Variable Absolute No_Wrap Linear > Preferred_State No_Null_Position Non_Volatile > Bitfield > Item(Main ): End Collection, data=none > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x01 EP 1 OUT > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 1 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x82 EP 2 IN > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 1 > Device Status: 0x0001 > Self Powered > To begin with, your former code can be summed up to this (with latest git PyUSB): import usb.core import usb.util import sys VENDOR_ID = 0x24e9 PRODUCT_ID = 0x0824 device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) if device is None: sys.exit("Could not find Id System Barcode Reader.") else: print 'Device detected' device.set_configuration() device.write(0x01, [0x01]) ---> you probably meant [0x01] or '\x01' instead of '0x01' print device.read(0x82, 64, 1000) If you are still getting a read timeout, that is probably because the 0x01 command means nothing to the device. -- Best Regards, Wander Lairson Costa |
From: Setia B. <boe...@gm...> - 2014-02-12 12:06:18
|
Ok I will give a try tomorrow :) Thank you for the advice :) Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Wed, Feb 12, 2014 at 9:52 PM, Wander Lairson Costa < wan...@gm...> wrote: > 2014-02-11 20:11 GMT-02:00 Setia Budi <boe...@gm...>: > > This is the output for lsusb -v -d 24e9:0824 > > > > Bus 002 Device 007: ID 24e9:0824 > > Device Descriptor: > > bLength 18 > > bDescriptorType 1 > > bcdUSB 1.10 > > bDeviceClass 255 Vendor Specific Class > > bDeviceSubClass 0 > > bDeviceProtocol 255 > > bMaxPacketSize0 8 > > idVendor 0x24e9 > > idProduct 0x0824 > > bcdDevice 0.01 > > iManufacturer 1 MICROELECTRONICS TECHNOLOGY INC. > > iProduct 2 MTI UHF RFID PRODUCT > > iSerial 3 1326U0002 > > bNumConfigurations 1 > > Configuration Descriptor: > > bLength 9 > > bDescriptorType 2 > > wTotalLength 41 > > bNumInterfaces 1 > > bConfigurationValue 1 > > iConfiguration 0 > > bmAttributes 0xc0 > > Self Powered > > MaxPower 500mA > > Interface Descriptor: > > bLength 9 > > bDescriptorType 4 > > bInterfaceNumber 0 > > bAlternateSetting 0 > > bNumEndpoints 2 > > bInterfaceClass 3 Human Interface Device > > bInterfaceSubClass 0 No Subclass > > bInterfaceProtocol 0 None > > iInterface 0 > > HID Device Descriptor: > > bLength 9 > > bDescriptorType 33 > > bcdHID 1.11 > > bCountryCode 0 Not supported > > bNumDescriptors 1 > > bDescriptorType 34 Report > > wDescriptorLength 98 > > Report Descriptor: (length is 98) > > Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 > > (null) > > Item(Local ): Usage, data= [ 0x01 ] 1 > > (null) > > Item(Main ): Collection, data= [ 0x01 ] 1 > > Application > > Item(Global): Report ID, data= [ 0x43 ] 67 > > Item(Global): Report Count, data= [ 0x0f ] 15 > > Item(Global): Report Size, data= [ 0x08 ] 8 > > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > > Item(Local ): Usage, data= [ 0x01 ] 1 > > (null) > > Item(Main ): Output, data= [ 0x02 ] 2 > > Data Variable Absolute No_Wrap Linear > > Preferred_State No_Null_Position Non_Volatile > > Bitfield > > Item(Global): Report ID, data= [ 0x52 ] 82 > > Item(Global): Report Count, data= [ 0x0f ] 15 > > Item(Global): Report Size, data= [ 0x08 ] 8 > > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > > Item(Local ): Usage, data= [ 0x01 ] 1 > > (null) > > Item(Main ): Input, data= [ 0x02 ] 2 > > Data Variable Absolute No_Wrap Linear > > Preferred_State No_Null_Position Non_Volatile > > Bitfield > > Item(Global): Report ID, data= [ 0x42 ] 66 > > Item(Global): Report Count, data= [ 0x17 ] 23 > > Item(Global): Report Size, data= [ 0x08 ] 8 > > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > > Item(Local ): Usage, data= [ 0x01 ] 1 > > (null) > > Item(Main ): Input, data= [ 0x02 ] 2 > > Data Variable Absolute No_Wrap Linear > > Preferred_State No_Null_Position Non_Volatile > > Bitfield > > Item(Global): Report ID, data= [ 0x41 ] 65 > > Item(Global): Report Count, data= [ 0x3f ] 63 > > Item(Global): Report Size, data= [ 0x08 ] 8 > > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > > Item(Local ): Usage, data= [ 0x01 ] 1 > > (null) > > Item(Main ): Input, data= [ 0x02 ] 2 > > Data Variable Absolute No_Wrap Linear > > Preferred_State No_Null_Position Non_Volatile > > Bitfield > > Item(Global): Report ID, data= [ 0x49 ] 73 > > Item(Global): Report Count, data= [ 0x3f ] 63 > > Item(Global): Report Size, data= [ 0x08 ] 8 > > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > > Item(Local ): Usage, data= [ 0x01 ] 1 > > (null) > > Item(Main ): Input, data= [ 0x02 ] 2 > > Data Variable Absolute No_Wrap Linear > > Preferred_State No_Null_Position Non_Volatile > > Bitfield > > Item(Global): Report ID, data= [ 0x45 ] 69 > > Item(Global): Report Count, data= [ 0x17 ] 23 > > Item(Global): Report Size, data= [ 0x08 ] 8 > > Item(Global): Logical Minimum, data= [ 0x00 ] 0 > > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > > Item(Local ): Usage, data= [ 0x01 ] 1 > > (null) > > Item(Main ): Input, data= [ 0x02 ] 2 > > Data Variable Absolute No_Wrap Linear > > Preferred_State No_Null_Position Non_Volatile > > Bitfield > > Item(Main ): End Collection, data=none > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x01 EP 1 OUT > > bmAttributes 3 > > Transfer Type Interrupt > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0040 1x 64 bytes > > bInterval 1 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x82 EP 2 IN > > bmAttributes 3 > > Transfer Type Interrupt > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0040 1x 64 bytes > > bInterval 1 > > Device Status: 0x0001 > > Self Powered > > > > To begin with, your former code can be summed up to this (with latest > git PyUSB): > > import usb.core > import usb.util > import sys > > VENDOR_ID = 0x24e9 > PRODUCT_ID = 0x0824 > > device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) > > if device is None: > sys.exit("Could not find Id System Barcode Reader.") > else: > print 'Device detected' > > device.set_configuration() > > device.write(0x01, [0x01]) ---> you probably meant [0x01] or '\x01' > instead of '0x01' > print device.read(0x82, 64, 1000) > > If you are still getting a read timeout, that is probably because the > 0x01 command means nothing to the device. > > -- > Best Regards, > Wander Lairson Costa > > > ------------------------------------------------------------------------------ > Android apps run on BlackBerry 10 > Introducing the new BlackBerry 10.2.1 Runtime for Android apps. > Now with support for Jelly Bean, Bluetooth, Mapview and more. > Get your Android app in front of a whole new audience. Start now. > > http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk > _______________________________________________ > pyusb-users mailing list > pyu...@li... > https://lists.sourceforge.net/lists/listinfo/pyusb-users > |
From: Setia B. <boe...@gm...> - 2014-02-13 02:48:19
|
I re-read the reference manual for the reader and I made few changes on the data which I need to send. At the moment I am quite sure about the format of the data which I need to send (header, device_id, command_id, parameters, crc16). This is the update for the code ====================================================================== HEADER = bytearray([0x4D, 0x54, 0x49, 0x43]) DEVICE_ID = bytearray([0x00]) COMMAND_ID = bytearray([0x03]) # for retrieving the operation mode PARAMETERS = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]) command_packet = HEADER + DEVICE_ID + COMMAND_ID + PARAMETERS checksum = crc16(command_packet) complete_command_packet = command_packet + bytearray([checksum & 0xff, ((checksum >> 8) & 0xFF)]) device.write(0x01, complete_command_packet) print device.read(0x82, 16, 1000) ===================================================================== I found an different error message when the device.read method is invoked. AttributeError: 'NoneType' object has no attribute 'bInterfaceNumber' Any idea about the error message? Kindest regards, Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Wed, Feb 12, 2014 at 11:06 PM, Setia Budi <boe...@gm...> wrote: > Ok I will give a try tomorrow :) > Thank you for the advice :) > > Budi > > ========================= > <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> > <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> > > <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> > ========================= > *Please consider the environment * > *before printing this email* > > > On Wed, Feb 12, 2014 at 9:52 PM, Wander Lairson Costa < > wan...@gm...> wrote: > >> 2014-02-11 20:11 GMT-02:00 Setia Budi <boe...@gm...>: >> > This is the output for lsusb -v -d 24e9:0824 >> > >> > Bus 002 Device 007: ID 24e9:0824 >> > Device Descriptor: >> > bLength 18 >> > bDescriptorType 1 >> > bcdUSB 1.10 >> > bDeviceClass 255 Vendor Specific Class >> > bDeviceSubClass 0 >> > bDeviceProtocol 255 >> > bMaxPacketSize0 8 >> > idVendor 0x24e9 >> > idProduct 0x0824 >> > bcdDevice 0.01 >> > iManufacturer 1 MICROELECTRONICS TECHNOLOGY INC. >> > iProduct 2 MTI UHF RFID PRODUCT >> > iSerial 3 1326U0002 >> > bNumConfigurations 1 >> > Configuration Descriptor: >> > bLength 9 >> > bDescriptorType 2 >> > wTotalLength 41 >> > bNumInterfaces 1 >> > bConfigurationValue 1 >> > iConfiguration 0 >> > bmAttributes 0xc0 >> > Self Powered >> > MaxPower 500mA >> > Interface Descriptor: >> > bLength 9 >> > bDescriptorType 4 >> > bInterfaceNumber 0 >> > bAlternateSetting 0 >> > bNumEndpoints 2 >> > bInterfaceClass 3 Human Interface Device >> > bInterfaceSubClass 0 No Subclass >> > bInterfaceProtocol 0 None >> > iInterface 0 >> > HID Device Descriptor: >> > bLength 9 >> > bDescriptorType 33 >> > bcdHID 1.11 >> > bCountryCode 0 Not supported >> > bNumDescriptors 1 >> > bDescriptorType 34 Report >> > wDescriptorLength 98 >> > Report Descriptor: (length is 98) >> > Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 >> > (null) >> > Item(Local ): Usage, data= [ 0x01 ] 1 >> > (null) >> > Item(Main ): Collection, data= [ 0x01 ] 1 >> > Application >> > Item(Global): Report ID, data= [ 0x43 ] 67 >> > Item(Global): Report Count, data= [ 0x0f ] 15 >> > Item(Global): Report Size, data= [ 0x08 ] 8 >> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >> > Item(Local ): Usage, data= [ 0x01 ] 1 >> > (null) >> > Item(Main ): Output, data= [ 0x02 ] 2 >> > Data Variable Absolute No_Wrap Linear >> > Preferred_State No_Null_Position >> Non_Volatile >> > Bitfield >> > Item(Global): Report ID, data= [ 0x52 ] 82 >> > Item(Global): Report Count, data= [ 0x0f ] 15 >> > Item(Global): Report Size, data= [ 0x08 ] 8 >> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >> > Item(Local ): Usage, data= [ 0x01 ] 1 >> > (null) >> > Item(Main ): Input, data= [ 0x02 ] 2 >> > Data Variable Absolute No_Wrap Linear >> > Preferred_State No_Null_Position >> Non_Volatile >> > Bitfield >> > Item(Global): Report ID, data= [ 0x42 ] 66 >> > Item(Global): Report Count, data= [ 0x17 ] 23 >> > Item(Global): Report Size, data= [ 0x08 ] 8 >> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >> > Item(Local ): Usage, data= [ 0x01 ] 1 >> > (null) >> > Item(Main ): Input, data= [ 0x02 ] 2 >> > Data Variable Absolute No_Wrap Linear >> > Preferred_State No_Null_Position >> Non_Volatile >> > Bitfield >> > Item(Global): Report ID, data= [ 0x41 ] 65 >> > Item(Global): Report Count, data= [ 0x3f ] 63 >> > Item(Global): Report Size, data= [ 0x08 ] 8 >> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >> > Item(Local ): Usage, data= [ 0x01 ] 1 >> > (null) >> > Item(Main ): Input, data= [ 0x02 ] 2 >> > Data Variable Absolute No_Wrap Linear >> > Preferred_State No_Null_Position >> Non_Volatile >> > Bitfield >> > Item(Global): Report ID, data= [ 0x49 ] 73 >> > Item(Global): Report Count, data= [ 0x3f ] 63 >> > Item(Global): Report Size, data= [ 0x08 ] 8 >> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >> > Item(Local ): Usage, data= [ 0x01 ] 1 >> > (null) >> > Item(Main ): Input, data= [ 0x02 ] 2 >> > Data Variable Absolute No_Wrap Linear >> > Preferred_State No_Null_Position >> Non_Volatile >> > Bitfield >> > Item(Global): Report ID, data= [ 0x45 ] 69 >> > Item(Global): Report Count, data= [ 0x17 ] 23 >> > Item(Global): Report Size, data= [ 0x08 ] 8 >> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >> > Item(Local ): Usage, data= [ 0x01 ] 1 >> > (null) >> > Item(Main ): Input, data= [ 0x02 ] 2 >> > Data Variable Absolute No_Wrap Linear >> > Preferred_State No_Null_Position >> Non_Volatile >> > Bitfield >> > Item(Main ): End Collection, data=none >> > Endpoint Descriptor: >> > bLength 7 >> > bDescriptorType 5 >> > bEndpointAddress 0x01 EP 1 OUT >> > bmAttributes 3 >> > Transfer Type Interrupt >> > Synch Type None >> > Usage Type Data >> > wMaxPacketSize 0x0040 1x 64 bytes >> > bInterval 1 >> > Endpoint Descriptor: >> > bLength 7 >> > bDescriptorType 5 >> > bEndpointAddress 0x82 EP 2 IN >> > bmAttributes 3 >> > Transfer Type Interrupt >> > Synch Type None >> > Usage Type Data >> > wMaxPacketSize 0x0040 1x 64 bytes >> > bInterval 1 >> > Device Status: 0x0001 >> > Self Powered >> > >> >> To begin with, your former code can be summed up to this (with latest >> git PyUSB): >> >> import usb.core >> import usb.util >> import sys >> >> VENDOR_ID = 0x24e9 >> PRODUCT_ID = 0x0824 >> >> device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) >> >> if device is None: >> sys.exit("Could not find Id System Barcode Reader.") >> else: >> print 'Device detected' >> >> device.set_configuration() >> >> device.write(0x01, [0x01]) ---> you probably meant [0x01] or '\x01' >> instead of '0x01' >> print device.read(0x82, 64, 1000) >> >> If you are still getting a read timeout, that is probably because the >> 0x01 command means nothing to the device. >> >> -- >> Best Regards, >> Wander Lairson Costa >> >> >> ------------------------------------------------------------------------------ >> Android apps run on BlackBerry 10 >> Introducing the new BlackBerry 10.2.1 Runtime for Android apps. >> Now with support for Jelly Bean, Bluetooth, Mapview and more. >> Get your Android app in front of a whole new audience. Start now. >> >> http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk >> _______________________________________________ >> pyusb-users mailing list >> pyu...@li... >> https://lists.sourceforge.net/lists/listinfo/pyusb-users >> > > |
From: Setia B. <boe...@gm...> - 2014-02-13 04:06:17
|
I missed one parameter: device.write(0x01, complete_command_packet) print device.read(0x82, 16, 0, 1000) Now I have the same error: usb.core.USBError: [Errno 110] Operation timed out I need to re-read the command reference manual for the device. Kindest regards, Budi ========================= <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> ========================= *Please consider the environment * *before printing this email* On Thu, Feb 13, 2014 at 1:48 PM, Setia Budi <boe...@gm...> wrote: > I re-read the reference manual for the reader and I made few changes on > the data which I need to send. > At the moment I am quite sure about the format of the data which I need to > send (header, device_id, command_id, parameters, crc16). > This is the update for the code > > ====================================================================== > > HEADER = bytearray([0x4D, 0x54, 0x49, 0x43]) > DEVICE_ID = bytearray([0x00]) > COMMAND_ID = bytearray([0x03]) # for retrieving the operation mode > PARAMETERS = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]) > > command_packet = HEADER + DEVICE_ID + COMMAND_ID + PARAMETERS > > checksum = crc16(command_packet) > > complete_command_packet = command_packet + bytearray([checksum & 0xff, > ((checksum >> 8) & 0xFF)]) > > device.write(0x01, complete_command_packet) > print device.read(0x82, 16, 1000) > > ===================================================================== > > I found an different error message when the device.read method is invoked. > > AttributeError: 'NoneType' object has no attribute 'bInterfaceNumber' > > Any idea about the error message? > > Kindest regards, > > Budi > > ========================= > <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> > <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> > > <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> > ========================= > *Please consider the environment * > *before printing this email* > > > On Wed, Feb 12, 2014 at 11:06 PM, Setia Budi <boe...@gm...> wrote: > >> Ok I will give a try tomorrow :) >> Thank you for the advice :) >> >> Budi >> >> ========================= >> <boe...@gm...> <http://goo.gl/T5NDnD> <http://goo.gl/4xmCrj> >> <http://goo.gl/f2Dj7Q> <http://goo.gl/TlJuEd> >> >> <http://goo.gl/d6J1aE> <http://goo.gl/8ezaYx> >> ========================= >> *Please consider the environment * >> *before printing this email* >> >> >> On Wed, Feb 12, 2014 at 9:52 PM, Wander Lairson Costa < >> wan...@gm...> wrote: >> >>> 2014-02-11 20:11 GMT-02:00 Setia Budi <boe...@gm...>: >>> > This is the output for lsusb -v -d 24e9:0824 >>> > >>> > Bus 002 Device 007: ID 24e9:0824 >>> > Device Descriptor: >>> > bLength 18 >>> > bDescriptorType 1 >>> > bcdUSB 1.10 >>> > bDeviceClass 255 Vendor Specific Class >>> > bDeviceSubClass 0 >>> > bDeviceProtocol 255 >>> > bMaxPacketSize0 8 >>> > idVendor 0x24e9 >>> > idProduct 0x0824 >>> > bcdDevice 0.01 >>> > iManufacturer 1 MICROELECTRONICS TECHNOLOGY INC. >>> > iProduct 2 MTI UHF RFID PRODUCT >>> > iSerial 3 1326U0002 >>> > bNumConfigurations 1 >>> > Configuration Descriptor: >>> > bLength 9 >>> > bDescriptorType 2 >>> > wTotalLength 41 >>> > bNumInterfaces 1 >>> > bConfigurationValue 1 >>> > iConfiguration 0 >>> > bmAttributes 0xc0 >>> > Self Powered >>> > MaxPower 500mA >>> > Interface Descriptor: >>> > bLength 9 >>> > bDescriptorType 4 >>> > bInterfaceNumber 0 >>> > bAlternateSetting 0 >>> > bNumEndpoints 2 >>> > bInterfaceClass 3 Human Interface Device >>> > bInterfaceSubClass 0 No Subclass >>> > bInterfaceProtocol 0 None >>> > iInterface 0 >>> > HID Device Descriptor: >>> > bLength 9 >>> > bDescriptorType 33 >>> > bcdHID 1.11 >>> > bCountryCode 0 Not supported >>> > bNumDescriptors 1 >>> > bDescriptorType 34 Report >>> > wDescriptorLength 98 >>> > Report Descriptor: (length is 98) >>> > Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 >>> > (null) >>> > Item(Local ): Usage, data= [ 0x01 ] 1 >>> > (null) >>> > Item(Main ): Collection, data= [ 0x01 ] 1 >>> > Application >>> > Item(Global): Report ID, data= [ 0x43 ] 67 >>> > Item(Global): Report Count, data= [ 0x0f ] 15 >>> > Item(Global): Report Size, data= [ 0x08 ] 8 >>> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >>> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >>> > Item(Local ): Usage, data= [ 0x01 ] 1 >>> > (null) >>> > Item(Main ): Output, data= [ 0x02 ] 2 >>> > Data Variable Absolute No_Wrap Linear >>> > Preferred_State No_Null_Position >>> Non_Volatile >>> > Bitfield >>> > Item(Global): Report ID, data= [ 0x52 ] 82 >>> > Item(Global): Report Count, data= [ 0x0f ] 15 >>> > Item(Global): Report Size, data= [ 0x08 ] 8 >>> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >>> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >>> > Item(Local ): Usage, data= [ 0x01 ] 1 >>> > (null) >>> > Item(Main ): Input, data= [ 0x02 ] 2 >>> > Data Variable Absolute No_Wrap Linear >>> > Preferred_State No_Null_Position >>> Non_Volatile >>> > Bitfield >>> > Item(Global): Report ID, data= [ 0x42 ] 66 >>> > Item(Global): Report Count, data= [ 0x17 ] 23 >>> > Item(Global): Report Size, data= [ 0x08 ] 8 >>> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >>> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >>> > Item(Local ): Usage, data= [ 0x01 ] 1 >>> > (null) >>> > Item(Main ): Input, data= [ 0x02 ] 2 >>> > Data Variable Absolute No_Wrap Linear >>> > Preferred_State No_Null_Position >>> Non_Volatile >>> > Bitfield >>> > Item(Global): Report ID, data= [ 0x41 ] 65 >>> > Item(Global): Report Count, data= [ 0x3f ] 63 >>> > Item(Global): Report Size, data= [ 0x08 ] 8 >>> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >>> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >>> > Item(Local ): Usage, data= [ 0x01 ] 1 >>> > (null) >>> > Item(Main ): Input, data= [ 0x02 ] 2 >>> > Data Variable Absolute No_Wrap Linear >>> > Preferred_State No_Null_Position >>> Non_Volatile >>> > Bitfield >>> > Item(Global): Report ID, data= [ 0x49 ] 73 >>> > Item(Global): Report Count, data= [ 0x3f ] 63 >>> > Item(Global): Report Size, data= [ 0x08 ] 8 >>> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >>> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >>> > Item(Local ): Usage, data= [ 0x01 ] 1 >>> > (null) >>> > Item(Main ): Input, data= [ 0x02 ] 2 >>> > Data Variable Absolute No_Wrap Linear >>> > Preferred_State No_Null_Position >>> Non_Volatile >>> > Bitfield >>> > Item(Global): Report ID, data= [ 0x45 ] 69 >>> > Item(Global): Report Count, data= [ 0x17 ] 23 >>> > Item(Global): Report Size, data= [ 0x08 ] 8 >>> > Item(Global): Logical Minimum, data= [ 0x00 ] 0 >>> > Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >>> > Item(Local ): Usage, data= [ 0x01 ] 1 >>> > (null) >>> > Item(Main ): Input, data= [ 0x02 ] 2 >>> > Data Variable Absolute No_Wrap Linear >>> > Preferred_State No_Null_Position >>> Non_Volatile >>> > Bitfield >>> > Item(Main ): End Collection, data=none >>> > Endpoint Descriptor: >>> > bLength 7 >>> > bDescriptorType 5 >>> > bEndpointAddress 0x01 EP 1 OUT >>> > bmAttributes 3 >>> > Transfer Type Interrupt >>> > Synch Type None >>> > Usage Type Data >>> > wMaxPacketSize 0x0040 1x 64 bytes >>> > bInterval 1 >>> > Endpoint Descriptor: >>> > bLength 7 >>> > bDescriptorType 5 >>> > bEndpointAddress 0x82 EP 2 IN >>> > bmAttributes 3 >>> > Transfer Type Interrupt >>> > Synch Type None >>> > Usage Type Data >>> > wMaxPacketSize 0x0040 1x 64 bytes >>> > bInterval 1 >>> > Device Status: 0x0001 >>> > Self Powered >>> > >>> >>> To begin with, your former code can be summed up to this (with latest >>> git PyUSB): >>> >>> import usb.core >>> import usb.util >>> import sys >>> >>> VENDOR_ID = 0x24e9 >>> PRODUCT_ID = 0x0824 >>> >>> device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) >>> >>> if device is None: >>> sys.exit("Could not find Id System Barcode Reader.") >>> else: >>> print 'Device detected' >>> >>> device.set_configuration() >>> >>> device.write(0x01, [0x01]) ---> you probably meant [0x01] or '\x01' >>> instead of '0x01' >>> print device.read(0x82, 64, 1000) >>> >>> If you are still getting a read timeout, that is probably because the >>> 0x01 command means nothing to the device. >>> >>> -- >>> Best Regards, >>> Wander Lairson Costa >>> >>> >>> ------------------------------------------------------------------------------ >>> Android apps run on BlackBerry 10 >>> Introducing the new BlackBerry 10.2.1 Runtime for Android apps. >>> Now with support for Jelly Bean, Bluetooth, Mapview and more. >>> Get your Android app in front of a whole new audience. Start now. >>> >>> http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> pyusb-users mailing list >>> pyu...@li... >>> https://lists.sourceforge.net/lists/listinfo/pyusb-users >>> >> >> > |
From: Alan J. A. S. <al...@ho...> - 2014-02-13 12:39:47
|
Some time ago I have problems with one device.I was reading 5 bytes and the device sends 6, and I was getting the "time out". Try ever read 64 bytes (the max lenght of the endpoint).There are not problems read more that the device sends; but if you try read 16 andthe device sends 17 it gives a timeout. device.write(0x01, complete_command_packet)print device.read(0x82, 64, 0, 1000) Date: Thu, 13 Feb 2014 15:06:08 +1100 From: boe...@gm... To: pyu...@li... Subject: Re: [pyusb-users] Reading RFID tag using MTI RU-824 via pylab I missed one parameter: device.write(0x01, complete_command_packet)print device.read(0x82, 16, 0, 1000) Now I have the same error:áusb.core.USBError: [Errno 110] Operation timed out I need to re-read the command reference manual for the device. Kindest regards,Budi ========================= áá á á á =========================Please consider the environmentá before printing this email On Thu, Feb 13, 2014 at 1:48 PM, Setia Budi <boe...@gm...> wrote: I re-read the reference manual for the reader and I made few changes on the data which I need to send.At the moment I am quite sure about the format of the data which I need to send (header, device_id, command_id, parameters, crc16). This is the update for the code ====================================================================== HEADER = bytearray([0x4D, 0x54, 0x49, 0x43])DEVICE_ID = bytearray([0x00]) COMMAND_ID = bytearray([0x03]) # for retrieving the operation modePARAMETERS = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]) command_packet = HEADER + DEVICE_ID + COMMAND_ID + PARAMETERS checksum = crc16(command_packet) complete_command_packet = command_packet + bytearray([checksum & 0xff, ((checksum >> 8) & 0xFF)]) device.write(0x01, complete_command_packet) print device.read(0x82, 16, 1000) ===================================================================== I found an different error message when the device.read method is invoked. AttributeError: 'NoneType' object has no attribute 'bInterfaceNumber' Any idea about the error message? Kindest regards, Budi =========================áá á á á =========================Please consider the environmentá before printing this email On Wed, Feb 12, 2014 at 11:06 PM, Setia Budi <boe...@gm...> wrote: Ok I will give a try tomorrow :)Thank you for the advice :)Budi ========================= áá á á á =========================Please consider the environmentá before printing this email On Wed, Feb 12, 2014 at 9:52 PM, Wander Lairson Costa <wan...@gm...> wrote: 2014-02-11 20:11 GMT-02:00 Setia Budi <boe...@gm...>: > This is the output for lsusb -v -d 24e9:0824 > > Bus 002 Device 007: ID 24e9:0824 > Device Descriptor: > á bLength á á á á á á á á18 > á bDescriptorType á á á á 1 > á bcdUSB á á á á á á á 1.10 > á bDeviceClass á á á á á255 Vendor Specific Class > á bDeviceSubClass á á á á 0 > á bDeviceProtocol á á á 255 > á bMaxPacketSize0 á á á á 8 > á idVendor á á á á á 0x24e9 > á idProduct á á á á á0x0824 > á bcdDevice á á á á á á0.01 > á iManufacturer á á á á á 1 MICROELECTRONICS TECHNOLOGY INC. > á iProduct á á á á á á á á2 MTI UHF RFID PRODUCT > á iSerial á á á á á á á á 3 1326U0002 > á bNumConfigurations á á á1 > á Configuration Descriptor: > á á bLength á á á á á á á á 9 > á á bDescriptorType á á á á 2 > á á wTotalLength á á á á á 41 > á á bNumInterfaces á á á á á1 > á á bConfigurationValue á á 1 > á á iConfiguration á á á á á0 > á á bmAttributes á á á á 0xc0 > á á á Self Powered > á á MaxPower á á á á á á á500mA > á á Interface Descriptor: > á á á bLength á á á á á á á á 9 > á á á bDescriptorType á á á á 4 > á á á bInterfaceNumber á á á á0 > á á á bAlternateSetting á á á 0 > á á á bNumEndpoints á á á á á 2 > á á á bInterfaceClass á á á á 3 Human Interface Device > á á á bInterfaceSubClass á á á0 No Subclass > á á á bInterfaceProtocol á á á0 None > á á á iInterface á á á á á á á0 > á á á á HID Device Descriptor: > á á á á á bLength á á á á á á á á 9 > á á á á á bDescriptorType á á á á33 > á á á á á bcdHID á á á á á á á 1.11 > á á á á á bCountryCode á á á á á á0 Not supported > á á á á á bNumDescriptors á á á á 1 > á á á á á bDescriptorType á á á á34 Report > á á á á á wDescriptorLength á á á98 > á á á á á Report Descriptor: (length is 98) > á á á á á á Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 > á á á á á á á á á á á á á á (null) > á á á á á á Item(Local ): Usage, data= [ 0x01 ] 1 > á á á á á á á á á á á á á á (null) > á á á á á á Item(Main á): Collection, data= [ 0x01 ] 1 > á á á á á á á á á á á á á á Application > á á á á á á Item(Global): Report ID, data= [ 0x43 ] 67 > á á á á á á Item(Global): Report Count, data= [ 0x0f ] 15 > á á á á á á Item(Global): Report Size, data= [ 0x08 ] 8 > á á á á á á Item(Global): Logical Minimum, data= [ 0x00 ] 0 > á á á á á á Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > á á á á á á Item(Local ): Usage, data= [ 0x01 ] 1 > á á á á á á á á á á á á á á (null) > á á á á á á Item(Main á): Output, data= [ 0x02 ] 2 > á á á á á á á á á á á á á á Data Variable Absolute No_Wrap Linear > á á á á á á á á á á á á á á Preferred_State No_Null_Position Non_Volatile > Bitfield > á á á á á á Item(Global): Report ID, data= [ 0x52 ] 82 > á á á á á á Item(Global): Report Count, data= [ 0x0f ] 15 > á á á á á á Item(Global): Report Size, data= [ 0x08 ] 8 > á á á á á á Item(Global): Logical Minimum, data= [ 0x00 ] 0 > á á á á á á Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > á á á á á á Item(Local ): Usage, data= [ 0x01 ] 1 > á á á á á á á á á á á á á á (null) > á á á á á á Item(Main á): Input, data= [ 0x02 ] 2 > á á á á á á á á á á á á á á Data Variable Absolute No_Wrap Linear > á á á á á á á á á á á á á á Preferred_State No_Null_Position Non_Volatile > Bitfield > á á á á á á Item(Global): Report ID, data= [ 0x42 ] 66 > á á á á á á Item(Global): Report Count, data= [ 0x17 ] 23 > á á á á á á Item(Global): Report Size, data= [ 0x08 ] 8 > á á á á á á Item(Global): Logical Minimum, data= [ 0x00 ] 0 > á á á á á á Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > á á á á á á Item(Local ): Usage, data= [ 0x01 ] 1 > á á á á á á á á á á á á á á (null) > á á á á á á Item(Main á): Input, data= [ 0x02 ] 2 > á á á á á á á á á á á á á á Data Variable Absolute No_Wrap Linear > á á á á á á á á á á á á á á Preferred_State No_Null_Position Non_Volatile > Bitfield > á á á á á á Item(Global): Report ID, data= [ 0x41 ] 65 > á á á á á á Item(Global): Report Count, data= [ 0x3f ] 63 > á á á á á á Item(Global): Report Size, data= [ 0x08 ] 8 > á á á á á á Item(Global): Logical Minimum, data= [ 0x00 ] 0 > á á á á á á Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > á á á á á á Item(Local ): Usage, data= [ 0x01 ] 1 > á á á á á á á á á á á á á á (null) > á á á á á á Item(Main á): Input, data= [ 0x02 ] 2 > á á á á á á á á á á á á á á Data Variable Absolute No_Wrap Linear > á á á á á á á á á á á á á á Preferred_State No_Null_Position Non_Volatile > Bitfield > á á á á á á Item(Global): Report ID, data= [ 0x49 ] 73 > á á á á á á Item(Global): Report Count, data= [ 0x3f ] 63 > á á á á á á Item(Global): Report Size, data= [ 0x08 ] 8 > á á á á á á Item(Global): Logical Minimum, data= [ 0x00 ] 0 > á á á á á á Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > á á á á á á Item(Local ): Usage, data= [ 0x01 ] 1 > á á á á á á á á á á á á á á (null) > á á á á á á Item(Main á): Input, data= [ 0x02 ] 2 > á á á á á á á á á á á á á á Data Variable Absolute No_Wrap Linear > á á á á á á á á á á á á á á Preferred_State No_Null_Position Non_Volatile > Bitfield > á á á á á á Item(Global): Report ID, data= [ 0x45 ] 69 > á á á á á á Item(Global): Report Count, data= [ 0x17 ] 23 > á á á á á á Item(Global): Report Size, data= [ 0x08 ] 8 > á á á á á á Item(Global): Logical Minimum, data= [ 0x00 ] 0 > á á á á á á Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 > á á á á á á Item(Local ): Usage, data= [ 0x01 ] 1 > á á á á á á á á á á á á á á (null) > á á á á á á Item(Main á): Input, data= [ 0x02 ] 2 > á á á á á á á á á á á á á á Data Variable Absolute No_Wrap Linear > á á á á á á á á á á á á á á Preferred_State No_Null_Position Non_Volatile > Bitfield > á á á á á á Item(Main á): End Collection, data=none > á á á Endpoint Descriptor: > á á á á bLength á á á á á á á á 7 > á á á á bDescriptorType á á á á 5 > á á á á bEndpointAddress á á 0x01 áEP 1 OUT > á á á á bmAttributes á á á á á á3 > á á á á á Transfer Type á á á á á áInterrupt > á á á á á Synch Type á á á á á á á None > á á á á á Usage Type á á á á á á á Data > á á á á wMaxPacketSize á á 0x0040 á1x 64 bytes > á á á á bInterval á á á á á á á 1 > á á á Endpoint Descriptor: > á á á á bLength á á á á á á á á 7 > á á á á bDescriptorType á á á á 5 > á á á á bEndpointAddress á á 0x82 áEP 2 IN > á á á á bmAttributes á á á á á á3 > á á á á á Transfer Type á á á á á áInterrupt > á á á á á Synch Type á á á á á á á None > á á á á á Usage Type á á á á á á á Data > á á á á wMaxPacketSize á á 0x0040 á1x 64 bytes > á á á á bInterval á á á á á á á 1 > Device Status: á á 0x0001 > á Self Powered > To begin with, your former code can be summed up to this (with latest git PyUSB): import usb.core import usb.util import sys VENDOR_ID = 0x24e9 PRODUCT_ID = 0x0824 device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) if device is None: á á sys.exit("Could not find Id System Barcode Reader.") else: á á print 'Device detected' device.set_configuration() device.write(0x01, [0x01]) ---> you probably meant [0x01] or '\x01' instead of '0x01' print device.read(0x82, 64, 1000) If you are still getting a read timeout, that is probably because the 0x01 command means nothing to the device. -- Best Regards, Wander Lairson Costa ------------------------------------------------------------------------------ Android apps run on BlackBerry 10 Introducing the new BlackBerry 10.2.1 Runtime for Android apps. Now with support for Jelly Bean, Bluetooth, Mapview and more. Get your Android app in front of a whole new audience. áStart now. http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk _______________________________________________ pyusb-users mailing list pyu...@li... https://lists.sourceforge.net/lists/listinfo/pyusb-users ------------------------------------------------------------------------------ Android apps run on BlackBerry 10 Introducing the new BlackBerry 10.2.1 Runtime for Android apps. Now with support for Jelly Bean, Bluetooth, Mapview and more. Get your Android app in front of a whole new audience. Start now. http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk _______________________________________________ pyusb-users mailing list pyu...@li... https://lists.sourceforge.net/lists/listinfo/pyusb-users |