基于linux下的C语言485串口通信例程
时间: 2023-10-03 09:02:41 浏览: 100
485串口通信实例剖析
4星 · 用户满意度95%
下面是一个基于Linux下的C语言485串口通信例程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
int main(int argc, char **argv)
{
int fd;
struct termios opt;
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); // 打开串口设备
if (fd < 0) {
perror("open serial port failed");
exit(1);
}
fcntl(fd, F_SETFL, 0); // 设置串口为阻塞模式
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_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
opt.c_oflag &= ~OPOST;
opt.c_cc[VTIME] = 0;
opt.c_cc[VMIN] = 1;
tcsetattr(fd, TCSANOW, &opt); // 设置串口属性
char buf[1024];
while (1) {
int len = read(fd, buf, sizeof(buf)); // 读取串口数据
if (len > 0) {
buf[len] = '\0';
printf("recv: %s\n", buf); // 处理数据
}
}
close(fd); // 关闭串口设备
return 0;
}
```
这个例程打开了串口设备`/dev/ttyS0`,并设置波特率为9600,然后进入一个循环读取串口数据的过程。可以根据需要修改串口设备文件名和波特率等参数。
阅读全文