Skip to content

Instantly share code, notes, and snippets.

@pingswept
Created December 15, 2012 00:22
Show Gist options
  • Select an option

  • Save pingswept/4289911 to your computer and use it in GitHub Desktop.

Select an option

Save pingswept/4289911 to your computer and use it in GitHub Desktop.
C shim to read serial data via FTDI driver. Compile on Rascal with: gcc -lftdi -oread-ftdi read-ftdi.c
/* simple.c
Simple libftdi usage example
This program is distributed under the GPL, version 2
*/
#include <ftdi.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
int ret;
int f = 0;
struct ftdi_context ftdic;
char c[4096];
memset(c,0,256);
if (ftdi_init(&ftdic) < 0)
{
fprintf(stderr, "ftdi_init failed\n");
return EXIT_FAILURE;
}
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;
}
// Read out FTDIChip-ID of R type chips
/* if (ftdic.type == TYPE_R)
{
unsigned int chipid;
printf("ftdi_read_chipid: %d\n", ftdi_read_chipid(&ftdic, &chipid));
printf("FTDI chipid: %X\n", chipid);
} */
ftdi_usb_purge_buffers(&ftdic);
f = ftdi_read_data(&ftdic, c, 4096);
while (f<=0) {
sleep(1);
f = ftdi_read_data(&ftdic, c, 4096);
}
printf("%s", c);
if ((ret = ftdi_usb_close(&ftdic)) < 0)
{
fprintf(stderr, "unable to close ftdi device: %d (%s)\n", ret, ftdi_get_error_string(&ftdic));
return EXIT_FAILURE;
}
ftdi_deinit(&ftdic);
return EXIT_SUCCESS;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment