gpt4 book ai didi

c++ - 在 Qt 5.5 中持续检查主循环

转载 作者:太空狗 更新时间:2023-10-29 23:01:00 26 4
gpt4 key购买 nike

我有一个在线性路径上移动的设备,基本上是一个 linear actuator .当设备到达物理端时,它会碰到一个限制触点,该触点会向我的软件发送信号。我将需要不断检查此信号是否在线。但是我在 Qt5.5 中实现这个逻辑时遇到了困难。

我一直在阅读关于 QtConcurrent 的文章,这似乎是一个可行的解决方案,但在试驾后我发现如果没有某种 while 我无法解决我的问题(true) 循环。然而,实现 while(true) 循环似乎会减慢我代码中的所有其他内容,因此使该解决方案完全无用。

我会发布代码,但鉴于它使用的库和设备的命名法非常特殊,我会免除您的痛苦,但如果有人可以指导我阅读此类内容,我将不胜感激。我宁愿避开 QtThread 并基本上手动设置线程,因为此时我对使用它们感到不舒服,而且我在这个项目上确实有时间限制,所以最好是我没有做太多实验。

tldr:我需要以某种方式在检查 bool 值更改的程序主循环中放置一些代码。所述变化由通过以太网通信的设备从外部发送到程序。

最佳答案

class Checker : public QObject
{
Q_OBJECT
public:
Checker(void)
{
timer.setInterval(100);// give it a interval, like 100ms?
connect(timer, SIGNAL(timeout()), this, SLOT(checkHW()));
}
void start(void)
{
timer.start();// although you can start the timer in the constructor
// but I guess you want to start it later, after HW is
// ready.
}
private Q_SLOTS:
void checkHW()
{
bool hit = false;
// check the hardware here
if(hit){
emit hitEnd();// tell others about the event
}
}
signals:
void hitEnd(void);
private:
QTimer timer;
}

如果检查硬件开关不会花费太多时间,那么您真的不需要另一个线程。但是,如果 checkHW() 确实需要花费大量时间,那么将此类移出主线程会有所帮助。

关于c++ - 在 Qt 5.5 中持续检查主循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32039519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com