嵌入式Linux应用学习(一)------QT控制LED设备硬件
2019-07-12 18:12发布
生成海报
你好!这里是风筝的博客,欢迎和我一起多多交流。Windows下QT Creator版本为5.3.2Linux下QT Creator版本为5.6首先,在Windows下编译好应用程序:控制LED,当然要有LED小灯的驱动了,在这里: 嵌入式Linux驱动学习笔记(一)------第一个LED驱动程序驱动程序不变,把应用程序合并到QT程序里就好了。Windows下打开QT Creator,在源文件下添加led.c文件:#include
#include
#include
#include
#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!
");
}
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!
");
}
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
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
#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编译出可执行文件
之后把可执行文件放进根文件系统即可。
开发板运行结果如下:

点击一下左边按钮,开发板小灯即亮。
点击一下右边按钮,开发板小灯即灭。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