I appreciate your end goal and understand how hard that could be. In any
case, this now may be going beyond the scope of what this list is for. If so
just tell me and I'll stop. But I did get somewhere. I can now write to the
device but I can't read from it yet.

I found in the manual to the device:

Command       | Description          | bRequest | Direction |
StringMessage | Send string messages | 0x80     | In/Out    |
                to the device

RawData       | Return raw data      | 0x81     | In        |
                from the device

So I tried
print dev.ctrl_transfer(0x40,0x80,0,0, MyCommand)

The command did return the length of the command and the command was
executed by the device. WOO HOO!

But I can't seem to figure out how to get the response. For one thing, the
command I sent also sent a response...somewhere. I also tried:

print dev.ctrl_transfer(0x40,0x81,0,0, len(MyCommand))

to get a response and that returns an error in line 653 of ctrl_transfer in
core.pyc: "TypeError: 'int' object is not iterable"

BTW your code to calculate bmRequestType also returned 0x40.

-John




On Fri, Jul 16, 2010 at 11:08 AM, Wander Lairson
<wander.lair...@gmail.com>wrote:

> 2010/7/16 John Harrison <johnharrison...@gmail.com>:
> > Perhaps I am not reading the right parts of the documentation but I can't
> > figure out how to write to my device even given your hints about my
> device
> > not having endpoints. Frankly I don't even know what an endpoint is. I
> was
> > hoping not to have to know. :-) I just need to send some simple strings
> to
> > my device and get back some floats.
>
> Getting PyUSB users talking to USB devices without USB knowledge is my
> ultimate goal, but it is harder to do than it sounds. I have some
> ideas for common
> cases which I intend to implement in the future.
>
> I don't know much of your device, but I guess you have to use
> ctrl_transfer to send and receive to/from it.
> The point is that control transfers are the most complicated type of
> transfer in the USB standard,
> because it is a structured transfer. Here is an example from my test
> firmware:
>
> import usb.core
> import usb.util
>
> dev = usb.core.find(idVendor=0xfffe)
>
> msg = 'test'
>
> bmRequestType = usb.util.build_request_type(usb.util.CTRL_OUT,
>
> usb.util.CTRL_TYPE_VENDOR,
>
> usb.util.CTRL_RECIPIENT_DEVICE)
>
> dev.ctrl_transfer(bmRequestType, CTRL_LOOPBACK_WRITE, 0, 0, msg)
>
> CTRL_LOOPBACK_WRITE is a private request that I implemented in the
> firmware. If I am right about your device, you will need to know from
> some kind of datesheet what requests your device implement.
>
> >
> > Also how can I issue my own GET_STRING request to get a description of a
> > serial number, for example?
>
> Actually, PyUSB will implement a get_string function in the near
> future, it is just not implemented right now (but 0.4 version does).
> You may implement it using ctrl_transfer method, as GET_STRING is
> nothing else than a kind of standard control request, but I think this
> is not related to your issue.
>
> >
> > On Fri, Jul 16, 2010 at 8:43 AM, Wander Lairson <
> wander.lair...@gmail.com>
> > wrote:
> >>
> >> 2010/7/16 John Harrison <johnharrison...@gmail.com>:
> >> > Running testlibusb-win.exe I see:
> >> >
> >> > DLL version:    1.2.0.0
> >> > Driver version:    1.2.0.0
> >> >
> >> > bus/device  idVendor/idProduct
> >> > bus-0/\\.\libusb0-0002--0x09db-0x00f9     09DB/00F9
> >> > - Manufacturer : Measurement Computing
> >> > - Product      : USB-2001-TC
> >> > - Serial Number: 014F0F9C
> >> >   wTotalLength:         18
> >> >   bNumInterfaces:       1
> >> >   bConfigurationValue:  1
> >> >   iConfiguration:       0
> >> >   bmAttributes:         80h
> >> >   MaxPower:             250
> >> >     bInterfaceNumber:   0
> >> >     bAlternateSetting:  0
> >> >     bNumEndpoints:      0
> >> >     bInterfaceClass:    255
> >> >     bInterfaceSubClass: 255
> >> >     bInterfaceProtocol: 0
> >> >     iInterface:         0
> >> >
> >> > The product and Manufacturer match the device I am trying to
> communicate
> >> > with. BTW these values seem different with pyUSB. For example
> >> >
> >> > dev = usb.core.find(idVendor=0x09db, idProduct=0x00f9)
> >> > dev.iSerialNumber
> >> >
> >> > returns the value 3.
> >>
> >> I guess testlibusb-win issues a GET_STRING request over the value 3 to
> >> get a description of the serial number. Therefore it is ok.
> >> Now backing to your original problem, your device doesn't have any
> >> endpoints, this is because find_descriptor returned None and the
> >> assertion failed. Maybe your device only talks through endpoint 0 (a
> >> control endpoint that is kind of built-in).
> >>
> >> >
> >> > -John
> >> >
> >> > On Thu, Jul 15, 2010 at 6:02 PM, Xiaofan Chen <xiaof...@gmail.com>
> >> > wrote:
> >> >>
> >> >> On Fri, Jul 16, 2010 at 2:12 AM, Wander Lairson
> >> >> <wander.lair...@gmail.com> wrote:
> >> >> > 2010/7/15 John Harrison <johnharrison...@gmail.com>:
> >> >> >> libusb-win32-bin-1.2.0.0\bin\x86>testlibusb.exe
> >> >> >> Dev #0: 0000 - 0000
> >> >> >>   Dev #2: Measurement Computing - USB-2001-TC
> >> >> >>
> >> >> >> Dev #2 is the correct name for my device.
> >> >> >
> >> >> > Oh, sorry, I mentioned the wrong test app. I don't remember its
> name
> >> >> > and I don't have an Windows machine right now, but I mean the test
> >> >> > application with graphical interface, which dumps all device
> >> >> > descriptors...
> >> >>
> >> >> testlibusb-win.exe
> >> >>
> >> >> To John:
> >> >>
> >> >> +++++++++++++
> >> >> http://sourceforge.net/apps/trac/libusb-win32/wiki
> >> >> Please describe your problems and your system as precise as possible
> >> >> (OS, service packs, version of libusb-win32, type of device, output
> of
> >> >> "testlibusb-win.exe", etc.). This will make solving problems a lot
> >> >> easier.
> >> >> +++++++++++++
> >> >>
> >> >> BTW, if you have not done so, please update to libusb-win32 1.2.0.0.
> >> >>
> >> >> --
> >> >> Xiaofan http://sourceforge.net/projects/libusb-win32/
> >> >>
> >> >>
> >> >>
> >> >>
> ------------------------------------------------------------------------------
> >> >> This SF.net email is sponsored by Sprint
> >> >> What will you do first with EVO, the first 4G phone?
> >> >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> >> >> _______________________________________________
> >> >> pyusb-users mailing list
> >> >> pyusb-users@lists.sourceforge.net
> >> >> https://lists.sourceforge.net/lists/listinfo/pyusb-users
> >> >
> >> >
> >> >
> >> >
> >> >
> ------------------------------------------------------------------------------
> >> > This SF.net email is sponsored by Sprint
> >> > What will you do first with EVO, the first 4G phone?
> >> > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> >> > _______________________________________________
> >> > pyusb-users mailing list
> >> > pyusb-users@lists.sourceforge.net
> >> > https://lists.sourceforge.net/lists/listinfo/pyusb-users
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> Best Regards,
> >> Wander Lairson Costa
> >>
> >>
> >>
> ------------------------------------------------------------------------------
> >> This SF.net email is sponsored by Sprint
> >> What will you do first with EVO, the first 4G phone?
> >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> >> _______________________________________________
> >> pyusb-users mailing list
> >> pyusb-users@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/pyusb-users
> >
> >
> >
> > --
> > John
> > http://alumni.media.mit.edu/~harrison/<http://alumni.media.mit.edu/%7Eharrison/>
> >
> >
> ------------------------------------------------------------------------------
> > This SF.net email is sponsored by Sprint
> > What will you do first with EVO, the first 4G phone?
> > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> > _______________________________________________
> > pyusb-users mailing list
> > pyusb-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/pyusb-users
> >
> >
>
>
>
> --
> Best Regards,
> Wander Lairson Costa
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> pyusb-users mailing list
> pyusb-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to