When executing an ftdi_read_data, the command always returns extremely
quickly (I've timed it and it takes 0ms when the timeout is set to 50sec)
without waiting the set timeout time and always returns 0 bytes of data. My
code is below. Why is this happening? I assume this is not the intended
functionality? Thanks!
int main(void){
bool success = false;
int status;
// Try to connect
status = ftdi_init(&ftdic);
success = (status==0);
if(success){
status = ftdi_usb_open(&ftdic, VENDOR_ID, PRODUCT_ID);
success = (status==0);
}
// Set baud rate
if(success){
status = ftdi_set_baudrate(&ftdic, 2400);
success = (status==0);
}
// Set bit mode to serial
if(success){
status = ftdi_set_bitmode(&ftdic, 0xFF, BITMODE_RESET);
success = (status==0);
}
// Set data characteristics to 8 bits, 1 stop, no parity
if(success){
status = ftdi_set_line_property(&ftdic, BITS_8, STOP_BIT_1,
NONE);
success = (status==0);
}
// Set flow control to none
if(success){
status = ftdi_setflowctrl(&ftdic, SIO_DISABLE_FLOW_CTRL);
success = (status==0);
}
// Set read data chunk size
if(success){
status = ftdi_read_data_set_chunksize(&ftdic, 2);
success = (status==0);
}
// Set write data chunk size
if(success){
status = ftdi_write_data_set_chunksize(&ftdic, 4);
success = (status==0);
}
// Set latency timer
if(success){
status = ftdi_set_latency_timer(&ftdic, 1);
success = (status==0);
}
// Set maximum packet size
ftdic.max_packet_size = 4;
// Clear Tx and Rx buffers
if(success){
status = ftdi_usb_purge_buffers(&ftdic);
success = (status==0);
}
if(!success){
ftdi_free(&ftdic);
}
int RxBytesRead;
uchar RxBuffer[2];
ftdic.usb_read_timeout = 50000;
printf("%d\t%d\t%d\n", ftdic.usb_read_timeout,
ftdic.usb_write_timeout, ftdic.max_packet_size);
clock_t t1, t2, ms;
while(1){
t1 = clock();
RxBytesRead = ftdi_read_data(&ftdic, RxBuffer,
sizeof(RxBuffer));
t2 = clock();
ms = (t2-t1)*1000/CLOCKS_PER_SEC;
if(RxBytesRead==0)
printf("timeout");
else if(RxBytesRead<0)
printf("error");
else
printf("%0X\t%0X", RxBuffer[0], RxBuffer[1]);
printf("\t%d\n", ms);
}
return success;
}
--
View this message in context:
http://libftdi.141977.n3.nabble.com/ftdi-read-data-returns-immediately-without-waiting-for-timeout-and-with-no-data-tp4025001.html
Sent from the libFTDI mailing list archive at Nabble.com.
--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx
|