Qt控制开发板的LED

Qt控制开发板的LED

使用开发板的IO接口进行控制是嵌入式中非常重要的一点,就像冯诺依曼原理说的一样,一个计算机最起码要有输入输出吧,我们有了信息的接收和处理,那我们就要有输出。

我们在开发板上一般都是使用开发板的GPIO接口,那么我们今天就来学学如何在Ubuntu上来编写代码后在开发板上实现控制LED。

UI界面介绍

我们设计简单一点

我们要使用信号和槽来使用按钮来控制灯的亮灭,有两种状态,那我们就要是哟个bool类型的信号

1.              

2.              

编写代码

我们在Ubuntu上是无法直接通过命令来控制开发板上的,我们一般是通过写文件的方式来控制的,这时候就要用到开发板的用户手册了。

它上面写明了设备树,还有驱动的文件地址等等。例如(龙芯2k1000):

注意:部分开发板会在出场的时候就写好这个驱动,比如说,正点原子的6u开发板会有系统运行的呼吸灯,如果有的话,要设置。设置方法在代码中有注释需要的看!!

好,讲完了原理我们来上代码!!!

我们说控制IO接口其实就是通过文件写驱动状态,那我们就先要读写文件

.h文件的编写

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QFile>//添加QFile头文件

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_clicked(bool checked);

private:
    Ui::Widget *ui;
    QFile file;//声名
};
#endif // WIDGET_H

.cpp文件编写

#include "widget.h"
#include "ui_widget.h"
#include"QMessageBox"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //指定文件
    file.setFileName("/sys/class/leds/led1/brightness");
    //这里就是如果你的那个灯有绑定的驱动,使用这命令来将这个驱动设置位NONE,要不然你写进去也没用
    system("echo none > /sys/class/leds/led1/brightness");
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked(bool checked)
{
    //检查LED是否存在
    if(!file.exists()){
        QMessageBox::about(this,"错误","led不存在");
    }
    
    //将文件设置为只写状态,因为我们不读它
    if(file.open(QIODevice::WriteOnly)){
        return;
    }
//我们这里设置一个数组,方便写
    QByteArray buf[] = {"0","1"};

//设置UI的状态,点击后变成另一个样子,然后使用write来写文件来控制
    if(checked){
        ui->pushButton->setText("关");
        file.write(buf[0]);
    }else {
        ui->pushButton->setText("开");
        file.write(buf[1]);
    }
    //要关闭文件!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    file.close();
}

好了,交叉编译的过程就不讲了,每个板子都不一样,原理知道了,你们就自求多福吧。哈哈哈哈!!!

下课  吃饭!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值