当前位置: 首页 > news >正文

大尺度做爰网站在线建设网站的技术手段

大尺度做爰网站在线,建设网站的技术手段,网站建设策划书是由谁编写的,洛阳做网站找哪家目录 一 输入设备编程介绍 1.1 什么是输入设备呢#xff1f; 1.2 什么是输入设备的应用编程#xff1f; 1.3 input子系统 1.4 数据读取流程 1.5 应用程序如何解析数据 1.5.1 按键类事件#xff1a; 1.5.2 相对位移事件 1.5.3 绝对位移事件 二 读取 struct input_e…目录 一 输入设备编程介绍 1.1 什么是输入设备呢 1.2 什么是输入设备的应用编程  1.3 input子系统 1.4  数据读取流程 1.5 应用程序如何解析数据 1.5.1 按键类事件 1.5.2 相对位移事件  1.5.3 绝对位移事件  二 读取 struct input_event数据   一 输入设备编程介绍 本章学习Linux输入设备的应用编程。 1.1 什么是输入设备呢 输入设备其实就是能够产生输入事件的 设备就称为输入设备常见的输入设备包括鼠标、键盘、触摸屏、按钮等等它们都能够产生输入事件产 生输入数据给计算机系统。 1.2 什么是输入设备的应用编程  输入设备的应用编程其主要是获取输入设备上报的数据、输入设备当前状态等譬如获取触摸屏当 前触摸点的 X、Y 轴位置信息以及触摸屏当前处于按下还是松开状态然后根据获取到的数据做出对应的操作。 1.3 input子系统 输入设备种类非常多每种设备上报的数据类型又不一样那么 Linux 系统如何管 理呢 Linux 系统为了统一管理这些输入设备实现了一套能够兼容所有输入设备的框架那么这个框架就 是 input 子系统。驱动开发人员基于 input 子系统开发输入设备的驱动程序input 子系统可以屏蔽硬件的差 异向应用层提供一套统一的接口。 基于 input 子系统注册成功的输入设备都会在/dev/input 目录下生成对应的设备节点设备文件设 备节点名称通常为 eventXX 表示一个数字编号 0、1、2、3 等如/dev/input/event0、/dev/input/event1、 /dev/input/event2 等通过读取这些设备节点可以获取输入设备上报的数据。 1.4  数据读取流程 我们要读取触摸屏的数据假设触摸屏设备对应的设备节点为/dev/input/event0那么数据读取流程 如下 ①、应用程序打开/dev/input/event0 设备文件 ②、应用程序发起读操作譬如调用 read如果没有数据可读则会进入休眠阻塞 I/O 情况下 ③、当有数据可读时应用程序会被唤醒读操作获取到数据返回 ④、应用程序对读取到的数据进行解析。 当无数据可读时程序会进入休眠状态也就是阻塞譬如应用程序读触摸屏数据如果当前并没有 去触碰触摸屏自然是无数据可读当我们用手指触摸触摸屏或者在屏上滑动时此时就会产生触摸数据、 应用程序就有数据可读了应用程序会被唤醒成功读取到数据。那么对于其它输入设备亦是如此无数据 可读时应用程序会进入休眠状态阻塞式 I/O 方式下当有数据可读时才会被唤醒。 1.5 应用程序如何解析数据 应用程序打开输入设备对应的设备文件向其发起读操作那么这个读操作获取到的是什么样的数据呢其实每一次 read 操作获取的都是一个 struct input_event 结构体类型数据该结构体定 义在头文件中它的定义如下 struct input_event { struct timeval time; __u16 type; __u16 code; __s32 value; }; time 内核会记 录每个上报的事件其发生的时间 typetype 用于描述发生了哪一种类型的事件对事件的分类Linux 系统所支持的输入事件类 型如下所示 #define EV_SYN 0x00 //同步类事件用于同步事件 #define EV_KEY 0x01 //按键类事件 #define EV_REL 0x02 //相对位移类事件(譬如鼠标) #define EV_ABS 0x03 //绝对位移类事件(譬如触摸屏) #define EV_MSC 0x04 //其它杂类事件 #define EV_SW 0x05 #define EV_LED 0x11 #define EV_SND 0x12 #define EV_REP 0x14 #define EV_FF 0x15 #define EV_PWR 0x16 #define EV_FF_STATUS 0x17 #define EV_MAX 0x1f #define EV_CNT (EV_MAX1)  以上这些宏定义也是在头文件中所以在应用程序中需要包含该头文件一种输入设备 通常可以产生多种不同类型的事件譬如点击鼠标按键左键、右键或鼠标上的其它按键时会上报按键 类事件移动鼠标时则会上报相对位移类事件。 codecode 表示该类事件中的哪一个具体事件以上列举的每一种事件类型中都包含了一系列具 体事件譬如一个键盘上通常有很多按键譬如字母 A、B、C、D 或者数字 1、2、3、4 等而 code 变量则告知应用程序是哪一个按键发生了输入事件。每一种事件类型都包含多种不同的事件譬如 1.5.1 按键类事件 #define KEY_RESERVED 0 #define KEY_ESC 1 //ESC 键 #define KEY_1 2 //数字 1 键 #define KEY_2 3 //数字 2 键 #define KEY_TAB 15 //TAB 键 #define KEY_Q 16 //字母 Q 键 #define KEY_W 17 //字母 W 键 #define KEY_E 18 //字母 E 键 #define KEY_R 19 //字母 R 键 1.5.2 相对位移事件  #define REL_X 0x00 //X 轴 #define REL_Y 0x01 //Y 轴 #define REL_Z 0x02 //Z 轴 #define REL_RX 0x03 #define REL_RY 0x04 #define REL_RZ 0x05 #define REL_HWHEEL 0x06 #define REL_DIAL 0x07 #define REL_WHEEL 0x08 #define REL_MISC 0x09 #define REL_MAX 0x0f #define REL_CNT (REL_MAX1) 1.5.3 绝对位移事件  触摸屏设备是一种绝对位移设备它能够产生绝对位移事件 对于触摸屏来说一个触摸点所包含的信息可能有多种譬如触摸点的 X 轴坐标、Y 轴坐标、Z 轴坐标、按压力大小以及接触面积等所以 code变量告知应用程序当前上报的是触摸点的哪一种信息X 坐标还是 Y 坐标、亦或者其它  #define ABS_X 0x00 //X 轴 #define ABS_Y 0x01 //Y 轴 #define ABS_Z 0x02 //Z 轴 #define ABS_RX 0x03 #define ABS_RY 0x04 #define ABS_RZ 0x05 #define ABS_THROTTLE 0x06 #define ABS_RUDDER 0x07 #define ABS_WHEEL 0x08 #define ABS_GAS 0x09 #define ABS_BRAKE 0x0a #define ABS_HAT0X 0x10 #define ABS_HAT0Y 0x11 #define ABS_HAT1X 0x12 #define ABS_HAT1Y 0x13 #define ABS_HAT2X 0x14 #define ABS_HAT2Y 0x15 #define ABS_HAT3X 0x16 #define ABS_HAT3Y 0x17 #define ABS_PRESSURE 0x18 #define ABS_DISTANCE 0x19 #define ABS_TILT_X 0x1a #define ABS_TILT_Y 0x1b #define ABS_TOOL_WIDTH 0x1c value内核每次上报事件都会向应用层发送一个数据 value对 value 值的解释随着 code 的变化而 变化。 如对于按键事件type1来说如果 code2键盘上的数字键 1也就是 KEY_1那 么如果 value 等于 1则表示 KEY_1 键按下value 等于 0 表示 KEY_1 键松开如果 value 等于 2  则表示 KEY_1 键长按。再比如在绝对位移事件中type3如果 code0触摸点 X 坐标 ABS_X 那么 value 值就等于触摸点的 X 轴坐标值同理如果 code1触摸点 Y 坐标 ABS_Y此时 value 值便等于触摸点的 Y 轴坐标值所以对 value 值的解释需要根据不同的 code 值而定 二 读取 struct input_event数据   根据前面的介绍可知对输入设备调用read()会读取到一个struct input_event类型数据现写一个简单地应用程序将读取到的struct input_event类型数据中的每一个元素打印出来、并对它们进行解析。 #include stdio.h #include sys/types.h #include sys/stat.h #include fcntl.h #include stdlib.h #include string.h #include unistd.h #include linux/input.hvoid main(int argc,char *argv[]) {struct input_event in_ev {0};int fd -1; //打开设备文件返回的句柄if(argc ! 2){fprintf(stderr,格式:%s input-dev \n input-dev为设备文件路径\n,argv[0]);exit(-1);}fd open(argv[1],O_RDONLY);if(fd 0){perror();exit(-1);}while(1){if (sizeof(struct input_event) ! read(fd, in_ev, sizeof(struct input_event))) {perror();exit(-1);}printf(type(对事件的分类):%d code(具体事件):%d value(状态):%d\n, in_ev.type, in_ev.code, in_ev.value);}} 执行程序时需要传入参数这个参数就是对应的输入设备的设备节点设备文件程序中会对传参进行校验。程序中首先调用open()函数打开设备文件之后在while循环中调用read()函数读取文件将读取到的数据存放在struct input_event结构体对象中之后将结构体对象中的各个成员变量打印出来。注意程序中使用了阻塞式I/O方式读取设备文件所以当无数据可读时read调用会被阻塞知道有数据可读时才会被唤醒 交叉编译并拷贝到开饭板上 用cat指令获得设备节点路径 cat /proc/bus/input/devices 测试程序获取输入设备信息  code 1时按键事件时对应的value等于2表示长按状态。 value等于1表示按下状态。 value等于0表示松开状态。
http://www.sadfv.cn/news/292370/

