libftdi Archives

Subject: Cant do simple serial-mode writes on FT2232H mini-module

From: "T. Horsnell" <tsh@xxxxxxxxxxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Date: Wed, 25 Nov 2009 16:40:08 +0000

Hi,
I'm struggling with what ought to be the most straightforward thing.
I'm trying to write to channel A of an FT2232H mini-module in serial
mode, but after writing a total of 4096 bytes, the writes hang
and I get an error -110 returned.
Presumably the buffer on the mini-module has filled up. But why
is this not being emptied as the device send things to its serial pin?
I've set flow-control to SIO_DISABLE_FLOW_CTRL (does this function
actually work? It seems to return success even if I try idiot values
like -1 or 12345 for the flow-control parameter).

I'm using version 0.16 of libftdi
Thanks,
Terry

My code:


#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <usb.h>
#include <ftdi.h>

const int vendor_id=0x0403;
const int product_id=0x6010;            //FT2232H

int main(int argc, char **argv)
{
struct ftdi_context ftdicA,ftdicB;
int f,i,j,k;

printf("setting up channel A\n");
ftdi_init(&ftdicA);
f = ftdi_usb_open(&ftdicA, vendor_id, product_id);
if(f < 0 && f != -5)
  {
  fprintf(stderr, "unable to open ftdi device: %d - %s\n",f,ftdicA.error_str);
  exit(-1);
  }
printf("ftdi open A succeeded: %d\n",f);

printf("setting flowcontrol\n");
i=ftdi_setflowctrl(&ftdicA, SIO_DISABLE_FLOW_CTRL);
if (i != 0)
  {
  printf("setting channel A flow-control failed. stat=%i\n",i);
  exit(0);
  }

#define BUFLEN 100000
unsigned char buf0[BUFLEN];
for (i=0; i<BUFLEN; i++) buf0[i]=0xff;

for (j=0; j<5; j++)
  {
printf("loop=%i\n",j);
//write a buffer
  f = ftdi_write_data(&ftdicA, buf0, 1000);
  if(f < 0)
    {
    fprintf(stderr,"write failed for %x, error %d - 
%s\n",buf0[0],f,ftdicA.error_str);
    break;
    }
sleep(5);
  }

ftdi_usb_close(&ftdicA);
ftdi_deinit(&ftdicA);
return 0;
}




--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx
Current Thread