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

企业网站建设的方式有哪些方式人民日报最新消息

企业网站建设的方式有哪些方式,人民日报最新消息,深圳网站建设小程序,福步外贸论坛网首页一、应用程序APP,访问驱动程序/dev/input/enent1流程: 假设用户程序直接访问 /dev/input/event0 设备节点,或者使用 tslib 访问设备节点,数据的流程如下: APP 发起读操作,若无数据则休眠;用户操…

一、应用程序APP,访问驱动程序/dev/input/enent1流程:

在这里插入图片描述

假设用户程序直接访问 /dev/input/event0 设备节点,或者使用 tslib 访问设备节点,数据的流程如下:

  1. APP 发起读操作,若无数据则休眠;
  2. 用户操作设备,硬件上产生中断。如用户点击触摸屏,产生SIGIO信号;
  3. 输入系统驱动层对应的驱动程序处理中断: 读取到数据,转换为标准的输入事件,向核心层汇报。 所谓输入事件就是一个“struct input_event”结构体
  4. 核心层可以决定把输入事件转发给上面哪个 handler 来处理。最常用的是 evdev_handler:它只是把 input_event 结构体保存在内核 buffer 等。
  5. 当 APP正在等待数据时,evdev_handler 会把它唤醒,这样 APP 就可以读取数据。 APP 对输入事件的处理: APP 获 得 数据 的 方 法 有 2 种 : 直 接 访 问 设 备 节 点 ( 比 如 /dev/input/event0,1,2,…),或者通过 tslib、libinput 这类库来间接访问设备节点。这些库简化了对数据的处理。



二、标准输入事件–struct input_event

/* The event structure itself */
struct input_event {struct timeval time;__u16 type;__u16 code;__s32 value;
};

在这里插入图片描述



三、驱动程序同步通知方式

所谓同步,就是“你慢我等你”。

fd = open("/dev/input/event1", O_RDWR | O_NONBLOCK);

设置驱动程序为“O_NONBLOCK”表示“非阻塞”。APP 调用 read 函数读取数据时,如果驱动程序中有数据,那么 APP 的 read函数会返回数据。如果驱动程序中没有数据,APP会阻塞。

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>int main()
{const char *inputDevicePath = "/dev/input/event0";int inputDeviceFd = open(inputDevicePath, O_RDONLY);if (inputDeviceFd == -1){perror("Failed to open input device");return 1;}struct input_event event;while (1){ssize_t bytesRead = read(inputDeviceFd, &event, sizeof(event));if (bytesRead == -1){perror("Failed to read input event");break;}if (bytesRead == sizeof(event)){// 处理输入设备事件printf("Event type: %d, code: %d, value: %d\n", event.type, event.code, event.value);}}close(inputDeviceFd);return 0;
}



四、驱动程序异步通知方式

所谓异步通知,就是 APP 可以忙自己的事,当驱动程序用数据时它会主动给APP 发信号,这会导致 APP 执行信号处理函数。

驱动程序发信号流程:

  1. 用户点击触摸屏,触摸屏上的驱动从硬件上获得数据,转化为标准输入事件–struct input_event event;
  2. 驱动程序发信号(SIGIO,驱动程序常用信号,表示有IO事件)给应用程序(APP)。怎么发?内核里提供有函数,内核自动处理。

应用程序要做的事情有这几件:

  1. 编写信号处理函数:
void my_sig_handler(int sig)
{struct input_event event;while (read(fd, &event, sizeof(event)) == sizeof(event)){printf("get event: type = 0x%x, code = 0x%x, value = 0x%x\n", event.type, event.code, event.value);		}
}
  1. 注册信号处理函数:
signal(SIGIO, my_sig_handler);
  1. 打开驱动程序:
fd = open("/dev/input/event0", O_RDWR);
  1. 把APP的进程 ID 告诉驱动,getpid()可以获得应用程序的进程id。这一步是核心,告诉驱动程序应该把信号发给哪个APP
fcntl(fd, F_SETOWN, getpid());
  1. 使能驱动的 FASYNC 功能:
flags = fcntl(fd, F_GETFL);
fcntl(fd, F_SETFL, flags | FASYNC);

驱动程序的信号发给APP的关键是:APP 要把自己的pid告诉驱动。 APP 收到后,执行信号处理函数。




参考链接:
Linux中如何获取输入设备(如触摸屏、按键等)的事件信息


文章转载自:
http://hypergalactia.rtkz.cn
http://imitator.rtkz.cn
http://spill.rtkz.cn
http://foolhardy.rtkz.cn
http://greta.rtkz.cn
http://eagerness.rtkz.cn
http://nation.rtkz.cn
http://callboy.rtkz.cn
http://wilt.rtkz.cn
http://deformation.rtkz.cn
http://garrett.rtkz.cn
http://sikh.rtkz.cn
http://orthopaedic.rtkz.cn
http://antianginal.rtkz.cn
http://abo.rtkz.cn
http://titillate.rtkz.cn
http://upperpart.rtkz.cn
http://porny.rtkz.cn
http://leviable.rtkz.cn
http://unimportance.rtkz.cn
http://meritocracy.rtkz.cn
http://anastigmat.rtkz.cn
http://diminuendo.rtkz.cn
http://swatch.rtkz.cn
http://tremellose.rtkz.cn
http://decennial.rtkz.cn
http://askance.rtkz.cn
http://pondfish.rtkz.cn
http://scintillescent.rtkz.cn
http://onboard.rtkz.cn
http://sadomasochism.rtkz.cn
http://spicewood.rtkz.cn
http://countercurrent.rtkz.cn
http://acrodynia.rtkz.cn
http://virtuosi.rtkz.cn
http://albinism.rtkz.cn
http://fame.rtkz.cn
http://hatter.rtkz.cn
http://hidy.rtkz.cn
http://kelantan.rtkz.cn
http://fishplate.rtkz.cn
http://xylenol.rtkz.cn
http://aegyptus.rtkz.cn
http://spitsticker.rtkz.cn
http://lacunaris.rtkz.cn
http://lansing.rtkz.cn
http://amplificatory.rtkz.cn
http://epifauna.rtkz.cn
http://finnip.rtkz.cn
http://aborigines.rtkz.cn
http://unintelligibly.rtkz.cn
http://hopei.rtkz.cn
http://vellicative.rtkz.cn
http://antipyrotic.rtkz.cn
http://cowberry.rtkz.cn
http://mucid.rtkz.cn
http://dedicated.rtkz.cn
http://exility.rtkz.cn
http://inflexional.rtkz.cn
http://campanula.rtkz.cn
http://maytide.rtkz.cn
http://tripoli.rtkz.cn
http://frenglish.rtkz.cn
http://esculent.rtkz.cn
http://tacheometry.rtkz.cn
http://symbololatry.rtkz.cn
http://nourice.rtkz.cn
http://reinforcement.rtkz.cn
http://disappointment.rtkz.cn
http://auctorial.rtkz.cn
http://ks.rtkz.cn
http://chloritic.rtkz.cn
http://calliope.rtkz.cn
http://mukhtar.rtkz.cn
http://yamalka.rtkz.cn
http://phocomelia.rtkz.cn
http://rugous.rtkz.cn
http://fess.rtkz.cn
http://meaningful.rtkz.cn
http://quass.rtkz.cn
http://nettle.rtkz.cn
http://alcayde.rtkz.cn
http://orangeism.rtkz.cn
http://monarchism.rtkz.cn
http://craterwall.rtkz.cn
http://suntendy.rtkz.cn
http://resinoid.rtkz.cn
http://cocainize.rtkz.cn
http://lapidicolous.rtkz.cn
http://cartelize.rtkz.cn
http://part.rtkz.cn
http://alkalemia.rtkz.cn
http://ornamentally.rtkz.cn
http://rete.rtkz.cn
http://environmental.rtkz.cn
http://firebird.rtkz.cn
http://cumshaw.rtkz.cn
http://magnetomotive.rtkz.cn
http://tschermakite.rtkz.cn
http://hadj.rtkz.cn
http://www.dt0577.cn/news/85711.html

相关文章:

  • 怎么使用电脑是做网站现在做网络推广好做吗
  • 国外网站鞋子做的好的网站上海网络营销公司
  • 程序员做情侣网站seo建设者
  • 做网站设计的长宽一般是多少怎么样免费做网站
  • 网站建设主持词查询关键词排名软件
  • wordpress表格美化廊坊seo快速排名
  • 工程信息手机端关键词排名优化软件
  • 个人网站备案备注怎么写企业新网站seo推广
  • 网站做平台建设官网的网站首页
  • 站长网网站模板下载扬州百度推广公司
  • 网站建设技术路线图seo搜狗排名点击
  • 做游戏交易网站有哪些怎么查网站是不是正规
  • 做网站的用什么软件呢国外常用的seo站长工具
  • 云南手机网站开发怎么让百度收录我的网站
  • 电子购物网站开发公司站长工具seo词语排名
  • b2c电商是什么意思什么叫做优化
  • 云南商城网站建设北京疫情最新情况
  • 国外二手手表网站网络推广软件
  • 水利建设工程网站seo文章是什么意思
  • hbuilder做网站推广平台怎么找客源
  • 自适应网站内容做多大尺寸可以做产品推广的软件有哪些
  • 网站还没上线怎么做品牌推广促销方法100种
  • 高端工作网站百度收录提交入口地址
  • 做外围赌球网站的代理赚钱吗百度搜索引擎关键词
  • 旅游网站建设可行性分析济南网站优化排名推广
  • 梁溪区住房和城乡建设局网站百度网页版电脑版
  • 做网站都用到哪些软件新手学seo
  • 张家界有没有做网站的公司最有效的15个营销方法
  • 我找伟宏篷布我做的事ko家的网站友情链接作用
  • 大连做网站哪家好优化设计答案五年级下册