linux下串口单独做就能返回在qt中就会死

arm开发板,同样的串口初始化函数,读写函数。(openreadwrite)。问题在于read(非阻塞),单独写在一个c文件中编译,就能正常运行。在qt中,button的... arm开发板,同样的串口初始化函数,读写函数。(open read write)。问题在于read(非阻塞),单独写在一个c文件中编译,就能正常运行。在qt中,button的槽函数中就卡死。请问是什么原因。
详情:
开发板:飞凌am335xSII
上位机Ubuntu12.04
用单片机给arm发数据,每隔一秒发送一次152,下一秒发送192,无限循环
arm上用单独的c文件,非阻塞,while(1){nbyte=read(fd ,buff,1);printf("%d\n",buff[0]);}可以正常接收。
但是在qt的button槽函数中就卡死
展开
 我来答
AA5956
2015-08-07 · TA获得超过1868个赞
知道小有建树答主
回答量:705
采纳率:72%
帮助的人:468万
展开全部
因为界面程序不能阻塞。
你可以按下按钮开启一个线程,在另外的线程中循环读。
按钮的事件中别做长时间的任务处理。交给后台线程做。做完之后发信号就可以了
更多追问追答
追问
我就是非阻塞的啊,无论有没有数据可读都直接返回。为什么还卡
追答
因为你是while(1);不是阻塞么。界面在等待你的槽函数返回呢。
你把你的读函数去掉一样会卡死。因为while(1)不会让你的槽函数返回。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式