#include #include #include #include #include #include #if defined(OS_LINUX) || defined(OS_MACOSX) #include #include #elif defined(OS_WINDOWS) #include #endif #include "hid.h" void sendstr(char * tosend) { rawhid_send(0, tosend, strlen(tosend),1000); } int mtime_diff(struct timeval high,struct timeval low) { int result=1000*(high.tv_sec-low.tv_sec); result+=high.tv_usec/1000-low.tv_usec/1000; return result; } #define BUF_LEN 64 int main (int argc, char *argv[]) { int i, r, num; char buf[BUF_LEN]; // C-based example is 16C0:0480:FFAB:0200 unsigned int attemtps = 100; while(attemtps--) { r = rawhid_open(1, 0x16C0, 0x0481, 0xFFAB, 0x0200); if (r > 0) break; else sleep(1.0); } if (r <= 0) { printf("no rawhid device found\n"); return -1; } printf("found rawhid device\n\n"); //~ printf("Clearing Buffer\n"); //~ sendstr("c"); // clear the buffer size_t len; //~ struct timeval start_time,stop_time; //~ gettimeofday(&start_time,NULL); //~ gettimeofday(&stop_time,NULL); //~ while (mtime_diff(stop_time,start_time)<1000) { // check if any Raw HID packet has arrived while (1) { num = rawhid_recv(0, buf, BUF_LEN, 220); if (num < 0) { printf("\nerror reading, device went offline\n"); rawhid_close(0); return 0; } else if (num == 0) { sleep(1.0); } buf[num]='\0'; printf("%s\n",buf); } }