def __selectMeter(self, num): """ Select giver meter """ if ftdi_type == 0: self.__ftdi.selectPort(usb_port[num]) else: err = ftdi.set_bitmode(globals.ftdi_context, usb_port[num], ftdi.BITMODE_CBUS) if err < 0: logging.error("Can't set bitmode (%d, %s)" % (err, ftdi.get_error_string(globals.ftdi_context))) raise FtdiError("Can't set bitmode (%d, %s)" % (err, ftdi.get_error_string(globals.ftdi_context))) time.sleep(0.1)
def __selectMeter(self, num): """ Select giver meter """ if FTDI_TYPE == 0: self.__ftdi.selectPort(USB_PORT[num]) else: err = ftdi.set_bitmode(self.context, USB_PORT[num], ftdi.BITMODE_CBUS) if err < 0: self._log.error("Can't set bitmode (%d, %s)" % (err, ftdi.get_error_string(self.context))) raise FtdiError("Can't set bitmode (%d, %s)" % (err, ftdi.get_error_string(self.context))) time.sleep(0.1)
def __readOne(self): """ read 1 char from usb """ err, buf = ftdi.read_data(globals.ftdi_context, 0x1) if err < 0: logging.error("Can't read data (%d, %s)" % (err, ftdi.get_error_string(globals.ftdi_context))) self.close() raise FtdiError("Can't read data (%d, %s)" % (err, ftdi.get_error_string(globals.ftdi_context))) if err: #c = unichr(ord(buf) % 0x80) # Clear bit 7 c = chr(ord(buf) & 0x07f) return err, c else: return err, None
def __readRawFrame(self): """ Read raw frame """ # As the data are sent asynchronously by the USB interface, we probably don't start # to read at the start of a frame. So, we read enough chars to retreive a complete frame logging.debug("Lecture des donnees") if ftdi_type == 0: raw = self.__ftdi.read(globals.frame_length) else: err = ftdi.usb_purge_buffers(globals.ftdi_context) if err < 0: logging.error("Can't purge buffers (%d, %s)" % (err, ftdi.get_error_string(globals.ftdi_context))) raise FtdiError("Can't purge buffers (%d, %s)" % (err, ftdi.get_error_string(globals.ftdi_context))) raw = u"" while len(raw) < globals.frame_length: err, c = self.__readOne() if c is not None and c != '\x00': raw += c #logging.debug(c) return raw
def __readRawFrame(self): """ Read raw frame """ # As the data are sent asynchronously by the USB interface, we probably don't start # to read at the start of a frame. So, we read enough chars to retreive a complete frame if FTDI_TYPE == 0: raw = self.__ftdi.read(FRAME_LENGTH) else: err = ftdi.usb_purge_buffers(self.context) if err < 0: self._log.error("Can't purge buffers (%d, %s)" % (err, ftdi.get_error_string(self.context))) raise FtdiError("Can't purge buffers (%d, %s)" % (err, ftdi.get_error_string(self.context))) raw = u"" while len(raw) < FRAME_LENGTH: err, c = self.__readOne() if c is not None and c != '\x00': raw += c return raw
# initialize ftdic = ftdi.new() if ftdic == 0: print 'new failed: %d', ret os._exit( 1 ) version_info = ftdi.get_library_version() print("\nlibFTDI version = major: %d, minor: %d, micro: %d" \ ", version_str: %s, snapshot_str: %s\n" % (version_info.major, version_info.minor, version_info.micro, version_info.version_str, version_info.snapshot_str)) # list all devices ret, devlist = ftdi.usb_find_all( ftdic, DEVICE_VID, DEVICE_PID ) if ret < 0: print 'ftdi_usb_find_all failed: %d (%s)' % ( ret, ftdi.get_error_string( ftdic ) ) os._exit( 1 ) print 'Number of FTDI devices found: %d\n' % ret curnode = devlist i = 0 while( curnode != None ): ret, manufacturer, description, serial = ftdi.usb_get_strings( ftdic, curnode.dev ) if ret < 0: print 'ftdi_usb_get_strings failed: %d (%s)' % ( ret, ftdi.get_error_string( ftdic ) ) os._exit( 1 ) print 'Device #%d: manufacturer="%s" description="%s" serial="%s"\n' % ( i, manufacturer, description, serial ) curnode = curnode.next i += 1 # open usb ret = ftdi.usb_open( ftdic, DEVICE_VID, DEVICE_PID )
import os import ftdi import time # initialize ftdic = ftdi.new() if ftdic == 0: print 'new failed: %d', ret os._exit(1) # list all devices ret, devlist = ftdi.usb_find_all(ftdic, 0x0403, 0x6001) if ret < 0: print 'ftdi_usb_find_all failed: %d (%s)' % (ret, ftdi.get_error_string(ftdic)) os._exit(1) print 'Number of FTDI devices found: %d\n' % ret curnode = devlist i = 0 while (curnode != None): ret, manufacturer, description, serial = ftdi.usb_get_strings( ftdic, curnode.dev) if ret < 0: print 'ftdi_usb_get_strings failed: %d (%s)' % ( ret, ftdi.get_error_string(ftdic)) os._exit(1) print 'Device #%d: manufacturer="%s" description="%s" serial="%s"\n' % ( i, manufacturer, description, serial) curnode = curnode.next i += 1