使用open()函数打开串口设备
首先使用open()函数打开串口设备/dev/ttymxc6,设备使用了O_RDWR | O_NOCTTY | O_NDELAY标志,分别代表以读写方式打开、不让设备成为控制终端且设置非阻塞模式,也就是当无法打开设备时,不会在原地等待,会马上返回;
上面使用了if语句判断文件描述符fd,如果open()返回的文件描述符<0,则代表设备打开失败,输出“Can't Open Serial Port /dev/ttymxc6”;
如果是其他情况,则说明设备打开成功,把设备的波特率,数据位,停止位,校验位打印出来;
获取当前配置参数
前面介绍过tcgetattr()函数的用法,在这里就是获取上面open()函数返回的文件描述符fd作为tcgetattr()的参数,然后创建一个termios名为oldtio来储存串口旧的参数。
写配置
程序中是对newtio结构体中的c_cflag加上CLOCAL | CREAD,意为使驱动程序启动接收字符装置,同时忽略串口信号线的状态。
另外对c_cflag与上了~CSIZE,即设置数据位。
清空缓冲区
使用tcflush()函数清空缓冲区,避免本次将之前残存的数据发送出去引起混乱。
配置生效
前面已经完成了对 struct termios 结构体各个成员进行配置,但是配置还未生效,需要将配置参数写入到终端设备(串口硬件),使其生效。通过 tcsetattr()函数将配置参数写入到硬件设备。
串口接收函数
使用read()函数读缓冲区的数据,即串口接收:
串口发送函数
使用write()函数发送缓冲区的数据,即串口发送: