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

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

第一:资源基本简介

     在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”代表开和关。写入之前先读取蜂鸣器的

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

第四:程序运行效果

     

目录
相关文章
|
8天前
|
Linux
【Linux系统编程】基础指令(二)(下)
【Linux系统编程】基础指令(二)
|
8天前
|
Linux C语言
【Linux系统编程】基础指令(二)(上)
【Linux系统编程】基础指令(二)
|
1天前
|
Linux 网络安全 数据库
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
|
1天前
|
存储 移动开发 Linux
Linux系统之部署h5ai目录列表程序
【5月更文挑战第3天】Linux系统之部署h5ai目录列表程序
12 1
|
1天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
9 3
|
6天前
|
运维 监控 Linux
提升系统稳定性:Linux内核参数调优实战
【5月更文挑战第1天】 在运维领域,保障服务器的高效稳定运行是核心任务之一。Linux操作系统因其开源、可靠和灵活的特点被广泛应用于服务器中。本文将深入探讨通过调整Linux内核参数来优化系统性能,提升服务器的稳定性和响应能力。文章首先介绍了内核参数调优的必要性和基本原则,然后详细阐述了调优过程中的关键步骤,包括如何监控当前系统状态,确定性能瓶颈,选择合适的参数进行调优,以及调优后的测试与验证。最后,文中提供了一些常见问题的解决策略和调优的最佳实践。
29 5
|
6天前
|
Ubuntu Unix Linux
|
6天前
|
Linux
Linux系统ps命令
这些是一些常见的 `ps`命令选项和用法,用于查看系统中运行的进程及其相关信息。您可以根据需要选择合适的选项以满足您的任务要求。
18 0
|
7天前
|
存储 负载均衡 网络协议
在Linux中优化系统性能的实用指南
【4月更文挑战第30天】本文是关于Linux系统性能优化的指南,涵盖硬件选择、系统及软件更新、调整Swap分区、内核参数优化、使用性能分析工具、文件系统优化、网络服务优化和定期维护等方面。通过这些方法,可提升系统响应速度,降低资源消耗,延长硬件寿命。注意,优化需根据具体系统和应用需求进行。
|
7天前
|
弹性计算 Shell Linux