No tengo idea de cómo hacer bitbanging con los chips prolíficos, pero el error que está viendo es el resultado de que el identificador de proveedor (VID) y el identificador de producto (PID) del chip Prolific son diferentes del valor predeterminado de FTDI
Este código de ejemplo muestra un ejemplo de dónde se puede producir este tipo de error:
if ((ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001)) < 0)
{
fprintf(stderr, "unable to open ftdi device: %d (%s)\n",
ret, ftdi_get_error_string(&ftdic));
return EXIT_FAILURE;
}
ftdi_usb_open()
es un alias para la función:
ftdi_usb_open_desc_index(
struct ftdi_context * ftdi,
int vendor,
int product,
const char * description,
const char * serial,
unsigned int index
)
que solo sustituye un puntero nulo para la descripción y la serie, y '0' para el índice.
La fuente de esta función se puede encontrar en la línea 623 de ftdi.c, o es en línea aquí .
Tenga en cuenta que cada interacción que realizan los controladores FDTI en esta función y más allá asume que tiene un chip FTDI en el otro extremo. Es casi seguro que la solución de este problema llevará a más problemas, y la solución de esos problemas le dará otro. Habrá una luz al final del túnel, pero puede ser un largo camino para llegar allí.
Agregar soporte Prolific a libftdi (o transferir la API de libftdi a una nueva biblioteca, llámelo libprolific) sería bastante bueno. Sin embargo, es casi seguro que está mejor usando los controladores de Prolific: enlace