嵌入式Linux应用学习(一)------QT控制LED设备硬件

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Guet_Kite/article/details/76460522

你好!这里是风筝的博客,

欢迎和我一起多多交流。

Windows下QT Creator版本为5.3.2

Linux下QT Creator版本为5.6

首先,在Windows下编译好应用程序:

控制LED,当然要有LED小灯的驱动了,在这里: 嵌入式Linux驱动学习笔记(一)------第一个LED驱动程序

驱动程序不变,把应用程序合并到QT程序里就好了。

Windows下打开QT Creator,

在源文件下添加led.c文件:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include "led.h"

void led_on(void)
{
    int fd;
    int val = 1;
    fd = open("/dev/led", O_RDWR);
    if (fd < 0)
    {
        printf("can't open!\n");
    }
    else
        write(fd, &val, 4);
}

void led_off(void)
{
    int fd;
    int val = 0;
    fd = open("/dev/led", O_RDWR);
    if (fd < 0)
    {
        printf("can't open!\n");
    }
    else
        write(fd, &val, 4);
}

加了led.c文件,当然要在头文件里加led.h文件啦:

#ifndef LED_H
#define LED_H


void led_on(void);
void led_off(void);

#endif // LED_H


接着,在mainwindow.h文件里,添加槽函数的定义,修改为如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

public slots:
    void open_led();
    void close_led();
};

#endif // MAINWINDOW_H

最后,在mainwindow.cpp文件里,修改内容为:

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <qpushbutton.h>
#include "led.c"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    resize(480,272);
    QPushButton *LED_OFF = new QPushButton("LED_OFF",this);
    QPushButton *LED_ON = new QPushButton("LED ON",this);
    LED_ON->setGeometry(75, 50, 75, 40);
    LED_OFF->setGeometry(300, 50, 75, 40);

    QObject::connect(LED_ON,SIGNAL(clicked()),this,SLOT(open_led()));
    QObject::connect(LED_OFF,SIGNAL(clicked()),this,SLOT(close_led()));
}

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

void MainWindow::open_led()
{
    led_on();
}

void MainWindow::close_led()
{
    led_off();
}

这样在Windows下一编译,无错误,就可以了。

然后他这些源文件(8个文件把)移到Linux下:

比如我是移动到/work/qt/led目录,我的QT安装目录是/work/qt_install

现在就可以在Linux下编译程序了。

cd /work/qt/led

/work/qt_install/bin/qmake

上面这条指令就会生成Makefile.

make编译出可执行文件

之后把可执行文件放进根文件系统即可。


开发板运行结果如下:


点击一下左边按钮,开发板小灯即亮。

点击一下右边按钮,开发板小灯即灭。








展开阅读全文

没有更多推荐了,返回首页