编辑
2023-12-28
软件编程
0

image.png

从源码提供的示例代码中找到GPIO.cpp与GPIO.h。创建一个gpio工程。放进去。

image.png

打开这个新的工程,将CPP与H文件,添加进去。

image.png

在UI中添加LCD Number

image.png

再添加一个label

image.png

向mainwindow.cpp添加

js
#include "gpio.h" #define KEY_HOME 16777330 #define KEY_ENTER 16777220 #define KEY_NEXT 16777328 #define KEY_PREV 65 static unsigned char gpioflag = 1; int countkey = 0; void MainWindow::keyPressEvent(QKeyEvent *event) { if(event->key()==KEY_ENTER) { if (gpioflag == 1) { ui->label->setText("led on"); GPIO_Init(); GPIO_ConfigPin(PB, 1, OUT); GPIO_SetPin(PB,1,0); gpioflag = 0; } else { ui->label->setText("led off"); GPIO_Init(); GPIO_ConfigPin(PB, 1, OUT); GPIO_SetPin(PB,1,1); gpioflag = 1; } countkey++; ui->lcdNumber->display(countkey); if(countkey > 1000) countkey = 0; } if(event->key()==KEY_NEXT) { ui->label->setText("KEY_NEXT"); } if(event->key()==KEY_PREV) { ui->label->setText("KEY_PREV"); } if(event->key()==KEY_HOME) { ui->label->setText("KEY_HOME"); } printf("\r\n##########key cstx ############# \r\n"); }

向mainwindow.h中添加

js
void keyPressEvent(QKeyEvent *event);

执行qmake和make

image.png

把这个换成NULL

image.png

向mainwindow.h中添加

js
#include <QKeyEvent> #include <QEvent>

传过去

js
scp gpio root@192.168.50.40:/root/qt_app

看下传来了吗

image.png

执行一下,确实能实现GPIO控制灯。

js
# mkdir qt_app # cd qt_app # ls # pwd /root/qt_app # ls # ls gpio # ./gpio

一共修改了mainwindow.h

js
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QKeyEvent> #include <QEvent> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = NULL); ~MainWindow(); private: Ui::MainWindow *ui; void keyPressEvent(QKeyEvent *event); }; #endif // MAINWINDOW_H

修改了mainwindow.cpp

js
#include "mainwindow.h" #include "ui_mainwindow.h" #include "gpio.h" #define KEY_HOME 16777330 #define KEY_ENTER 16777220 #define KEY_NEXT 16777328 #define KEY_PREV 65 static unsigned char gpioflag = 1; int countkey = 0; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::keyPressEvent(QKeyEvent *event) { if(event->key()==KEY_ENTER) { if (gpioflag == 1) { ui->label->setText("led on"); GPIO_Init(); GPIO_ConfigPin(PB, 1, OUT); GPIO_SetPin(PB,1,0); gpioflag = 0; } else { ui->label->setText("led off"); GPIO_Init(); GPIO_ConfigPin(PB, 1, OUT); GPIO_SetPin(PB,1,1); gpioflag = 1; } countkey++; ui->lcdNumber->display(countkey); if(countkey > 1000) countkey = 0; } if(event->key()==KEY_NEXT) { ui->label->setText("KEY_NEXT"); } if(event->key()==KEY_PREV) { ui->label->setText("KEY_PREV"); } if(event->key()==KEY_HOME) { ui->label->setText("KEY_HOME"); } printf("\r\n##########key cstx ############# \r\n"); }

本文作者:Kellermen

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!