#include "beep.h" #include "QTimer" #include "QThread" beep::beep(QObject *parent) : QObject(parent) { /* 开发板的 LED 控制接口 */ file.setFileName("/sys/devices/platform/leds/leds/beep/brightness"); if (!file.exists()) { qWarning()<<"beep init Fail!!"<state = true; } else { file.write("0"); this->state = false; } file.close(); return true; } void beep::start() { QTimer::singleShot(0,this, &beep::run_cb); } bool beep::stop() { QMutexLocker locker(&lock); is_run = false; return true; } // 用户程序调用这个函数开启蜂鸣器 void beep::set_beep(int delay_on_ms,int delay_off_ms,int ticks) { this->delay_on_ms = delay_on_ms; this->delay_off_ms =delay_off_ms; this->ticks = ticks; } // 执行线程 void beep::run_cb() { while(is_run) { QMutexLocker locker(&lock); while(ticks>0) { ticks--; set_state(true); QThread::msleep(delay_on_ms); set_state(false); QThread::msleep(delay_off_ms); } } } beep *Beep(){ static beep *b=nullptr; static QThread thread; if(b==nullptr){ b=new beep(); b->moveToThread(&thread); thread.start(); b->start(); } return b; }