Linux串行口读取操作已经成为了当今的日常开发习惯,在很多的物联网开发操作中,串口读操作是被经常使用的。本文通过一步一步的恢复线,来解析Linux下如何进行串口读取操作,避免出错,让操作更加便捷。
一、检验Linux是否安装有串口支持
使用如下命令,来检验Linux是否安装有串口支持:
“`bash
grep “204:”/proc/tty/drivers
#结果如果出现如下字段,则表明系统已经支持串口了:
204: ttyS tty8250 serial
二、设置串口参数
首先,创建文件描述符,打开串口设备文件
```c
int fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY);
if (fd
{
printf("Open com error!\n");
return -1;
}
然后,使用如下代码设置串口波特率,数据位、停止位、校验位等参数:
“`c
struct termios newtty, oldtty;
if (tcgetattr(fd, &oldtty) != 0)
{
printf(“tcgetattr error!\n”);
return -1;
}
bzero(&newtty, sizeof(newtty));
newtty.c_cflag |= CLOCAL | CREAD;
//设置本地模式,接受使能
//设置波特率
cfsetispeed(&newtty, B115200);
cfsetospeed(&newtty, B115200);
//设置数据位 8
newtty.c_cflag &= ~CSIZE;
newtty.c_cflag |= CS8;
//设置 无较验位
newtty.c_cflag &= ~PARENB;
//1个停止位
newtty.c_cflag &= ~CSTOPB;
//原始输出
newtty.c_oflag &= ~OPOST;
//等待时间和最小接收字符
newtty.c_cc[VTIME] = 0;
newtty.c_cc[VMIN] = 0;
//清空输入/输出缓存,确保程序正常运行
tcflush(fd,TCIFLUSH);
//激活新的配置
if(tcsetattr(fd, TCSANOW, &newtty) != 0)
{
printf(“tcsetattr error!\n”);
return -1;
}
三、开始读取串口数据
串口参数设置完毕以后,剩下的步骤就是实际去读取串口了,使用read函数就可以达到目的:
```c
int k;
char buf[255] = {0};
k = read(fd, buf, 255);
if(k > 0)
{
printf("%s\n", buf);
}
四、关闭串口设备文件
之后,将文件描述符关闭即可:
“`c
close(fd);
以上就是Linux串口读取操作的完整过程,只需要按照以上操作,准确的实现参数设置,就可以完成一次成功的读取操作。充分的理解各个步骤,就可以解决在使用时出现的一些问题,避免操作错误,提升效率。