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

时间:2021-11-30 18:57:37


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

欢迎和我一起多多交流。


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编译出可执行文件

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


开发板运行结果如下:

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

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

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