Linux开发板usb读卡器,飞凌6410开发板通过USB Reader读卡器读取IC卡ID(Linux源代码)

代码原理:

USB Reader虽然是USB接口,但是大多数是模拟键盘输入的。

因此,可以通过 open("/dev/tty0".....) 这个系统函数打开设备。

那么就可以像读取文件一样读取IC卡的ID。

要点注意:

由于开发板上Linux驱动的不同,因此键盘可能会产生多个字节的扫描码(最多可能有6个)。因此程序要进行过滤。

例如:过滤【键盘码】>128的值。

在Linux下,键盘码值(1~127),释放键(KeyUP)的值为【键值】+128

即:   键盘码= 10,则释放键=10+128

如果仅仅是转换 0~9这几个值,可以采用下面的算法

int key =  '0'  + 【键盘码值】 - 1;

//Reader.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 key[5];

unsigned char K;

int i=0;

do

{

K=0;

if(read(fd,key,4)>0)

{

if(key[0]<128)

{

id_buf[i++]='0'+key[0]-1;

K=key[0];

}

}

if(i>len)i==0;

}while(K!=28);

id_buf[i-1]='\0';

return 1;

}

#endif // READER_H

//主程序

#include"reader.h"

int main(int argc, char *argv[])

{

int reader_fd;

char buf[32];

if((reader_fd=OpenReader("/dev/tty0"))==-1)

{

puts("Open Dev Error!\r\n");

}

while(1)

{

if(ReadId(reader_fd,buf,32)==1)

{

printf("Read ID=%s\r\n",buf);

}

}

CloseReader(reader_fd);

return 0;

}

程序运行效果:

92d1fb4f456af5d9bb3b815d0a8f7202.gif0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值