Ejemplo n.º 1
0
def main():
    """ Send/receive data from the Papilio FPGA using the high speed
        mode of the FT232H.
    """
    # Create the device list.
    num_devices = ft.createDeviceInfoList()
    if (num_devices == 0):
        print "No devices found."
        sys.exit();
    print "Found {0} devices.".format(num_devices)
    
    # Get the device information for the device with sync FIFO mode.
    device_info = None
    device_index = 0
    for index in range(0, num_devices):
        device_info = ft.getDeviceInfoDetail(devnum = index, update = False)
        if (device_info['description'] == 'UM232H_245FIFO'):
            device_index = index
            break
    if (device_info == None):
        print "Device not found."
        sys.exit()
    
    # Open the device and configure for sync FIFO mode.
    ft.setVIDPID(0x0403, 0x6014)
    device = ft.open(dev = device_index)
    device.setBitMode(0xFF, 0x00)               # Reset mode
    sleep(.01)
    device.setBitMode(0xFF, 0x40)               # Sync FIFO mode
    device.setLatencyTimer(2)                   # Receive buffer timeout in msec
    device.setUSBParameters(4096, 4096)         # Set transfer in/out size to 4096
    device.setFlowControl(FLOW_RTS_CTS, 0, 0)   # Flow control method
Ejemplo n.º 2
0
 def open(
     self
 ):  # This method must return a string showing whether the open succeeded or failed.
     enum = d2xx.createDeviceInfoList()  # quantity of FTDI devices
     if (enum == 0):
         return 'Device was not found'
     for i in range(enum):  # Searching and openinq needed device
         a = d2xx.getDeviceInfoDetail(i)
         if (a['description'] == 'SDR-Micron'):
             try:
                 self.usb = d2xx.openEx(a['serial'])
             except:
                 return 'Device was not found'
             Mode = 64  # Configure FT2232H into 0x40 Sync FIFO Mode
             self.usb.setBitMode(255, 0)  # reset
             time.sleep(0.1)
             self.usb.setBitMode(
                 255, Mode)  #configure FT2232H into Sync FIFO mode
             self.usb.setTimeouts(100, 100)  # read, write
             self.usb.setLatencyTimer(2)
             self.usb.setUSBParameters(64, 64)  # in_tx_size, out_tx_size=0
             time.sleep(1.5)  # waiting for initialisation device
             data = self.usb.read(
                 self.usb.getQueueStatus())  # clean the usb data buffer
             self.device = 'Opened'
             self.frame_msg = a['description'] + '   S/N - ' + a['serial']
             return self.frame_msg
     return 'Device was not found'
Ejemplo n.º 3
0
    def __init__(self, param_dict):
        param_dict = self._translate_dict_values(param_dict, self.ftd2xx_dict)
        [setattr(self, key, val) for key, val in param_dict.items()]
        self.n_bytes = param_dict["n_bytes"]

        # auto-find UM232H serial number
        num_devs = ftd2xx.createDeviceInfoList()
        for idx in range(num_devs):
            info_dict = ftd2xx.getDeviceInfoDetail(devnum=idx)
            if info_dict["description"] == b"UM232H":
                self.serial = info_dict["serial"]
Ejemplo n.º 4
0
 def _find_some_simps(self):
     # Determine the number of devices. This is a slow call.
     number_of_devices = ftd2xx.createDeviceInfoList()
     
     # For each FTDI device using the D2XX drivers, get and check the device description for a simp.
     devices = []
     for index in range(number_of_devices):
         try:
             # Update is false to prevent another slow createDeviceInfoList call.
             device_details = ftd2xx.getDeviceInfoDetail(index, update=False)
             if (device_details['description'] == b'SIMPS Device'):
                 devices.append(device_details)
             elif (device_details['description'] == b'SIMPS ATE'):
                 devices.append(device_details)
         except ftd2xx.ftd2xx.DeviceError:
             pass
     return devices
Ejemplo n.º 5
0
 def testcreateDeviceInfoList(self):
     self.assert_(isinstance(ftd2xx.createDeviceInfoList(), long))
Ejemplo n.º 6
0
 def testcreateDeviceInfoList(self):
     self.assert_(isinstance(ftd2xx.createDeviceInfoList(), long))
Ejemplo n.º 7
0
 def testcreateDeviceInfoList(self):
     self.assertTrue(isinstance(ftd2xx.createDeviceInfoList(), int))
