由于项目需要用到RFID、GPRS、摄像头等模块所以便看了一下,整理了一下学习思路,本篇先是整理一下串口读取RFID卡号的程序思路,后面还会更其他的

RFID模块:
本次采用的是125K的RFID读卡器和标签,很容易理解的,其实就是一张卡片里面存了一串数字(这个问题有点像你问一个艺术家洛必达法则是啥咦洛必达是啥),然后有个读卡器,当你把卡片放到读卡器上时,读卡器会将卡里面存的卡号读取出来,然后放到串口发送缓冲区,等待我们去读取,那么问题就是怎么读取。
串口读写:
大家都知道。linux下面一切皆文件,设备也不例外,上面提到的串口就是个设备文件,linux设备文件一般存放在“/dev/”下,当你ls的时候会发现一大堆什么ttyS0、sda、video....现在笔记本串口设备文件一般都是ttyUSBx(x=0,1,2...)。既然是文件,那就能打开喽,不过它不是被“右键->打开”,而是被“系统调用open()”。当然不只是把它打开就完了,操作串口有一系列的系统调用。说到系统调用,其实就是系统底层给在上层编写程序的你提供的一些系统级函数。
一些需要的头文件:
#include <unistd.h> /*linux系统调用*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h> /*文件控制*/
#include <sys/stat.h> /*文件状态*/
#include <sys/types.h> /*定义系统类型,像size_t等*/
#include <errno.h> /*出错码*/
#include <termios.h> /*终端参数*/
1.打开串口
这里把open()这个系统调用封装成一个com_open()函数,可以方便判断是否打开成功并打印错误信息。
参数*DEV是文件路径(上面提到的/dev/ttyUSBx),第二个参数告诉它是以什么方式打开,常见的有:
O_RDONLY 只读
O_WRONLY 只写
O_RDWR 读写
注:上面的三个不能同时出现,即不能这样写O_RDONLY | O_RDWR,像下面这些是可选的:
O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端。
O_NONBLOCK 阻塞模式(详见配置串口处)
int com_o