扩展知识点---利用应用程序控制输入设备进行数据显示

简介: 扩展知识点---利用应用程序控制输入设备进行数据显示

第一:什么是输入设备?


解答:常见的输入设备为鼠标、键盘、遥控器、电脑、画板等,用户利用输入设备与系统进程交互。


第二:Linux系统为了统一设备,实现了兼容所有的输入设备框架,这个框架就是input子系统。驱动开发人员基于input子系统开发输入设备驱动程序,input子系统可以屏蔽硬件的差异,向应用提供统一的接口。


第三:输入设备读取数据的流程是什么?


1、应用程序打开/dev/input/event0设备文件;


2、应用程序发起读操作(譬如调用read),如果没有数据可读则会进入休眠(阻塞I/O情况)。


3、当有数据可读的时候,应用程序会被唤醒,读操作获取到数据返回。


4、应用程序对读取到的数据进行解析。


核心点:应用程序是如何解析数据的?


struct input_event{
        struct timeval time;
         __u16 type;
         __u16 code;
         __s32 value; 
};

 这个结构体中的time成员变量是一个struct timeval类型的变量,内核会记录每次上报的事件发生的时间,并通过变量time返回给应用程序。

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>
int main(int argc, char *argv[])
{
      struct input_event in_ev = {0};
       int fd = -1;

    /* 校验传参 */

  if (2 != argc) {
    fprintf(stderr, "usage: %s \n", argv[0]);
     exit(-1);
     }

/* 打开文件 */

if (0 > (fd = open(argv[1], O_RDONLY))) {
perror("open error");
exit(-1);
}
for ( ; ; ) {

/* 循环读取数据 */

if (sizeof(struct input_event) != read(fd, &in_ev, sizeof(struct input_event))) {
perror("read error");
exit(-1);
}
printf("type:%d code:%d value:%d\n", in_ev.type, in_ev.code, in_ev.value);
}
}


目录
相关文章
QT软件开发: QPlainTextEdit当做日志显示窗口
QT软件开发: QPlainTextEdit当做日志显示窗口
777 0
QT软件开发: QPlainTextEdit当做日志显示窗口
|
7月前
LabVIEW控制前面板对象
LabVIEW控制前面板对象
47 1
|
4月前
|
Web App开发
成功解决Chrome浏览器 控制台下看不到接口信息的问题
这篇文章提供了解决Chrome浏览器控制台不显示接口信息问题的方法,包括检查过滤设置和确保“保留日志”开关已打开。
成功解决Chrome浏览器 控制台下看不到接口信息的问题
|
4月前
|
开发框架 前端开发 JavaScript
在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作
在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作
|
6月前
|
安全 前端开发 Linux
显示子系统、显示子前后端、LinuxFB与Wayland的区别分析
显示子系统、显示子前后端、LinuxFB与Wayland的区别分析
|
5月前
|
Python
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
|
7月前
|
网络协议 网络安全 数据库
LabVIEW中MAX在我的网络上不显示“远程系统”选项卡或设备
LabVIEW中MAX在我的网络上不显示“远程系统”选项卡或设备
65 0
|
存储 监控 算法
转:在屏幕监控软件中二进制算法起到了哪些重要作用
&quot;二进制算法&quot;这个东西其实并不是多高深的概念,就是个挺宽泛的说法罢了。在不同的情况下,人家都会拿出各种花样的二进制算法来搞事情,实现各种各样的功能。有些算法可能涉及到挺多计算机科学和信息处理的技术,接下来就和大家谈谈二进制算法在屏幕监控软件软件中可能会起到哪些重要作用——
80 0
LabVIEW设置应用程序显示标签透明
本篇博文将介绍一种简单方法,还是以我们分享的LabVIEW实现科学计算器小项目为例,将最下面的提示按钮背景设置为透明效果