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

Posted ST小智

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统中使用QT操作硬件蜂鸣器的方法相关的知识,希望对你有一定的参考价值。

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

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

第四:程序运行效果

      

以上是关于linux系统中使用QT操作硬件蜂鸣器的方法的主要内容,如果未能解决你的问题,请参考以下文章

Linux——Linux驱动之完整的驱动操作硬件基础实践,Linux下如何像裸机那样通过GPIO控制蜂鸣器

蜂鸣器驱动

第八章随笔

第八章

Android深度探索

第八章心得体会