If you haven't already, I'd start by generating large log files of the
scales interacting with the vendor-provided software. It's easy to do this
on Linux using https://www.kernel.org/doc/Documentation/usb/usbmon.txt.

Also, you have a USB HID device, which is a shortpath used by many vendors
for "driverless" operation. Unfortunately this will make direct PyUSB
interface slightly obnoxious. I'd check out
http://pythonic-wisdom.blogspot.com/2009/07/usb-hid-with-linux-and-python.html
and continue the search from there, looking less at PyUSB and perhaps more
at the source of existing Python+USB+HID projects.

BR,
Ian



On Mon, Nov 3, 2014 at 2:34 PM, Mark McClure <markfmccl...@gmail.com> wrote:

> Wander and all users,
>
> Thank you for getting back to me. As you can tell, all of this is foreign
> to me since I'm a very novice programmer.  When you say poll the USB POV,
> do you mean "read" data from the device?
>
> Here's what I tried as I removed jelly beans from a scale over 10 seconds:
>
> import sys
> import usb.core
> import usb.util
> import time
>
> dev = usb.core.find(idVendor = 0x0DBC, idProduct = 0x0005)
> if dev is None:
>     raise ValueError('Device not found')
>
> dev.set_configuration()
>
> endpoint = dev[0][(0,0)][0]
>
> timestep = 0
>
> while timestep <= 10:
>     data = dev.read(endpoint.bEndpointAddress,
>            endpoint.wMaxPacketSize)
>     print(data)
>     time.sleep(1)
>     timestep += 1
>
>
> The output was this:
>
> array('B', [0, 0, 87, 0, 0, 0, 0, 0])
> array('B', [0, 0, 0, 0, 0, 0, 0, 0])
> array('B', [0, 0, 98, 0, 0, 0, 0, 0])
> array('B', [0, 0, 0, 0, 0, 0, 0, 0])
> array('B', [0, 0, 98, 0, 0, 0, 0, 0])
> array('B', [0, 0, 0, 0, 0, 0, 0, 0])
> array('B', [0, 0, 98, 0, 0, 0, 0, 0])
> array('B', [0, 0, 0, 0, 0, 0, 0, 0])
> array('B', [0, 0, 98, 0, 0, 0, 0, 0])
> array('B', [0, 0, 0, 0, 0, 0, 0, 0])
> array('B', [0, 0, 96, 0, 0, 0, 0, 0])
>
> But I don't have any idea what this means, except that I'm guessing that
> changes in weight data were not recorded.
>
> Has anyone worked on a device like this?  Some sample code might really
> help me make sense of everything.
>
> On Mon, Nov 3, 2014 at 2:31 AM, Wander Lairson Costa <
> wander.lair...@gmail.com> wrote:
>
>> 2014-11-02 1:54 GMT-02:00 Mark McClure <markfmccl...@gmail.com>:
>> > Hello list:
>> >
>> > I have three A&D EJ-3000 scales that I want to simultaneously acquire
>> data
>> > from every 1 minute over 24-hr periods.  All scales have a USB
>> interface.
>> > I've started working through the pyusb tutorial, but before I confuse
>> myself
>> > any further, I thought I'd ask if what I want to do is even possible?
>> Tech
>> > support at A&D told me that retrieving weight data from the scales
>> > automatically (i.e. without pushing the print button on the scales)
>> could
>> > not be done with USB because the interface was uni-directional.
>> Instead,
>> > they suggested that I switch to RS-232.  Is this true, and if so why?
>> >
>>
>> Hi,
>>
>> It really depends on how the firmware behaves, from USB POV, you can
>> always poll the device for data each minute. But might be other
>> constraints that I am not aware of.
>>
>> > I printed the configuration of the scale after installing pyusb and
>> starting
>> > the tutorial.
>> >
>> >
>> > CONFIGURATION 1: 20 mA ===================================
>> >    bLength              :    0x9 (9 bytes)
>> >    bDescriptorType      :    0x2 Configuration
>> >    wTotalLength         :   0x2d (45 bytes)
>> >    bNumInterfaces       :    0x1
>> >    bConfigurationValue  :    0x1
>> >    iConfiguration       :    0x0
>> >    bmAttributes         :   0x80 Bus Powered
>> >    bMaxPower            :    0xa (20 mA)
>> >     INTERFACE 0: Human Interface Device ====================
>> >      bLength            :    0x9 (9 bytes)
>> >      bDescriptorType    :    0x4 Interface
>> >      bInterfaceNumber   :    0x0
>> >      bAlternateSetting  :    0x0
>> >      bNumEndpoints      :    0x2
>> >      bInterfaceClass    :    0x3 Human Interface Device
>> >      bInterfaceSubClass :    0x0
>> >      bInterfaceProtocol :    0x1
>> >      iInterface         :    0x0
>> >       ENDPOINT 0x81: Interrupt IN ==========================
>> >        bLength          :    0x7 (7 bytes)
>> >        bDescriptorType  :    0x5 Endpoint
>> >        bEndpointAddress :   0x81 IN
>> >        bmAttributes     :    0x3 Interrupt
>> >        wMaxPacketSize   :   0x40 (64 bytes)
>> >        bInterval        :    0x4
>> >       ENDPOINT 0x2: Interrupt OUT ==========================
>> >        bLength          :    0x7 (7 bytes)
>> >        bDescriptorType  :    0x5 Endpoint
>> >        bEndpointAddress :    0x2 OUT
>> >        bmAttributes     :    0x3 Interrupt
>> >        wMaxPacketSize   :   0x40 (64 bytes)
>> >        bInterval        :    0x4
>> >
>> > Any guidance would be greatly appreciated.
>> >
>>
>>
>> --
>> Best Regards,
>> Wander Lairson Costa
>>
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> pyusb-users mailing list
>> pyusb-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>>
>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> pyusb-users mailing list
> pyusb-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>
>
------------------------------------------------------------------------------
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to