回复帖子:(宫梓萱)你好,我贴下我测试的代码。我使用了...

用户名:   *您没有注册?
密码:   *忘记论坛密码?    标题采用“回复:XXX....”
验证码 点击获取验证码
主题标题:  *不得超过 200 个汉字
当前心情
上一页 发帖表情 下一页
内容
  

主题最新回顾(发布时间:2024-1-10 17:24:00)
--  作者:hzc
--  

你好,我看代码中有互斥锁,可以检查一下是不是负责刷新界面显示的线程中也加了锁,所以在接收线程中互斥锁没有unlock之前,界面显示的线程就无法执行,导致表现起来就很卡。


主题最新回顾(发布时间:2024-1-10 16:22:00)
--  作者:宫梓萱
--  

你好,我贴下我测试的代码。我使用了usleep后更卡了。我认为运行了usleep后串口接收线程就休眠了,此时QT的GUI线程能顺利运行啊。但的确是更卡了。如下是串口线程代码。

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看


主题最新回顾(发布时间:2024-1-5 15:53:00)
--  作者:hzc
--  

你好,可以检查一下接收线程的操作,在每次接收循环之间增加一点延时。如果接收线程在接收大量数据的时候,是类似死循环一样的操作,就会将CPU的资源占完,导致无法正常切换到其他线程的时间片,这样就会导致其他线程表现出卡顿的现象。


主题最新回顾(发布时间:2024-1-5 14:48:00)
--  作者:宫梓萱
--  ESM6800在QT程序里使用串口接收数据时GUI线程会卡住

使用linux的方式单独开了一个串口发送接收线程。QT的动画来提示数据接收状态。接收少量数据时还好。在115200bps下接收20多KB数据时发生QT动画卡住,接收完成才正常。我想我单独开了一个线程啊,串口线程和QT的GUI线程是互不干扰的。实际测试发现,GUI线程下的定时器也不能用,只有等数据接收完成才可以。这是开了一个假线程吗。这个串口线程是参照例程的。