Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ qextserialport在Windows上丢弃数据--对此我能做些什么?_C++_Python_Qt_Pyserial_Qextserialport - Fatal编程技术网

C++ qextserialport在Windows上丢弃数据--对此我能做些什么?

C++ qextserialport在Windows上丢弃数据--对此我能做些什么?,c++,python,qt,pyserial,qextserialport,C++,Python,Qt,Pyserial,Qextserialport,背景 目前,我使用它来收集传感器数据,然后通过其USB串行端口以115200波特的速度传输数据 在过去,我使用Python开发与mote接口的程序,但Python的GIL也有线程问题,只有不使用Python才能解决(我在初始测试阶段后需要它的并发性),因此我转向了C++/Qt。我花了很多时间在Qt上,因为我没有事先的知识,学习了它的大多数最佳实践,使一切都完美地工作。除了这个问题什么都有 问题 当我尝试读取端口时,如果有大量数据通过,某些数据集将神秘地出错,导致项目中的丢失率高于预期 这种情况在

背景

目前,我使用它来收集传感器数据,然后通过其USB串行端口以115200波特的速度传输数据

在过去,我使用Python开发与mote接口的程序,但Python的GIL也有线程问题,只有不使用Python才能解决(我在初始测试阶段后需要它的并发性),因此我转向了C++/Qt。我花了很多时间在Qt上,因为我没有事先的知识,学习了它的大多数最佳实践,使一切都完美地工作。除了这个问题什么都有

问题

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

这种情况在我使用时发生,但在使用时不会发生

以下是使用qextserialport初始化端口的方式:

和pySerial:

问题

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


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

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


Wes的评论解决了我的另一个问题,那就是微尘没有分配足够的内存来存储所有数据,这导致了数据丢失。

很可能是因为串行端口的输入缓冲区比您读取它的速度快。您可能需要更快或更频繁地读取/检查它,或者找到一种增加缓冲区大小的方法。但我不知道怎么做,这就是为什么这是一个评论,而不是一个答案:-P
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);
port = Serial('COM3', 115200)