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

用Qt怎样实现超时处理

1
回复
7580
查看
[复制链接]
累计签到:12 天
连续签到:1 天
来源: 2017-6-16 21:06:14 显示全部楼层 |阅读模式
1Qter豆
现在自己想做一个上位机,主要为了给设备进行IAP,是通过USB-CAN与我的设备进行通信,现在一个问题就是,当上位机给设备发送数据之后,设备会返回一些数据,但是这时间不确定,我是想用超时来判断设备是否返回了数据,目前的方法是每次数据发送完成之后,调用该函数QTimer::singleShot(TimeOut, this, &MainWindow::Time_update);在槽函数Time_update将一个全局变量置一,然后来判断该变量是否为一来实现超时处理,具体代码如下: QTimer::singleShot(TimeOut, this, &MainWindow::Time_update);    if(timeout_flag == 1)//判断全局变量是否置一        {            timeout_flag = 0;             read_num  =VCI_GetReceiveNum(4,DevIndex,CANIndex);        }        else        {            read_num = 0;        }//槽函数void MainWindow::Time_update(){    timeout_flag = 1;}现在有一个问题就是这儿: QTimer::singleShot(TimeOut, this, &MainWindow::Time_update);//TimeOut给的是10,    if(timeout_flag == 1)//判断全局变量是否置一这样来判断容易出问题,有没有其他的方式实现超时处理.

回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2017-6-17 23:18:11 显示全部楼层
互斥、信号量、条件变量。
推荐条件变量。
回复

使用道具 举报

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

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