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

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

第一:什么是输入设备?


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


第二: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);
}
}


目录
相关文章
|
10月前
|
存储 Java 芯片
探索计算机的I/O控制方式:了解DMA控制器的作用与优势
对于有科班背景的读者,可以跳过本系列文章。这些文章的主要目的是通过简单易懂的汇总,帮助非科班出身的读者理解底层知识,进一步了解为什么在面试中会涉及这些底层问题。否则,某些概念将始终无法理解。这些计算机基础文章将为你打通知识的任督二脉,祝你在编程领域中取得成功!
143 1
探索计算机的I/O控制方式:了解DMA控制器的作用与优势
|
Android开发
GB28181设备控制和TeleBoot远程启动命令探究
源设备向目标设备发送设备控制命令,控制命令的类型包括球机/云台控制、远程启动、录像控制、 报警布防/撤防、报警复位、强制关键帧、拉框放大、拉框缩小、看守位控制、设备配置等。
145 0
|
4月前
|
传感器 算法 5G
LabVIEW中PID控制的的高级功能
LabVIEW中PID控制的的高级功能
58 4
|
4月前
|
网络协议 网络安全 数据库
LabVIEW中MAX在我的网络上不显示“远程系统”选项卡或设备
LabVIEW中MAX在我的网络上不显示“远程系统”选项卡或设备
40 0
|
4月前
|
安全 Linux
嵌入式Linux系统关闭串口调试信息的输出
嵌入式Linux系统关闭串口调试信息的输出
174 1
|
物联网
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
479 0
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
|
存储 监控 算法
转:在屏幕监控软件中二进制算法起到了哪些重要作用
&quot;二进制算法&quot;这个东西其实并不是多高深的概念,就是个挺宽泛的说法罢了。在不同的情况下,人家都会拿出各种花样的二进制算法来搞事情,实现各种各样的功能。有些算法可能涉及到挺多计算机科学和信息处理的技术,接下来就和大家谈谈二进制算法在屏幕监控软件软件中可能会起到哪些重要作用——
70 0
LabVIEW设置应用程序显示标签透明
本篇博文将介绍一种简单方法,还是以我们分享的LabVIEW实现科学计算器小项目为例,将最下面的提示按钮背景设置为透明效果
|
存储 安全 Linux
【操作系统篇】第三篇——进程(概念,组成,状态与转换,控制以及通信)
【操作系统篇】第三篇——进程(概念,组成,状态与转换,控制以及通信)
【操作系统篇】第三篇——进程(概念,组成,状态与转换,控制以及通信)
|
Linux
扩展知识点--利用Linux应用代码如何控制LED
扩展知识点--利用Linux应用代码如何控制LED
129 0