Hello Libby,

I don't know your device, but I suspect it is using BCD for the lower nibble and some other info in the upper one.
Another hint the most significant bit could be a parity bit...
More samples could be helpfull...

BR, Jacques-D.

for h in ("31","34","b3","31","b5","31","31","b0","b5","0d","8a"):
...     "{:2s} {:04b} {:04b}".format(h, int(h,16)>>4, int(h,16)&15 )
...
'31 0011 0001'
'34 0011 0100'
'b3 1011 0011'
'31 0011 0001'
'b5 1011 0101'
'31 0011 0001'
'31 0011 0001'
'b0 1011 0000'
'b5 1011 0101'
'0d 0000 1101'
'8a 1000 1010'


The last 2 lines could be "OD"/"0A": "CR/LF"



On 28. 07. 13 23:15, Elizabeth Tolman wrote:
Hello,
You have to send the initialization code like this: dev.ctrl_transfer(0x21,0x09,0,0x05,[96,9,0,0,3]). After that, the device will constantly send reports every .012 seconds. Usually, these reports contain no data and look like this: F0 00 00 00 00 00 00 00. Every so often, it will send a data point as a sequence of 11 messages. I wasn't able to completely decode these messages (and it would be great if someone recognizes what they mean!), but this is an example, which means -1.4315 V DC:

F1 31 00 00 00 00 00 00
F1 34 00 00 00 00 00 00
F1 B3 00 00 00 00 00 00
F1 31 00 00 00 00 00 00
F1 B5 00 00 00 00 00 00
F1 31 00 00 00 00 00 00
F1 31 00 00 00 00 00 00
F1 B0 00 00 00 00 00 00
F1 B5 00 00 00 00 00 00
F1 0D 00 00 00 00 00 00
F1 8A 00 00 00 00 00 00

The fourth digits of the first 5 messages give the digits of the voltage, and I think the 9th message gives the sign (B5 negative, 31 positive), but I don't know what the other messages mean.

-Libby


On Sun, Jul 21, 2013 at 5:35 PM, Ioakeim Tellidis <li...@e-noesis.com <mailto:li...@e-noesis.com>> wrote:

    Elizabeth,
    Why dont you update your code including the initialization code
    for your instrument? It may be usuful in the future if somebody
    try to search the list archives for help. Well, this is just a
    suggestion.


    On Fri, Jul 19, 2013 at 4:30 PM, Elizabeth Tolman
    <etol...@princeton.edu <mailto:etol...@princeton.edu>> wrote:

        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 <mailto:xiaof...@gmail.com>> wrote:

            On Thu, Jul 18, 2013 at 9:40 PM, Elizabeth Tolman
            <etol...@princeton.edu <mailto: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
            <mailto: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
        <mailto: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
    <mailto: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

------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent 
caught up. So what steps can you take to put your SQL databases under 
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to