recovery调用触摸屏流程

news/2025/1/16 0:49:53/

首先,recovery_main.cpp执行到

if (!device->GetUI()->Init(locale))

调用到ui.c的Init(),该函数进行初始化操作,调用到events.cpp中的ev_init()

ev_init(std::bind(&RecoveryUI::OnInputEvent, this, std::placeholders::_1, std::placeholders::_2),touch_screen_allowed_);

该函数在/dev/input中按照设备属性,尝试获取符合要求的输入设备类型,最终获取到目标设备的设备描述符,将设备描述符与函数指针OnInputEvent共同填充到FdInfo类型的结构体ev_fdinfo中。
之后,新建了一个线程用于捕捉和处理触摸事件

// Create a separate thread that handles input events.input_thread_ = std::thread([this]() {while (!this->input_thread_stopped_) {if (!ev_wait(500)) {ev_dispatch();}}}

其中ev_wait用于捕捉事件,每当g_epoll_fd设备发出的g_polled_events即进行记录。

int ev_wait(int timeout) {g_polled_events_count = epoll_wait(g_epoll_fd, g_polled_events, g_ev_count, timeout);if (g_polled_events_count <= 0) {return -1;}return 0;
}

ev_dispatch()的cb函数即OnInputEvent()对事件进行处理

void ev_dispatch(void) {for (int n = 0; n < g_polled_events_count; n++) {FdInfo* fdi = static_cast<FdInfo*>(g_polled_events[n].data.ptr);const ev_callback& cb = fdi->cb;if (cb) {cb(fdi->fd, g_polled_events[n].events);}}
}

进一步,OnInputEvent(),利用TEMP_FAILURE_RETRY读取触碰的设备文件,将信息存储到ev中

int ev_get_input(int fd, uint32_t epevents, input_event* ev) {if (epevents & EPOLLIN) {ssize_t r = TEMP_FAILURE_RETRY(read(fd, ev, sizeof(*ev)));if (r == sizeof(*ev)) {return 0;}}return -1;
}

http://www.ppmy.cn/news/835163.html

相关文章

正确的解读系统备份一体机

随着网络技术的逐渐发展&#xff0c;很多的病毒以及木马常常会出现在我们的生活之中&#xff0c;常常会造成电脑系统崩溃的现象&#xff0c;而很多的企业也有着自己的内部系统&#xff0c;一旦系统出现崩溃的现象&#xff0c;将会为企业带来很大的损失&#xff0c;所以很多的企…

触摸屏查询系统下载

触屏精灵软件&#xff0c;可用于制作触摸屏查询系统的页面&#xff0c;编辑简单&#xff0c;像编辑ppt一样&#xff0c;创建链接&#xff0c;添加动画。 支持丰富的控件&#xff0c;可以插入图片文字视频音频相册网页word pdf 等。 触摸屏查询系统&#xff0c;主要用于展厅展…

操作系统备份

小马虎的救星——Timeshift Linux桌面系统备份工具介绍 大家好&#xff0c;今天给大家介绍Linux备份软件Clonezilla及TimeShift。对于经常折腾系统的人&#xff0c;或计划升级系统又担心升级失败无法启动系统的人来说&#xff0c;备份软件可是“居家必备”工具。 Clonezilla备…

岩土工程振动在线监测:以道路桥梁基础为例

岩土工程振动在线监测&#xff1a;以道路桥梁基础为例 使用振弦传感器、采集仪和在线监测系统进行岩土工程监测&#xff1a;以道路桥梁基础振动监测为例 一个应用振弦传感器、振弦采集仪和在线监测系统构成的岩土工程监测案例是道路桥梁基础的振动监测。 在道路桥梁基础的振动…

linux开发板系统备份

前言 前不久从淘宝上淘来了一块二手的linux开发板,芯片AM3354&#xff0c;板载4GBMMC和512MBDDR3。内部烧录的是安卓2.3系统。正好最近想学Linux&#xff0c;就打算把它改成linux系统试试。试之前&#xff0c;肯定得把原系统备份一下&#xff0c;给自己留条后路。 板子预留有SD…

有个一个WINCE 6.0系统的触摸屏 重启后系统就会被还原,如何能让它不还原?

有个一个WINCE 6.0系统的触摸屏 重启后系统就会被还原&#xff0c;如何能让它不还原&#xff1f;,这里找的到一些内容,看了就明白了. 带WIN CE 6.0的系统导航仪 怎样解除wince系统的锁定&#xff1f;例如&#xff1a;安装新程序重启后就自动删除&#xff0c;恢复出厂值&#x…

西门子精彩SMART触摸屏如何进行备份和恢复操作?

西门子精彩SMART触摸屏如何进行备份和恢复操作? 备份操作: 可使用“service & commissioning”下的“backup”功能将设备数据保存到USB存储设备中。 具体步骤如下: 按下“service & commissioning”,打开“service & commissioning”对话框;选择要进行备份的数…

西门子精智comfort触摸屏使用U盘方式备份和恢复项目的具体方法

西门子精智comfort触摸屏使用U盘方式备份和恢复项目的具体方法 用U盘备份的具体步骤: 通过此功能可将HMI设备闪存中的操作系统、应用程序和数据备份在外部存储媒介上。 建议使用SIMATIC HMI 存储卡 或工业级U盘作为存储媒介。 1. 使用外部存储介质备份项目 1.通过启动画面“se…