• 201阅读
  • 2回复

[提问]QSerialPort超时接收一包数据失败 [复制链接]

上一主题 下一主题
离线fxliuqq
 

只看楼主 倒序阅读 楼主  发表于: 04-01
现在做一上位机与设备通信,由于数据包不是定长的,设备的协议做的也不是很完善,存在错判的问题。现在就想通过超时判断来获取一包数据,数据包长100多,数据包频率50Hz。在子线程中接收数据。发现分三次接收。看接收时间存在当前包最后一次接收与下一包最前接收黏在一起的情况,导致waitForReadyRead(10)失败,setReadBufferSize(1),也不行。有什么办法吗?
离线lennyaaa

只看该作者 1楼 发表于: 04-02
定期高频多次收数据,数据全部缓存,定期低频处理数据,按协议拆包,黏的现象是一定存在的,程序处理好就行了
离线jokerhuang

只看该作者 2楼 发表于: 04-15
readyread收数据存自己的缓存,收一次尝试解全部。解不出就丢一个字节继续解,尽可能解。只能帮你到这了。
快速回复
限100 字节
 
上一个 下一个