从源码提供的示例代码中找到GPIO.cpp与GPIO.h。创建一个gpio工程。放进去。
打开这个新的工程,将CPP与H文件,添加进去。
在UI中添加LCD Number
再添加一个label
向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中添加
jsvoid keyPressEvent(QKeyEvent *event);
执行qmake和make
把这个换成NULL
向mainwindow.h中添加
js#include <QKeyEvent>
#include <QEvent>
传过去
jsscp gpio root@192.168.50.40:/root/qt_app
看下传来了吗
执行一下,确实能实现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 许可协议。转载请注明出处!