Thank you all so much for your help! I can now get the multimeter to talk
to me. It turns out you have to send it a message before it will send you
reports. I'm still working on the best way to understand and record these
reports, though, so I may need more help later, but for now things are
going well.
On Fri, Jul 19, 2013 at 4:35 AM, Xiaofan Chen <xiaof...@gmail.com> wrote:
> On Thu, Jul 18, 2013 at 9:40 PM, Elizabeth Tolman <etol...@princeton.edu>
> wrote:
> >
> > I don't know if this is helpful or not, but I have another software
> > program that reads from this multimeter. I can't look at the source code
> > because it's a .exe file, but I used USBlyzer to look at the requests it
> was
> > sending across the USB cable once it found the device. I was thinking
> maybe
> > I could somehow replicate these commands. Note that all this happened
> when
> > a different driver was installed (libusb 1.2.6.0 has you install a new
> > driver for the device you want to use). This is screenshot of the most
> > important part; and I've attached the .ulz file of the whole exchange:
>
> You will have to carry out the revers engineering by yourself.
> And this is really not a pyusb or libusb-win32 problem. You have
> to understand the communication protocol before using pyusb.
>
> Since this is an HID device (bInterfaceClass: 3), you will find
> the USB HID spec useful, especially Chapter 7.
>
> You should read the HID spec here. It is quite useful,
> especially Chapter 7.
> http://www.usb.org/developers/devclass_docs/HID1_11.pdf
>
> Some cheat codes for you, from Linux USB developer
> Alan Stern. It might help you to translate HID report
> read/write to control IN/OUT transfer.
>
> HID device also uses Interrupt IN/OUT transfer.
>
> Standard device requests
>
> RQtype Req Value Index Length
> ----------------------------------------------
> 0 1 dev-feat 0 0 Clear device feature
> 0 3 dev-feat 0 0 Set device feature
> 0 5 address 0 0 Set device address
> 0 9 config-value 0 0 Set configuration
> 1 b altsetting intf 0 Set interface
> 1 1 intf-feat intf 0 Clear interface feature
> 1 3 intf-feat intf 0 Set interface feature
> 2 1 ep-feat ep 0 Clear endpoint feature
> 2 3 ep-feat ep 0 Set endpoint feature
> 80 0 0 0 2 Get device status
> 80 6 descr-type/ 0/ len Get descriptor
> index lang-ID
> 80 8 0 0 1 Get configuration
> 81 0 0 intf 2 Get interface status
> 81 a 0 intf 1 Get interface (altsetting)
> 82 0 0 ep 2 Get endpoint status
>
> Device features: 0 = self-powered, 1 = remote wakeup
> Interface features: None
> Endpoint features: 0 = halt
> Descriptor types: 1 = device, 2 = config, 3 = string, (4 = interface,
> 5 = endpoint), 6 = device qualifier, 7 = other-speed config
>
>
>
> Hub class requests
>
> RQtype Req Value Index Length
> ----------------------------------------------
> 20 1 hub-feat 0 0 Clear hub feature
> 20 3 hub-feat 0 0 Set hub feature
> 23 1 port-feat sel/ 0 Clear port feature
> port
> 23 3 port-feat sel/ 0 Set port feature
> port
> a0 0 0 0 4 Get hub status
> a0 6 2900 0 len Get hub descriptor
> a3 0 0 port 4 Get port status
>
> Hub features: 0 = hub local power, 1 = hub over current,
> 10 = ch hub local power, 11 = ch hub over current
> Port features: 0 = connect, 1 = enable, 2 = suspend, 3 = over current,
> 4 = reset, 8 = power, 9 = low speed, a = high speed,
> b = test mode, c = indicator,
> 10 = ch connect, 11 = ch enable, 12 = ch suspend,
> 13 = ch over current, 14 = ch reset
> Selector is used for port indicators
>
>
>
> HID class requests
>
> RQtype Req Value Index Length
> ----------------------------------------------
> 21 9 report-type/ID intf len Set report
> 21 a duration/ID intf 0 Set idle
> 21 b proto intf 0 Set protocol
> 81 6 descr-type/set intf len Get class descriptor
> a1 1 report-type/ID intf len Get report
> a1 2 0/ID intf 1 Get idle
> a1 3 0 intf 1 Get protocol
>
> Report type: 1 = input, 2 = output, 3 = feature
> Descriptor type: 21 = HID, 22 = Report, 23 = Physical
> Protocol: 0 = boot, 1 = report
>
> --
> Xiaofan
>
>
> ------------------------------------------------------------------------------
> See everything from the browser to the database with AppDynamics
> Get end-to-end visibility with application monitoring from AppDynamics
> Isolate bottlenecks and diagnose root cause in seconds.
> Start your free trial of AppDynamics Pro today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
> _______________________________________________
> pyusb-users mailing list
> pyusb-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users