linux系统中使用QT操作硬件蜂鸣器的方法

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

     大家好今天主要和大家聊一聊如何使用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”代表开和关。写入之前先读取蜂鸣器的

状态预防在用户其他地方有设置过蜂鸣器。

第四程序运行效果

      

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux