c – 在Qt中计时事件的最佳方法
发布时间:2020-12-16 09:57:59 所属栏目:百科 来源:网络整理
导读:我正在Qt / c中编写一个软件,通过串口与arduino和其他电子设备进行通信. 我需要启动一系列事件,以不同的时序调用不同的插槽,如下所示: 启动电机1 20秒 10秒后启动电机2 停止电机1 更改电机1速度 启动电机1 30秒 我尝试过使用QTimer :: singleShot,但它只适
我正在Qt / c中编写一个软件,通过串口与arduino和其他电子设备进行通信.
我需要启动一系列事件,以不同的时序调用不同的插槽,如下所示: >启动电机1 20秒 我尝试过使用QTimer :: singleShot,但它只适用于没有参数的插槽,我需要不时设置电机速度等参数. 现在我正在使用面向currentTime do dieTime的延迟功能,但跟踪所有设备的时序很复杂. 这样做的最佳解决方案是什么? 解决方法
如果使用带有Functor(函数对象)的
overloaded method,则可以使用静态QTimer单次拍摄功能.这将允许您捕获所需的变量;哪个电机,速度,动作等.如果你不熟悉Functors,你可以阅读它们
here.
或者,由于问题没有提供代码示例,我们假设您已经编写了启动和停止电机的功能.对于更直接的方法,with C++11,你可以这样做: StartMotor(1); // Stop in 20 seconds QTimer* p1 = new QTimer; connect(p1,&QTimer::timeout,[=]{ StopMotor(1); p1->deleteLater(); // clean up }); p1->start(1000 * 20); // trigger in 20 seconds // After 10 seconds,start motor 2 QTimer* p2 = new QTimer; connect(p2,[=]{ StartMotor(2); // And Stop Motor 1 StopMotor(1); p2->deleteLater(); // clean up }); p2->start(1000 * 10); // trigger in 10 seconds ……对于每个定时动作等等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |