100ASK_IMX6ULL arm板子如何移植刷卡器
最近为了在arm板子上移植刷卡器,比较简单,但也遇到了坑,现在和大家分享下。
购买刷卡器
某宝很多,应该选哪一种呢?
一口君一共买了4种刷卡器,有2种可以用,还有2种不能用。
下图为最方便的一款,一口君选的是ID卡。
为了避免做广告嫌疑,就不贴购买链接了,但是切记:
一定要买带serial芯片的,比如ch341或者rs232
要不即使和这个刷卡器一样,也可能无法使用,切记。
价格大概45左右,不要买18块左右的,如果怕买错,就给一口君留言。
移植USB转串口驱动
进入内核找到对应的USB转串口驱动,位置如下:
选中该驱动
保存退出,重新编译内核。
【如果是其他型号的串口,请选择对应的驱动】
测试设备
下载编译好的内核到开发板(一口君是通过nfs挂载然后拷贝到/boot目录下),重启后插上刷卡器,看到
ch341-uart converter now attached to ttyUSB0
就成功一半了。
驱动会自动为该串口创建该字符设备,我们只需要像操作普通字符设备一样就可以使用该刷卡器了。
查看字符设备节点
该字符设备节点位于/dev/ttyUSB0,由该字符设备节点信息可知该字符设备主设备号188,次设备号为0。
编写测试程序
编写测试程序思路很简单,
- 通过open函数打开字符设备ttyUSB0
- 通过函数ioctl设置对应参数,波特率9600,数据位数8,奇偶校验位0,终止位1。
- 通过read函数可以阻塞的读取卡号了。
文件目录结构如下:
card.c
1 #include <stdio.h>
2 #include <unistd.h>
3 #include "IC_serial.h"
4 void main(void)
5 {
6 int i;
7 int fd;
8 char buf[32]={0};
9
10 open_port(&fd);
11 uart_init(fd);
12
13 for(i=0;i<20;i++)
14 {
15 read_from_serial(fd,buf);
16 printf("card:%s\n",buf);
17 }
18 }
交叉编译:
arm-linux-gnueabihf-gcc *.c -o run
运行结果如下:
完整代码,关注公众号,后台回复 card。
欢迎关注公众号:一口Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」