Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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++ QCANBUS设备缓冲冲洗_C++_Qt_Buffer_Flush_Can Bus - Fatal编程技术网

C++ QCANBUS设备缓冲冲洗

C++ QCANBUS设备缓冲冲洗,c++,qt,buffer,flush,can-bus,C++,Qt,Buffer,Flush,Can Bus,我正在创建一个工具,使用连接到微控制器的PCAN加密狗解析CAN消息。我正在使用Qt5.10中的QCanBus库 连接了多条CAN总线,我为每一条总线都提供了一个QThread,用于接收和解析QCanBusDevice::framesReceived signal上的消息 并行使用PCAN视图,我可以看到微控制器报告的can数据变化不会立即反映在我的工具中。接收队列似乎仍在清空,即我的工具无法像微控制器发送CAN消息数据那样快速解析和存储CAN消息数据 我只需要关注CAN上报告的最新值-如果我尝

我正在创建一个工具,使用连接到微控制器的PCAN加密狗解析CAN消息。我正在使用Qt5.10中的QCanBus库

  • 连接了多条CAN总线,我为每一条总线都提供了一个QThread,用于接收和解析QCanBusDevice::framesReceived signal上的消息
  • 并行使用PCAN视图,我可以看到微控制器报告的can数据变化不会立即反映在我的工具中。接收队列似乎仍在清空,即我的工具无法像微控制器发送CAN消息数据那样快速解析和存储CAN消息数据
  • 我只需要关注CAN上报告的最新值-如果我尝试在qDebug()上打印消息的有效负载,我可以看到我的工具正在解析旧数据,这似乎仍在清空接收队列 有没有办法在不断开QCANBUS设备的情况下刷新接收队列?
    如果我断开并再次连接,我就能够获得线路上的最新数据。

    clearFrames()已包含在Qt版本5.12中。我必须从源代码构建Qt,并进行所需的更改。

    因此,在每次
    readFrame()
    之前,请检查
    framesavaailable()
    ,如果太多,则不经处理就全部读取以清除队列?问题是队列受到保护,并且是QCanbus设备库的一部分。他们没有提供任何API来刷新或清除QVector:这是链接:ReadFrame():有一个QVector incomingFrames,除非我断开设备连接,否则我无法刷新。反复调用
    ReadFrame()
    并丢弃结果太慢了?是的,由于我的微控制器发出的信息量很大,readFrame()无法跟上。我获取更新数据之间的时间延迟呈指数级增长。仔细想想,你认为我可以复制并粘贴QCanBusDevice.cpp和QCanBusDevice.h文件并进行修改吗?