找回密码
 立即注册
收起左侧

QApplication::processEvents();在串口接收循环中使用,对吗?

2
回复
7167
查看
[复制链接]
累计签到:58 天
连续签到:1 天
来源: 2017-9-15 17:44:52 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 1010106127ycgxy 于 2017-9-15 17:47 编辑

void MainWindow::SendFrame(char *n, bool m)   //发送函数
{
   
}
void MainWindow::slotReceiveData()   //串口接收函数
{
    uchar res;
    while(p_serial_port->read((char*)&res,1)>0)
    {              
        switch(frame_data[1])
        {
           case 1:
           {
              send_frame = Y;
              break;
           }
           case 2:
           {
                SendFrame(n,m);         
                while(send_frame!=Y)
                {
                    //程序死在这里,出不来了
                    QApplication::processEvents();   //循环等待
                }               
               break;
           }            
        }                                      
    }
}
在串口接收函数slotReceiveData(),使用QApplication::processEvents(); 上位机和下位机进行通信,case2上位机发送数据给下位机(SendFrame(n,m)),下位机应答case1返回,从而确认数据已经发出;但是像上面这样使用QApplication::processEvents(),是不是造成递归调用?现在程序死在while()循环中,请教大家:我的代码有问题吗?有什么办法解决吗,谢谢!      

最佳答案

查看完整内容

感觉程序设计有些问题啊,而且信息不全,没法分析问题
回复

使用道具 举报

累计签到:6 天
连续签到:1 天
2017-9-15 17:44:53 显示全部楼层
感觉程序设计有些问题啊,而且信息不全,没法分析问题
回复

使用道具 举报

累计签到:58 天
连续签到:1 天
2018-4-8 20:56:36 显示全部楼层
后面我把 ”QApplication::processEvents();   //循环等待” 这句话去掉了,在其他地方做了修改,程序能正常运行了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了