高中生
最后登录1970-1-1
在线时间 小时
注册时间2015-12-5
|

楼主 |
发表于 2025-3-20 15:36:43
|
显示全部楼层
串口配置函数如下:
int configure_serial_port(const char *path,speed_t speed)
{
int fd;
// 获取串口设备描述符
fd = open(path, O_RDWR);
if (fd < 0)
{
printf("Fail to Open %s device\n", path);
return fd;
}
struct termios opt;
// 清空串口接收缓冲区
tcflush(fd, TCIOFLUSH);
// 获取串口参数opt
tcgetattr(fd, &opt);
// 设置串口输出波特率
cfsetospeed(&opt, speed);
// 设置串口输入波特率
cfsetispeed(&opt, speed);
// 设置数据位数
opt.c_cflag &= ~CSIZE;
opt.c_cflag |= CS8;
// 校验位
opt.c_cflag &= ~PARENB; /* 不使用奇偶校验 */
opt.c_iflag &= ~INPCK; /* 禁止输入奇偶校验 */
// opt.c_cflag &= ~PARODD; /* 设置为偶效验*/
// 设置停止位, 1 个停止位
opt.c_cflag &= ~CSTOPB;
// 确保关闭 ONLCR ,取消 将换行符 \n 自动转换为回车+换行符 \r\n
opt.c_oflag &= ~ONLCR;
// 禁止回车符转换
opt.c_iflag &= ~(ICRNL | INLCR | IGNCR);
// 禁止软件流控
opt.c_iflag &= ~(IXON | IXOFF | IXANY);
/* 取消回显 */
opt.c_lflag &= ~ECHO;
// 更新配置
tcsetattr(fd, TCSANOW, &opt);
printf("Device %s is set to 115200bps,8N1\n", path);
return fd;
} |
|