C++ QCANBUS设备缓冲冲洗
我正在创建一个工具,使用连接到微控制器的PCAN加密狗解析CAN消息。我正在使用Qt5.10中的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上报告的最新值-如果我尝
如果我断开并再次连接,我就能够获得线路上的最新数据。clearFrames()已包含在Qt版本5.12中。我必须从源代码构建Qt,并进行所需的更改。因此,在每次
readFrame()
之前,请检查framesavaailable()
,如果太多,则不经处理就全部读取以清除队列?问题是队列受到保护,并且是QCanbus设备库的一部分。他们没有提供任何API来刷新或清除QVector:这是链接:ReadFrame():有一个QVector incomingFrames,除非我断开设备连接,否则我无法刷新。反复调用ReadFrame()
并丢弃结果太慢了?是的,由于我的微控制器发出的信息量很大,readFrame()无法跟上。我获取更新数据之间的时间延迟呈指数级增长。仔细想想,你认为我可以复制并粘贴QCanBusDevice.cpp和QCanBusDevice.h文件并进行修改吗?