gpio-keys应用层测试程序(am335x平台)

上次了解了在linux系统自带的keys驱动编写,这次学习如何在应用层测试编写好的驱动。

通过 cat /proc/interrupts 命令查看中断发生次数。按下一次按键后查看中断次数是否有改变。 

每次按键按下会产生两次中断(还没有弄清楚为什么)

gpio-keys应用层测试程序(am335x平台)

通过  cat  /proc/bus/input/devices 查看 gpio-keys 对应的event。

gpio-keys应用层测试程序(am335x平台) 

 

#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