第一:资源基本简介
在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”代表开和关。写入之前先读取蜂鸣器的
状态,预防在用户其他地方有设置过蜂鸣器。
第四:程序运行效果