gpio-keys应用层测试程序(am335x平台)
上次了解了在linux系统自带的keys驱动编写,这次学习如何在应用层测试编写好的驱动。
通过 cat /proc/interrupts 命令查看中断发生次数。按下一次按键后查看中断次数是否有改变。
每次按键按下会产生两次中断(还没有弄清楚为什么)
通过 cat /proc/bus/input/devices 查看 gpio-keys 对应的event。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <stdio.h>
#include <QDebug>
#include <linux/input.h>
#include <stdlib.h>
#include <fcntl.h>
int fd;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
fd = open("/dev/input/event1",O_RDONLY);
if(fd == -1)
{
qDebug()<<"open event1 error!!!";
}else
{
qDebug()<<"open event1 success!!!";
}
readKey();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::readKey()
{
struct input_event *data;
char buf[128] = {0};
while(true)
{
ssize_t key;
//阻塞式读写,没有按键按下时会阻塞在此处。
key = read(fd,buf,sizeof(struct input_event));
if(key > 0)
{
data = (struct input_event *)buf;
qDebug()<<"key type = "<< data->type;
qDebug()<<"key code = "<< data->code;//code 为按键的键值
qDebug()<<"key value = "<< data->value;//只有0和1
}
}
}
参考:https://www.cnblogs.com/BigOBlue/p/7091266.html