大家好,今天主要和大家聊一聊,如何使用QT进行蜂鸣器的控制与实现。
目录
第一:资源基本简介
第二:应用实例的代码实现
第三:源文件“mainwindow.cpp”的具体实现
第四:程序运行效果
第一:资源基本简介
在Linux系统中板载资源上有一个蜂鸣器(BEEP)。此蜂鸣器直接连接在一个GPIO上,管脚资源限制。
第二:应用实例的代码实现
想要控制蜂鸣器(BEEP),需要设置一个按钮,点击即可控制BEEP状态进行翻转,打开或者关闭蜂鸣器。
在源文件"mainwindow.cpp"的具体实现
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <QFile>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
//按钮
QPushButton *pushButton;
//文件
QFile file;
//设置BEEP的状态
void setBeepState();
//获取BEEP的状态
bool getBeepState();
private slots:
//槽函数
void pushButtonClicked();
};
#endif
第三:源文件“mainwindow.cpp”的具体实现
//源码文件的具体实现
#include "mainwindow.h"
#include <QDebug>
#include <QGuiApplication>
#include <QScreen>
#include <QRect>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{
//获取屏幕的分辨率
QList <QScreen *> list_screen = QGuiApplication::screens();
/* 如果是 ARM 平台,直接设置大小为屏幕的大小 */
#if __arm__
/* 重设大小 */
this->resize(list_screen.at(0)->geometry().width(),
list_screen.at(0)->geometry().height());
#else
/* 开发板的蜂鸣器控制接口 */
file.setFileName("/sys/devices/platform/leds/leds/beep/brightness");
if (!file.exists())
/* 设置按钮的初始化文本 */
pushButton->setText("未获取到 BEEP 设备!");
/* 获取 BEEP 的状态 */
getBeepState();
/* 信号槽连接 */
connect(pushButton, SIGNAL(clicked()), this, SLOT(pushButtonClicked()));
}
bool MainWindow::getBeepState()
{
//如果文件不存在,则返回
if (!file.exists())
return false;
if(!file.open(QIODevice::ReadWrite))
qDebug()<<file.errorString();
QTextStream in(&file);
/* 读取文件所有数据 */
QString buf = in.readLine();
/* 打印出读出的值 */
qDebug()<<"buf: "<<buf<<endl;
file.close();
if (buf == "1") {
pushButton->setText("BEEP 开");
return true;}
else {
pushButton->setText("BEEP 关");
return false;
}
}
分析:设置蜂鸣器的方法,写入“0”或“1”代表开和关。写入之前先读取蜂鸣器的
状态,预防在用户其他地方有设置过蜂鸣器。
第四:程序运行效果