相关文章:

  • 自考本科条件湛江seo
  • 营销型网站的网址天津百度网站快速排名
  • 胶州建网站wordpress播放器样式
  • 网站开发开发优势wordpress怎么做伪静态页面
  • 阿里云建网站流程苏州市市政建设集团公司网站
  • 京东第一次做网站做网站价格表
  • 网站审核时间网站傻瓜式建设
  • 广西南宁网站公司免费软件英文
  • 专题研究网站建设工作动态400网站总机 阿里云
  • asp网站安全吗wordpress做的企业官网
  • 建个什么网站吗企业支付宝登录入口
  • 唐山seo设计网站网页设计公司兴田德润在哪儿
  • 有哪些可以免费推广的网站宁波最专业的seo公司
  • 高端网站建设费用预算汕头网站搭建多少钱
  • 赣州专业网站推广怎么在自己的网站上做漂浮链接
  • tp框架做响应式网站直播网站开发步骤
  • 自己做的网站如何让别的网可以查看望城经济建设开区门户网站
  • 微信上发的链接网站怎么做的网站建设合同书保密条款
  • 网站制作论文题目建站教程视频下载
  • 南阳微网站建设智慧景区网站服务建设
  • 网站的项目建设周期网址域名查询
  • 网站建设管理工作情况的通报网站开发分前台后台
  • tp框架做视频网站织梦网站搬家数据库
  • 兰州网站seo优化公司怎么在小程序里开店铺
  • 北京营销网站建设设计学校网站管理
  • 太湖手机网站建设做视频能赚钱的网站
  • ip做网站大连天健网大连
  • 福州闽侯网站建设高县网站建设
  • 做网站网站的人是怎么被抓的网络服务的工具
  • 网站psd设计稿免费虚拟机