ROS-serial串口包的数据原始模式使用方法

该博客介绍了如何通过修改unix.cc文件的441行,使用cfmakeraw函数将终端设置为原始模式以解决串口通信中丢失0x11、0x13、0x14数据的问题。设置原始模式可以避免数据丢失,确保8位数据、无校验位和1位停止位的正确传输。同时,通过设置VMIN和VTIME为0,使读取操作变为轮询读取,并根据新的设置更新字节时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

220623-好像去掉也不会了  可能是接收方法有问题

为了解决串口丢部分0x11 0x13 0x14数据问题

 要将设置成数据原始模式

在unix.cc里面改 441行

cfmakeraw(&options);//将终端设置为原始模式 8n1没有流控

 

 要将设置成数据原始模式

cfmakeraw(&options);//将终端设置为原始模式 8n1没有流控

代码段

// http://www.unixwiz.net/techtips/termios-vmin-vtime.html

// this basically sets the read call up to be a polling read,

// but we are using select to ensure there is data available

// to read before each call, so we should never needlessly poll

options.c_cc[VMIN] = 0;

options.c_cc[VTIME] = 0;

// activate settings

::tcsetattr (fd_, TCSANOW, &options);

cfmakeraw(&options);//将终端设置为原始模式 8n1没有流控

// Update byte_time_ based on the new settings.

uint32_t bit_time_ns = 1e9 / baudrate_;

byte_time_ns_ = bit_time_ns * (1 + bytesize_ + parity_ + stopbits_);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值