Linux c语言串口读写
时间: 2023-08-28 20:08:01 浏览: 180
linux下串口的读写
在Linux系统下,可以使用C语言编写串口读写程序,以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
int main()
{
int fd = -1;
char buf[256];
struct termios opt;
// 打开串口设备文件
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd < 0)
{
printf("open serial port failed!\n");
return -1;
}
// 配置串口属性
tcgetattr(fd, &opt);
cfsetispeed(&opt, B9600);
cfsetospeed(&opt, B9600);
opt.c_cflag |= CLOCAL | CREAD;
opt.c_cflag &= ~CSIZE;
opt.c_cflag |= CS8;
opt.c_cflag &= ~PARENB;
opt.c_cflag &= ~CSTOPB;
opt.c_cc[VTIME] = 0;
opt.c_cc[VMIN] = 1;
tcsetattr(fd, TCSANOW, &opt);
// 读写数据
while (1)
{
memset(buf, 0, sizeof(buf));
read(fd, buf, sizeof(buf));
printf("recv: %s", buf);
memset(buf, 0, sizeof(buf));
fgets(buf, sizeof(buf), stdin);
write(fd, buf, strlen(buf));
}
// 关闭串口设备文件
close(fd);
return 0;
}
```
上述程序中,首先使用`open`函数打开串口设备文件`/dev/ttyS0`,并设置为阻塞读取模式。然后使用`tcgetattr`和`tcsetattr`函数配置串口属性,包括波特率、数据位、停止位、校验位等。最后使用`read`和`write`函数进行数据的读写。注意,在Linux系统下,串口设备文件的权限一般为`root`用户,因此需要使用`sudo`命令或者修改权限才能进行读写操作。
阅读全文