Hi,

This is based on a script that I downloaded with Porus. I think it was
called porustest.py: http://prdownload.berlios.de/porus/porus-0.1.1.tgz

I recommend you to test it. It has a command interface that is useful for
debugging.

Self is the command interpreter object,

def getdevs():
    """Returns a flat array of configs on all busses -- ie an
    array of tuples of (bus,dev,conf).  Array is guaranteed to be
    sorted by bus and dev.  Used for giving numbers to configs"""
    rtn=[]
    for b in usb.busses():
    for d in b.devices:
        for c in d.configurations:
        rtn.append((b,d,c))
    return rtn

I don't know much about the serial part, but I would look into how
serial.Serial(port) is implemented. May be you need to change it a bit if
you want to open a device by PID and VID. I guess that it opens the device
and claims an interface, but I haven't used that library. I hope this helps.
Ah, I forgot



On Wed, Jun 17, 2009 at 9:27 AM, Brendan Simon (eTRIX) <
brendan.si...@etrix.com.au> wrote:

> Thanks Santiago :)
> Unfortunately I'm new to usb so it's not making too much sense at the
> moment.
>
> What is the class object that self is referring to here ?
>
> Is getdevs() your own function or a standard os function ?
> Presumably getdevs calls something like usb.busses() somewhere ?
>
> I don't see how this gives me the name of the serial device (eg.
> /dev/cu.usbmodem0001) that I can then reference with pyserial Serial()
> function.
> example:
>    port = '/dev/cu.usbmodem0001'  # need to auto detect/determine this
>    ser = serial.Serial( port )
>
> Thanks Brendan.
>
>
> Santiago Palomino Sanchez-Manjavacas wrote:
> > Well, you can use the device VID and PID to select which device to open.
> > I use something like:
> >
> >    def do_d(self, args):
> >         if self.devh is not None:
> >         self.do_close('')
> > #ls
> >     if self.devh is None:
> >         self.devs=getdevs()
> >     shortlist(self.devs)
> >         dn = -1;
> >         index = 0;
> >         for d in self.devs:
> >                 if (d[1].idVendor == 0xFFFF and d[1].idProduct ==
> 0x0000):
> >                         dn = index;
> >                 index = index + 1;
> >         if(dn == -1):
> >                 return 1
> >     self.curdev=self.devs[dn]
> >     self.devh=self.curdev[1].open()
> >     self.devn=dn
> >     self.devh.setConfiguration(self.curdev[2])
> >
> >     self.devh.claimInterface(self.curdev[2].interfaces[0][0])
> >     self.devh.setAltInterface(0)
> >
> >
> >
> > On Wed, Jun 17, 2009 at 7:14 AM, Brendan Simon (eTRIX)
> > <brendan.si...@etrix.com.au <mailto:brendan.si...@etrix.com.au>> wrote:
> >
> >     I have a device with a usb connection that presents itself as a
> serial
> >     device to operating system (OS X).
> >     It appears as /dev/cu.usbmodem0001 and /dev/tty.usbmodem0001 on the
> >     filesystem when the device is plugged in.
> >
> >     I can successfully detect the device USB Vendor ID and Product ID
> using
> >     pyusb :)
> >
> >     Now I have to use pyserial to talk to the device -- which I have
> >     successfully done by opening the serial port with a hard coded device
> >     filename (/dev/cu.usbmodem0001).
> >
> >     There must be some way for me to use the pyusb information to be able
> to
> >     determine the appropriate device filename to open with pyusb.
> >
> >     Does anyone know how to do this or have any suggestions ???
> >
> >     Thanks, Brendan.
>
>
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Pyusb-users mailing list
Pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to