欢迎来到天天文库
浏览记录
ID:40732523
大小:38.95 KB
页数:4页
时间:2019-08-06
《飞凌6410开发板通过USB Reader读卡器读取IC卡ID(Linux源代码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、代码原理: USBReader虽然是USB接口,但是大多数是模拟键盘输入的。 因此,可以通过open("/dev/tty0".....)这个系统函数打开设备。 那么就可以像读取文件一样读取IC卡的ID。 要点注意: 由于开发板上Linux驱动的不同,因此键盘可能会产生多个字节的扫描码(最多可能有6个)。因此程序要进行过滤。 例如:过滤【键盘码】>128的值。 在Linux下,键盘码值(1~127),释放键(KeyUP)的值为【键值】+128
2、 即: 键盘码=10,则释放键=10+128 如果仅仅是转换0~9这几个值,可以采用下面的算法 intkey= '0' +【键盘码值】-1;//Reader.h#ifndefREADER_H#defineREADER_H#include#include#includeintOpenReader(char*dev){ intReader_Fd=-1; Reader_F
3、d=open(dev,O_RDWR); returnReader_Fd;}voidCloseReader(intfd){ close(fd);}intReadId(intfd,char*id_buf,intlen){ unsignedcharkey[5]; unsignedcharK; inti=0; do { K=0; if(read(fd,key,4)>0) { if(key[0]<128) { i
4、d_buf[i++]='0'+key[0]-1; K=key[0]; } } if(i>len)i==0; }while(K!=28); id_buf[i-1]=' '; return1;}#endif//READER_H //主程序#include"reader.h"intmain(intargc,char*argv[]){ intreader_fd; charbuf[32]; if((reader_fd=OpenRead
5、er("/dev/tty0"))==-1) { puts("OpenDevError!r"); } while(1) { if(ReadId(reader_fd,buf,32)==1) { printf("ReadID=%sr",buf); } } CloseReader(reader_fd); return0;} 程序运行效果:
此文档下载收益归作者所有