《飞凌6410开发板通过usb reader读卡器读取ic卡id(linux源代码)》由会员分享,可在线阅读,更多相关《飞凌6410开发板通过usb reader读卡器读取ic卡id(linux源代码)(4页珍藏版)》请在金锄头文库上搜索。
1、代码原理:USB Reader 虽然是 USB 接口,但是大多数是模拟键盘输入的。因此,可以通过 open(/dev/tty0.) 这个系统函数打开设备。那么就可以像读取文件一样读取 IC 卡的 ID。要点注意:由于开发板上 Linux 驱动的不同,因此键盘可能会产生多个字节的扫描码(最多可能有6 个)。因此程序要进行过滤。例如:过滤【键盘码】128 的值。在 Linux 下,键盘码值(1127 ),释放键(KeyUP)的值为【键值】+128即: 键盘码= 10,则释放键=10+128如果仅仅是转换 09 这几个值,可以采用下面的算法int key = 0 + 【键盘码值】 - 1;/Read
2、er.h#ifndef READER_H#define READER_H#include #include #include int OpenReader(char* dev)int Reader_Fd=-1;Reader_Fd = open(dev, O_RDWR);return Reader_Fd;void CloseReader(int fd)close(fd);int ReadId(int fd,char *id_buf,int len)unsigned char key5;unsigned char K;int i=0;doK=0;if(read(fd,key,4)0)if(key0len)i=0;while(K!=28);id_bufi-1=0;return 1;#endif / READER_H/主程序#includereader.hint main(int argc, char *argv)int reader_fd;char buf32;if(reader_fd=OpenReader(/dev/tty0)=-1)puts(Open Dev Error!rn);while(1)if(ReadId(reader_fd,buf,32)=1)printf(Read ID=%srn,buf);CloseReader(reader_fd);return 0;程序运行效果: