嵌入式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编译出可执行文件 之后把可执行文件放进根文件系统即可。
开发板运行结果如下:
点击一下左边按钮,开发板小灯即亮。 点击一下右边按钮,开发板小灯即灭。