首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qextserialport在Windows上删除数据--我能做些什么呢?

qextserialport在Windows上删除数据--我能做些什么呢?
EN

Stack Overflow用户
提问于 2012-03-15 03:39:45
回答 1查看 1.6K关注 0票数 2

背景

目前,我有TelosB莫特,用来收集传感器数据,然后通过其115200波特的USB串口进行传输。

在过去,我使用Python来开发与mote接口的程序,但是Python的GIL也有一些线程问题,只能通过不使用Python来解决(在初始测试阶段之后我需要它的并发性),所以我转向了C++/Qt。我花了很多时间和Qt在一起,因为我以前没有知识,学到了它的大部分最佳实践,而且一切都很完美。除了这个问题。

问题

当我试图读取端口时,如果有大量数据通过,一些数据集将神秘地出错,导致在我的项目中出现高于预期的丢失率。

当我使用qextserialport时会发生这种情况,但pySerial不会发生这种情况。

这就是我如何用qextserialport初始化端口的方法。

代码语言:javascript
复制
port.setName("COM3");
port.setQueryMode(QextSerialPort::EventDriven);
port.setBaudRate(BAUD115200);
port.setParity(PAR_NONE);
port.setDataBits(DATA_8);
port.setStopBits(STOP_1);
port.setFlowControl(FLOW_OFF);

和pySerial

代码语言:javascript
复制
port = Serial('COM3', 115200)

问题

因此,我怀疑这两个库初始化端口的方式有所不同,但我没有串行编程的经验,可能是错误的。

有人知道是什么导致了这个错误吗?

EN

回答 1

Stack Overflow用户

发布于 2012-03-15 11:51:38

事实证明,我错误地使用了QextSerialPort::bytesAvailable()而不是QextSerialPort::atEnd()。我在另一个问题中看到了这一点,它帮助我消除了在等待超时时基本上阻止我的应用程序的错误消息,

韦斯的评论解决了我的另一个问题,那就是莫特没有足够的内存来存储所有的数据,导致数据丢失。

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

https://stackoverflow.com/questions/9713656

复制
相关文章

相似问题

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