首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libserial接收数据顺序错误

libserial接收数据顺序错误
EN

Stack Overflow用户
提问于 2011-06-22 16:55:13
回答 1查看 682关注 0票数 0

我现在正在做一个项目,在Ubuntu下使用libserial进行串口通信。我们修改了libserial源代码以允许标记/空格奇偶校验。但在进行数据接收测试时,有时(大约5%的概率)输入的数据序列是错误的。第一个字节可以跳到传入缓冲区的中间,甚至可以跳到末尾。

问题出在原来的SerialPort::SerialPortImpl::HandlePosixSignal( int singnalNumber) f函数内部,当错误发生时,它无法正确读取某些字节,错误描述为“资源暂时不可用”。但是既然它已经使用ioctl获得了num_of_bytes_available,那么怎么可能失败呢?

在测试期间,我经常在标记/空格奇偶校验之间切换。这会导致问题吗?

SetParity函数中的修改部分

代码语言:javascript
复制
for **PARITY_SPACE**

port_settings.c_cflag |= CMSPAR | PARENB;

port_settings.c_cflag &= ~PARODD;

port_settings.c_iflag = 0;

for **PARITY_MARK**

port_settings.c_cflag |= CMSPAR | PARENB;

port_settings.c_iflag = 0;
EN

回答 1

Stack Overflow用户

发布于 2011-08-02 15:49:08

好了,我终于找到问题出在哪里了。libserial SerialPort类不是线程安全的。POSIX信号可能与boost线程冲突。我能够通过切换到SerialStream类来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6437306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档