QT定时轮询发出信号
使用QT自带定时接口,实现linux用户态设备的轮询,根据指定条件,发出信号,以供特定的槽函数连接使用。my_timer.h使用信号和槽Q_OBJECT是必须要有的这个自定义类中只是给出了定时器时间到要做什么处理hanleTimeOut()sensorValueIsChange()是信号函数,将来需要发射和连接的函数构造函数为nullptr是为了在别处调用时,不用...
·
使用QT自带定时接口,实现linux用户态设备的轮询,根据指定条件,发出信号,以供特定的槽函数连接使用。
my_timer.h
- 使用信号和槽Q_OBJECT是必须要有的
- 这个自定义类中只是给出了定时器时间到要做什么处理hanleTimeOut()
- sensorValueIsChange()是信号函数,将来需要发射和连接的函数
- 构造函数为nullptr是为了在别处调用时,不用指定传入参数
#ifndef MY_TIMER_H
#define MY_TIMER_H
#include"i2c_sensor.h"
#include<QDebug>
#include<QTimerEvent>
#include<QObject>
#include<stdlib.h>
class a7TestTimer:public QObject
{
Q_OBJECT
signals:
void sensorValueIsChange(void);
public:
a7TestTimer(QObject* parent = nullptr);
~a7TestTimer();
void handleTimeOut();
virtual void timerEvent(QTimerEvent *event);
private:
int a7TimerID;
int result_int = 0;
string result;
};
#endif // MY_TIMER_H
my_timer.cpp
#include"my_timer.h"
#define A7TESTTIMEROUT (1000) //1s
a7TestTimer::a7TestTimer(QObject*parent):QObject (parent)
{
a7TimerID = this->startTimer(A7TESTTIMEROUT);
}
a7TestTimer::~a7TestTimer()
{
killTimer(a7TimerID);
}
void a7TestTimer::timerEvent(QTimerEvent *event)
{
if(event->timerId() == a7TimerID){
handleTimeOut();
}
}
void a7TestTimer::handleTimeOut()
{
//qDebug()<< "**************ok time handle!!!!!!!!!" <<endl;
//做自己必要的处理,比如几秒轮询一次端口等
if(判断条件)
{
emit sensorValueIsChange();
}else {
qDebug()<<“......”<<endl;
}
}
mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
a7TestTimer *timetest = new a7TestTimer();
connect(timetest,SIGNAL(sensorValueIsChange()),this,SLOT(signale_handle()));
qDebug()<<"connect ok!"<<endl;
}
void MainWindow::signale_handle()
{
qDebug()<<"**************detected closed*************"<<endl;
}
槽函数signale_handle()需要在mainwindow类,或者自己使用的主窗口类中声明。
或者使用定时器timer类:
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(1000);
使用B包方式:
scanHeadTimer = new QTimer(this);
connect(scanHeadTimer,&QTimer::timeout,[=](){
a7PollTimer::scanSensorDistance();
});
scanHeadTimer->start(10);
更多推荐
已为社区贡献1条内容
所有评论(0)