Ejemplo n.º 8
0
 def __init__(self,hwser=None):
     # Find out how many ftd2xx devices are connected to the USB bus
     numDevices=ftd2xx.createDeviceInfoList()
     # Check each device to see if either the serial number matches (if given) or the description string is recognized as valid for the class type
     numMatchingDevices=0
     for dev in range(numDevices):
         detail=ftd2xx.getDeviceInfoDetail(dev)
         if hwser!=None and detail["serial"]!="" and int(detail["serial"])==hwser:
             # Get the first device which matches the serial number if given
             numMatchingDevices+=1
             self.device=device=ftd2xx.open(dev)
             break
         elif hwser==None and (detail["description"] in self.deviceDescriptionStrings()):
             # Get the first device which is valid for the given class if no hwser
             numMatchingDevices+=1
             if numMatchingDevices==1:
                 self.device=device=ftd2xx.open(dev)
         elif dev==numDevices-1 and numMatchingDevices==0:
             # Raise an exception if no devices were found
             if hwser!=None:
                 errorStr="Hardware serial number " + str(hwser) + " was not found" 
             else:
                 errorStr="No devices found matching class name " + type(self).__name__ + ". Expand the definition of CLASS_STRING_MAPPING if necessary"
             raise DeviceNotFoundError, errorStr
     # Print a warning message if no serial given and multiple devices were found which matched the class type
     if numMatchingDevices>1 and hwser==None: 
         print(str(numMatchingDevices)+" devices found matching " + type(self).__name__ + "; the first device was opened")
     # Inititalize the device according to FTD2xx and APT requirements
     device.setBaudRate(ftd2xx.defines.BAUD_115200)
     device.setDataCharacteristics(ftd2xx.defines.BITS_8,ftd2xx.defines.STOP_BITS_1,ftd2xx.defines.PARITY_NONE)
     self.delay()
     device.purge()
     self.delay()
     device.resetDevice()
     device.setFlowControl(ftd2xx.defines.FLOW_RTS_CTS)
     device.setTimeouts(c.WRITE_TIMEOUT,c.READ_TIMEOUT)
     # Check first 2 digits of serial number to see if it's normal type or card/slot type, and build self.channelAddresses as list of (chanID,destAddress) tuples
     self.channelAddresses=[]
     if device.serial[0:2] in c.BAY_TYPE_SERIAL_PREFIXES:
         # Get the device info
         serNum,model,hwtype,firmwareVer,notes,hwVer,modState,numCh=self.query(c.MGMSG_HW_REQ_INFO,c.MGMSG_HW_GET_INFO,destID=c.RACK_CONTROLLER_ID)[-1]
         # Check each bay to see if it's enabled and also request hardware info
         for bay in range(numCh):
             bayId=c.ALL_BAYS[bay]
             self.writeMessage(c.MGMSG_HW_NO_FLASH_PROGRAMMING,destID=bayId)
             if self.BayUsed(bay):
                 bayInfo=self.query(c.MGMSG_HW_REQ_INFO,c.MGMSG_HW_GET_INFO,destID=bayId)[-1]
                 self.channelAddresses.append((c.CHANNEL_1,bayId))
     else:
         # Otherwise just build a list of the channel numbers
         self.writeMessage(c.MGMSG_HW_NO_FLASH_PROGRAMMING,destID=c.GENERIC_USB_ID)
         serNum,model,hwtype,firmwareVer,notes,hwVer,modState,numCh=self.query(c.MGMSG_HW_REQ_INFO,c.MGMSG_HW_GET_INFO)[-1]
         for channel in range(numCh):
             self.channelAddresses.append((c.ALL_CHANNELS[channel],c.GENERIC_USB_ID))  
     for channel in range(len(self.channelAddresses)):
         self.writeMessage(c.MGMSG_MOD_SET_CHANENABLESTATE,1,c.CHAN_ENABLE_STATE_ENABLED,c.RACK_CONTROLLER_ID)            
         self.EnableHWChannel(channel)
     # Set the controller type
     self.controllerType=model.replace("\x00","").strip()
     # Print a message saying we've connected to the device successfuly
     print("Connected to %s device with serial number %d. Notes about device: %s"%(model.replace('\x00', ''),serNum,notes.replace('\x00', '')))
Ejemplo n.º 9
0
import ftd2xx
import pprint

devNum = ftd2xx.createDeviceInfoList()
getDeviceInfoDetail = [
    ftd2xx.getDeviceInfoDetail(devnum=i, update=False) for i in range(devNum)
]
dev = ftd2xx.open(0)
dev.setChars(False, 0, False, 0)
dev.setTimeouts(5000, 5000)
dev.setLatencyTimer(2)
dev.setBaudRate(300)
AsynchronousBitBang = 0x01
dev.setBitMode(0x00, AsynchronousBitBang)

value = None
while True:
    rxBytes = dev.getQueueStatus()
    if rxBytes:
        rxbuffer = dev.read(rxBytes)
        newValue = rxbuffer[-1]
        if value != newValue:
            print(hex(newValue))
            value = newValue