您尚未登录。

楼主 # 2023-03-07 14:49:59

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,199
积分: 1139.5

接收线程里收到数据后将数据通过信号发送出去,主线程对应的槽函数大概19秒后才触发。

环境是,nuc972 arm板,qt5.6,socketcan数据收发。

先是主线程里通过can发送数据,对方设备收到数据后返回,接收线程里很快就收到数据。从时间看,can发送数据后,1秒就收到对方返回的数据。然后将数据作为信号的参数,发送信号。数据是个can_frame结构体变量,好像是13字节。
主线程里对应的槽函数,大概19秒后才触发,有时候好像是11秒。为什么会这么慢呢?

:/mnt# ./cantest3
nuc970-can1 nuc970-can1 can1: setting BTR=1b13 BRPE=0000
main thread socketid is  4 

can recv thread is begin. 

"[1970-01-01 04:34:07]"
socketcan write ok: 9b60f5f4, 00, 10, 03, 00, d4, c3, b2, a1
"[1970-01-01 04:34:08]"
recv thread received: 9b00f4f5, 08, 03, 10, 05, 00, 82, 00, 00, 00

main thread recv signal.
"[1970-01-01 04:34:27]"
device online 

---------------------------------

晕死,主线程里加了个sleep(20),阻塞在这里了。
版主看到的话,麻烦删了这个帖子吧。

最近编辑记录 Gentlepig (2023-03-07 15:41:47)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn