Mark--

To add to Ian's response, the HID POS Usage Tables (
http://www.usb.org/developers/hidpage/pos1_02.pdf) will help you decipher
what the HID kernel module is telling you. Check out "Section 4 Weighing
Devices (0x8D)" for the Report IDs, which will put context to the data that
you receive from the HID driver.

I'm working on a similar project using a Dymo Pelouze 25 lb. Postal Scale.

Best of luck!

--Jared

On Mon, Nov 3, 2014 at 2:44 PM, Ian Daniher <it.dani...@gmail.com> wrote:

> 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
>
>
------------------------------------------------------------------------------
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to