I need to open and monitor LOTS (> 50) of FTDI devices on a single computer as serial ports with CBUS GPIO. We're using one of the FT232R's CBUS pins as power enable and UART activity for now.
Is there a standard way for opening and controlling multiple devices simultaneously and independently? Even when I only create one child process and open one device, the call to ftdi_set_bitmode() is sent to ALL DEVICES even ones not explicitly opened! I am using libftdi 0.20 and libusb0.1 which may not be thread-safe... http://developer.intra2net.com/mailarchive/html/libftdi/2012/msg00118.html If libftdi-1.0 / libusb-1.0 thread-safe then I should probably consider switching over but I still don't understand why my set_bitmode() goes to all attached FT232's... Pseudocode: - ftdi_new() - ftdi_init() - ftdi_usb_find_all() - for all found devices - ftdi_usb_open_desc_index(ftdi,DEVICE_VID,DEVICE_PID,NULL,NULL,i) - read chipID and get serial from EEPROM - ftdi_usb_close(ftdi) after reads - fork() and child execl()'s another program to manage UART and CBUS after parent exits - parent sets process group ID of child to new group shared by all children (** this might be a problem too ? **) - once all children processes created and running, parent cleans up eeprom, ftdi_dev_list, ftdi_deinit, and exits The child process opens devices by serial using the following call: ftdi_usb_open_desc(ftdi, DEVICE_VID, DEVICE_PID,NULL,ftdi_serial) -- libftdi - see http://www.intra2net.com/en/developer/libftdi for details. To unsubscribe send a mail to [email protected]
