讯为 4412 开发板利用 嗡鸣器 实现QT按键 beep音

讯为4412开发板利用嗡鸣器实现按键beep音

环境:

讯为4412开发板,linux系统,QT5.10.0

 

原理:

1、通过设备文件来实现嗡鸣器功能,文件在开发板的路径为“/dev/buzzer_ctl”

实现方法:

fb=open("/dev/buzzer_ctl",0)

如果打开成功,就可以进行嗡鸣器操作。

2、通过ioctl进行嗡鸣器的开关控制

打开嗡鸣器:ioctl(fb,1,0)

关闭嗡鸣器:ioctl(fb,0,0)

3、通过延时函数,使嗡鸣器响一定的时间后关闭

延时50毫秒后关闭:usleep(50000);

函数“usleep”的参数是微妙,50000表示的是50毫秒,其他时间可以根据需要自由设定。

 

以下是代码实现

buzzer.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = buzzer

TEMPLATE = app

SOURCES += main.cpp\

        buzzertest.cpp

HEADERS  += buzzertest.h

FORMS    += buzzertest.ui

buzzertest.h

#ifndef BUZZERTEST_H

#define BUZZERTEST_H

#include <QMainWindow>

namespace Ui {

class buzzertest;

}

class buzzertest : public QMainWindow

{

    Q_OBJECT

public:

    explicit buzzertest(QWidget *parent = 0);

    ~buzzertest();

protected:

     void changeEvent(QEvent *e);

private slots:

     void on_pushButton_clicked();

private:

    Ui::buzzertest *ui;

};

#endif // BUZZERTEST_H

buzzertest.cpp

#include "buzzertest.h"

#include "ui_buzzertest.h"

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <string.h>

#include <sys/ioctl.h>

#include <stdio.h>

#include <unistd.h>

 

static int fb;

buzzertest::buzzertest(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::buzzertest)

{

    ui->setupUi(this);

 

    fb=open("/dev/buzzer_ctl",0);

    if(fb<0)

    {

        perror("open device buzzer failed!");

        exit(1);

    }

}

 

buzzertest::~buzzertest()

{

    delete ui;

}

void buzzertest::changeEvent(QEvent *e)

{

    QMainWindow::changeEvent(e);

    switch (e->type()) {

    case QEvent::LanguageChange:

        ui->retranslateUi(this);

 

        break;

    default:

        break;

    }

 

}

 

void buzzertest::on_pushButton_clicked()

{

    ioctl(fb,1,0);

    usleep(50000);

    ioctl(fb,0,0);

}

 

main.cpp

#include "buzzertest.h"

#include <QApplication>

 

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    buzzertest w;

    w.show();

 

    return a.exec();

}

 

发布了19 篇原创文章 · 获赞 47 · 访问量 2649

猜你喜欢

转载自blog.csdn.net/papership/article/details/93068652