你好!这里是风筝的博客,
欢迎和我一起多多交流。
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
#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编译出可执行文件
之后把可执行文件放进根文件系统即可。
开发板运行结果如下:
点击一下左边按钮,开发板小灯即亮。
点击一下右边按钮,开发板小灯即灭。