Hello Thomas,
Here goes a small example
int main(int argc, char **argv)
{
int f = 0, i = 0, tmp = 0;
unsigned short status = 0;
unsigned char pins;
struct ftdi_context *ftdi;
unsigned char buff[513];
int VID = 0x0403;
int PID = 0x6001;
if ((ftdi = ftdi_new()) == 0) {
fprintf(stderr, "ftdi_new failed\n");
return EXIT_FAILURE;
}
fprintf(stdout, "Opening...\n");
if(ftdi_usb_open_desc(ftdi, VID, PID, "USB Serial Converter",
"MYSERIALNUMBER") < 0) {
fprintf(stderr, " ftdi_usb_open failed\n");
fprintf(stderr, "%s\n", ftdi_get_error_string(ftdi));
exit -1;
}
fprintf(stdout, "Reset...\n");
if(ftdi_usb_reset(ftdi) < 0) {
fprintf(stderr, " ftdi_usb_reset failed\n");
fprintf(stderr, "%s\n", ftdi_get_error_string(ftdi));
exit -1;
}
fprintf(stdout, "Setting Line Properties...\n");
//if(ftdi_set_line_property(ftdi, BITS_8, STOP_BIT_2, NONE) <
0) {
if(ftdi_set_line_property2(ftdi, BITS_8, STOP_BIT_2, NONE,
BREAK_ON) < 0) {
fprintf(stderr, " ftdi_set_line_property failed\n");
fprintf(stderr, "%s\n", ftdi_get_error_string(ftdi));
exit -1;
}
fprintf(stdout, "Setting Baudrate...\n");
if(ftdi_set_baudrate(ftdi, 250000) < 0) {
fprintf(stderr, " ftdi_set_baudrate failed\n");
fprintf(stderr, "%s\n", ftdi_get_error_string(ftdi));
exit -1;
}
fprintf(stdout, "Setting Flow Ctrl...\n");
if(ftdi_setflowctrl(ftdi, SIO_RESET) < 0) {
fprintf(stderr, " ftdi_set_setflowctrl failed\n");
fprintf(stderr, "%s\n", ftdi_get_error_string(ftdi));
exit -1;
}
fprintf(stdout, "Purging Buffers...\n");
if(ftdi_usb_purge_buffers(ftdi) < 0) {
fprintf(stderr, " ftdi_usb_purge_buffers failed\n");
fprintf(stderr, "%s\n", ftdi_get_error_string(ftdi));
exit -1;
}
// Set Line to Read
fprintf(stdout, "Setting RTS...\n");
if(ftdi_setrts(ftdi, SIO_SET_RTS_HIGH) < 0) {
fprintf(stderr, " ftdi_setrts failed\n");
fprintf(stderr, "%s\n", ftdi_get_error_string(ftdi));
exit -1;
}
while(!exitRequested) {
ftdi_poll_modem_status(ftdi, &status);
if(status & 0x1000) { // BREAK_INTERRUPT
f = ftdi_read_data(ftdi, buff, sizeof(buff));
if(f < 0)
sleep(1);
else if(f > 0) {
ftdi_usb_purge_rx_buffer(ftdi);
fprintf(stdout, "Read %d bytes\n", f);
for(i = 0; i < sizeof(buff); i++) {
fprintf(stdout, "%02X ", ((unsigned char *) buff)[i] );
}
fprintf(stdout, "\n");
fflush(stdout);
}
} // BREAK INTERRUPT
}
ftdi_usb_close(ftdi);
ftdi_free(ftdi);
return 0;
}
Best regards,
On 05/29/2012 02:23 PM, Thomas Jarosch wrote:
Hello Rui,
On Thursday, 24. May 2012 18:26:04 Rui Barreiros wrote:
Is it possible to do this with libftdi ?! How can I ?
Can you post your ported code? Would make things easier.
Also remove any code that's not directly needed for this to work.
Thomas
--
Rui Barreiros
rui.barreiros@xxxxxxxxxxxx
Tlm: +351 962 356 020
|
|
Rua Alminhas das Cais, 950
4410-497 Serzedo VNG
Portugal
NIF: 506 107 523
|
Tlm: +351 968 015 215
Tlf: +351 227 625 805
Fax: +351 227 534 304
geral@xxxxxxxxxxxx
|
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx
|
|