CN106896956A - 一种“道”系统下多点触控的实现方法 - Google Patents
一种“道”系统下多点触控的实现方法 Download PDFInfo
- Publication number
- CN106896956A CN106896956A CN201710035368.5A CN201710035368A CN106896956A CN 106896956 A CN106896956 A CN 106896956A CN 201710035368 A CN201710035368 A CN 201710035368A CN 106896956 A CN106896956 A CN 106896956A
- Authority
- CN
- China
- Prior art keywords
- point touch
- data
- event
- road
- touch screen
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/041—Indexing scheme relating to G06F3/041 - G06F3/045
- G06F2203/04104—Multi-touch detection in digitiser, i.e. details about the simultaneous detection of a plurality of touching locations, e.g. multiple fingers or pen and finger
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Communication Control (AREA)
- Position Input By Displaying (AREA)
Abstract
本发明公开了一种“道”系统下多点触控的实现方法,在“道”系统的多点触控屏驱动程序之上提供一个数据处理中间层,用于完成以下工作:1)向操作系统I/O子系统注册一个虚拟设备,对该虚拟设备的打开、读数据、关闭的操作均链接至实际的多点触控屏;2)创建数据接收线程,等待多点触控操作,将接收到的多点触控操作产生的数据进行解析;3)根据数据处理中间层提供的通讯协议,将解析后的数据重新封装上报至应用层,供GUI层用户程序读取、解析和处理。该方法可以实现“道”系统下对任意数据接口的触控屏的多点触控,通过这种方法,任意GUI用户程序(如QT等)仅需遵守约定的协议,即可对多点触控操作进行响应。
Description
技术领域
本发明涉及一种“道”系统下多点触控的实现方法。
背景技术
多点触控技术自1982年至今,已经发展成为了一个主流的应用领域,在各种指挥控制、展会等领域上得到了广泛的应用。苹果公司的ioS、微软公司的Windows7/8等操作系统,均提供了支持多点触控屏的驱动。
近年来,为实现软件国产化,北京科银京成技术有限公司提供了嵌入式实时操作系统“道”系统,并已经在舰船/航空/航天等高可靠性设备中得到了应用。“道”系统板级支持包提供了如USB、串口、鼠标、键盘等设备驱动,但未提供支持多点触控屏的驱动。按照多点触控屏相应数据接口设备驱动架构编写的驱动程序,操作系统加载后,可将触控屏获取到的触控操作的单个数据分别进行上传,应用程序接收到的是一些分离的数据,应用程序仅可将其当做单点触控操作来响应。
因此,有必要设计一种“道”系统下多点触控的实现方法。
发明内容
本发明所解决的技术问题是,针对现有技术的不足,提供一种“道”系统下多点触控的实现方法,使得“道”系统下的GUI层界面用户程序可以响应多点触控操作。
一种“道”系统下多点触控的实现方法,多点触控屏采用数据传输模块,通过通用接口和主板通讯,“道”系统运行在主板上;在“道”系统的多点触控屏驱动程序之上提供一个数据处理中间层,用于完成以下工作:1)向操作系统I/O子系统注册一个虚拟设备,将该虚拟设备注册为“道”系统下的标准设备,以使应用层能调用通用接口read函数对其进行访问,对该虚拟设备的打开、读数据、关闭的操作均链接至实际的多点触控屏;2)创建数据接收线程,等待多点触控操作,将接收到的多点触控操作产生的数据进行解析;3)根据数据处理中间层提供的通讯协议,将解析后的数据重新封装上报至应用层,供GUI层用户程序读取、解析和处理。
多点触控屏和GUI层用户程序通讯流程如下:
A、操作系统启动完成后,加载多点触控屏驱动程序;
B、多点触控屏驱动程序获取数据,基于数据处理中间层提供的通讯协议(借鉴linux 下的MTP协议),首先将一次多点触控操作产生的多个数据,按照多点触控屏驱动程序接收到的顺序、以输入事件结构体为基本的数据单元打包成多个事件包,然后将一次多点触控操作中所有数据包进行组合,并存入内存环形缓冲区中;然后调用input_event函数来产生相应的事件上报至应用层;
C、应用层调用通用接口read函数从内存环形缓冲区中取出打包的事件包数据(即读取上报的数据),置于消息队列中;
D、GUI层用户程序从消息队列中取出触控事件,基于数据处理中间层提供的通讯协议进行解析,并执行相应的操作。
所述步骤B中,将一次多点触控操作产生的多个数据(包括多点触控操作中各个单点对应的数据),按照多点触控屏驱动程序接收到的顺序、以输入事件结构体为基本的数据单元打包成多个事件包,然后将一次多点触控操作中所有数据包进行组合的方法为:
1)在每个事件包开始,产生第一标志来标识当前事件包开始,并携带参数标识当前触点槽;在每个事件包结束,产生一个第二结束标志来标识当前事件包结束;开始标志和结束标志之间,传递触点的详细信息,包括触点ID、X坐标和Y坐标;
2)产生一个第三标志来标识一次多点触控操作产生的多个事件包传送结束,以通知GUI层用户程序对上一个第三标志以来所有累积的事件包进行响应,并准备接收新的数据。
有益效果:
本申请提出的一种“道”系统下多点触控实现方法,在触控屏设备驱动层之上,提供一个数据处理中间层,对触控屏获取的多点触控操作进行解析,并基于约定的协议重新封装上报,将多点触控屏获取到的一次触控操作的所有触点的数据进行打包、组合,一次性上传;GUI层用户程序基于该协议,对数据进行解析和处理,实现多点触控操作的响应。数据处理中间层向操作系统I/O子系统注册一个虚拟设备,注册为“道”系统下的标准设备,应用层可以调用通用接口read函数对其进行访问,无需多点触控屏驱动程序另外提供API函数供应用层操作,应用层亦无需通过直接操作驱动多点触控屏驱动程序中的缓冲区来获取数据。采用这种方法,实现了“道”系统下的多点触控,同时可以适用于各种接口类型的多点触控屏,且对于各种GUI层界面用户程序均可用。对于任意数据接口的多点触控屏,操作系统启动完成后,加载多点触控屏驱动程序,即可按照本发明提出的方法和GUI层用户程序进行通讯,从而该方法不受限于多点触控屏的类型。任意GUI层用户程序,按照约定的协议,可对多点触控数据进行解析。
附图说明
图1为“道”系统下多点触控实现流程。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
本发明公开了一种“道”系统下多点触控的实现方法,多点触控屏采用数据传输模块,通过通用接口和主板通讯,“道”系统运行在主板上。该方法包括如下步骤:A、系统启动完成后,加载多点触控屏驱动程序;B、在多点触控屏驱动程序之上提供一个数据处理中间层,该层完成以下工作:1)向操作系统I/O子系统注册一个虚拟设备,对该虚拟设备的打开、读数据、关闭的操作均链接至实际的触控屏设备;2)创建数据接收线程,等待多点触控操作,将接收到的多个触点的数据进行解析;3)根据该层提供的通讯协议,将解析后的数据重新封装上报至应用层;C、应用层调用通用接口read函数读取上报的数据,存入消息队列;D、GUI层用户程序从消息队列中取出数据,基于约定的协议进行解析,并执行相应的操作。
多点触控屏和GUI层用户程序通讯流程如下:
(1)多点触控屏驱动程序获取数据,经数据处理中间层解析,基于中间层提供的通讯协议(借鉴linux下的MTP协议),将一次多点触控操作产生的多个数据,按照多点触控屏驱动程序接收到的顺序以输入事件结构体为基本的数据单元打包成多个事件包,打包后的数据存入内存环形缓冲区中;然后调用input_event函数来产生相应的事件上报。
其中,输入事件结构体定义如下:
其中,time记录事件发生的时间;type代表事件类型,分为同步事件EV_SVN和触点信息事件EV_INFO;code代表事件编码,编码包括同步类事件的编码MT_REPORT、SYN_REPORT和信息类事件的编码MT_SLOT、MT_TRACKING_ID、MT_POSITION_X、MT_POSITION_Y;value代表事件值,传递事件参数。
input_event函数原型如下:
void input_event(MTP_PDEV pDev,UINT16type,UINT16code,INT32value);
具体步骤为:
1)在每个事件包开始,产生一个MT_SLOT事件(第一标志)标识当前事件包开始,并携带slot参数标识当前触点槽。在每个事件包结束,产生MT_REPORT事件(第二标志)标识当前事件包结束,通知当前事件包接收完毕,并准备接收下一个事件包。MT_SLOT事件和MT_REPORT事件之间,传递触点详细的信息,包括MT_TRACKING_ID(触点ID)、MT_POSITION_X(X坐标)、MT_POSITION_Y(Y坐标);
2)通过产生EV_SYN/SYN_REPORT事件((第三标志))标识一个多点触控操作产生的多个事件包数据传送的结束,通知接收者对上一个EV_SYN/SYN_REPORT事件以来所有累积的事件包进行响应,并准备接收新的数据;
以一组两点触控按下为例,上报的事件序列如下:
MT_SLOT 0
MT_TRACKING_ID id[0]
MT_POSITION_X x[0]
MT_POSITION_Y y[0]
MT_REPORT
MT_SLOT 1
MT_TRACKING_ID id[1]
MT_POSITION_X x[1]
MT_POSITION_Y y[1]
MT_REPORT
SYN_REPORT
第一个触点抬起,上报事件序列如下:
MT_SLOT 0
MT_TRACKING_ID-1
MT_REPORT
SYN_REPORT
(2)应用层调用通用接口read函数从环形缓冲区中取出打包的事件包数据,置于消息队列中;
(3)GUI层用户程序从消息队列中取出触控事件,进行解析和处理。
该方法可以实现“道”系统下对任意数据接口的触控屏的多点触控,通过这种方法,
任意GUI用户程序(如QT等)仅需遵守约定的协议,即可对多点触控操作进行响应。
Claims (3)
1.一种“道”系统下多点触控的实现方法,其特征在于,多点触控屏采用数据传输模块,通过通用接口和主板通讯,“道”系统运行在主板上;在“道”系统的多点触控屏驱动程序之上提供一个数据处理中间层,用于完成以下工作:1)向操作系统I/O子系统注册一个虚拟设备,将该虚拟设备注册为“道”系统下的标准设备,以使应用层能调用通用接口read函数对其进行访问,对该虚拟设备的打开、读数据、关闭的操作均链接至实际的多点触控屏;2)创建数据接收线程,等待多点触控操作,将接收到的多点触控操作产生的数据进行解析;3)根据数据处理中间层提供的通讯协议,将解析后的数据重新封装上报至应用层,供GUI层用户程序读取、解析和处理。
2.根据权利要求1所述的“道”系统下多点触控的实现方法,其特征在于,多点触控屏和GUI层用户程序通讯流程如下:
A、操作系统启动完成后,加载多点触控屏驱动程序;
B、多点触控屏驱动程序获取数据,基于数据处理中间层提供的通讯协议,首先将一次多点触控操作产生的多个数据,按照多点触控屏驱动程序接收到的顺序、以输入事件结构体为基本的数据单元打包成多个事件包,然后将一次多点触控操作中所有数据包进行组合,并存入内存环形缓冲区中;然后调用input_event函数来产生相应的事件上报至应用层;
C、应用层调用通用接口read函数从内存环形缓冲区中取出打包的事件包数据,置于消息队列中;
D、GUI(图形用户界面,Graphical User Interface)层用户程序从消息队列中取出触控事件,基于约定的协议进行解析,并执行相应的操作。
3.根据权利要求1所述的“道”系统下多点触控的实现方法,其特征在于,所述步骤B中,将一次多点触控操作产生的多个数据,按照多点触控屏驱动程序接收到的顺序、以输入事件结构体为基本的数据单元打包成多个事件包,然后将一次多点触控操作中所有数据包进行组合的方法为:
1)在每个事件包开始,产生第一标志来标识当前事件包开始,并携带参数标识当前触点槽;在每个事件包结束,产生一个第二结束标志来标识当前事件包结束;开始标志和结束标志之间,传递触点的详细信息,包括触点ID、X坐标和Y坐标;
2)产生一个第三标志来标识一次多点触控操作产生的多个事件包传送结束,以通知GUI层用户程序对上一个第三标志以来所有累积的事件包进行响应,并准备接收新的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710035368.5A CN106896956B (zh) | 2017-01-18 | 2017-01-18 | 一种“道”系统下多点触控的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710035368.5A CN106896956B (zh) | 2017-01-18 | 2017-01-18 | 一种“道”系统下多点触控的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106896956A true CN106896956A (zh) | 2017-06-27 |
CN106896956B CN106896956B (zh) | 2019-11-05 |
Family
ID=59198500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710035368.5A Active CN106896956B (zh) | 2017-01-18 | 2017-01-18 | 一种“道”系统下多点触控的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106896956B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107728841A (zh) * | 2017-10-17 | 2018-02-23 | 中国船舶重工集团公司第七0九研究所 | 基于中标麒麟操作系统的多点触控方法及系统 |
CN108491154A (zh) * | 2018-03-19 | 2018-09-04 | 厦门亿联网络技术股份有限公司 | 一种嵌入式设备多点触控的缓存优化方法 |
CN113687898A (zh) * | 2021-08-24 | 2021-11-23 | 天津津航计算技术研究所 | 道系统下基于qt开发的多点触控功能实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102854974A (zh) * | 2011-06-30 | 2013-01-02 | 奇智软件(北京)有限公司 | 虚拟输入设备在驱动层的实现方法及其系统 |
CN102929429A (zh) * | 2012-10-12 | 2013-02-13 | 深圳锐取信息技术股份有限公司 | 一种使用qt图形开发平台在arm下的多点触摸实现方法 |
CN104516749A (zh) * | 2013-09-27 | 2015-04-15 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
-
2017
- 2017-01-18 CN CN201710035368.5A patent/CN106896956B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102854974A (zh) * | 2011-06-30 | 2013-01-02 | 奇智软件(北京)有限公司 | 虚拟输入设备在驱动层的实现方法及其系统 |
CN102929429A (zh) * | 2012-10-12 | 2013-02-13 | 深圳锐取信息技术股份有限公司 | 一种使用qt图形开发平台在arm下的多点触摸实现方法 |
CN104516749A (zh) * | 2013-09-27 | 2015-04-15 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107728841A (zh) * | 2017-10-17 | 2018-02-23 | 中国船舶重工集团公司第七0九研究所 | 基于中标麒麟操作系统的多点触控方法及系统 |
CN108491154A (zh) * | 2018-03-19 | 2018-09-04 | 厦门亿联网络技术股份有限公司 | 一种嵌入式设备多点触控的缓存优化方法 |
CN108491154B (zh) * | 2018-03-19 | 2020-07-10 | 厦门亿联网络技术股份有限公司 | 一种嵌入式设备多点触控的缓存优化方法 |
CN113687898A (zh) * | 2021-08-24 | 2021-11-23 | 天津津航计算技术研究所 | 道系统下基于qt开发的多点触控功能实现方法 |
CN113687898B (zh) * | 2021-08-24 | 2024-02-27 | 天津津航计算技术研究所 | 道系统下基于qt开发的多点触控功能实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106896956B (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104239132B (zh) | 一种唤醒对齐的方法、装置及终端 | |
CN107426322A (zh) | 一种推送消息目标匹配方法、服务器、终端以及计算机可读存储介质 | |
CN107844189A (zh) | 一种降低黑屏耗电的方法、系统、终端及计算机可读存储介质 | |
CN106896956A (zh) | 一种“道”系统下多点触控的实现方法 | |
CN102314348A (zh) | 一种Android系统开发架构及开发装置 | |
CN109471626A (zh) | 页面逻辑结构、页面生成方法、页面数据处理方法及装置 | |
CN103023809A (zh) | 一种采用二次缓冲技术的信息系统数据同步处理方法 | |
CN105867944B (zh) | Web前端数据操作层及其实现方法 | |
CN112559476B (zh) | 一种用于提高目标系统性能的日志存储方法及其相关设备 | |
CN105162673A (zh) | 数据传输接口及方法 | |
CN108510428A (zh) | 图片绘制方法及相关产品 | |
CN113163009A (zh) | 数据传送方法、装置、电子设备及存储介质 | |
CN103577469B (zh) | 数据库连接复用方法和装置 | |
CN106855772A (zh) | 一种信息展示方法及装置 | |
WO2016127953A1 (zh) | 基于软硬架构的高端容错计算机fpga专用调试方法及其装置 | |
CN107154835A (zh) | 数据的发送方法及装置 | |
CN103237135A (zh) | 一种手机十字滑屏操作方法 | |
CN103593239B (zh) | Linux系统中应用进程命令处理的方法及装置 | |
CN101763324A (zh) | 设备模拟的实现方法和装置 | |
CN104932820B (zh) | 基于usb映射的触摸屏使用方法和系统 | |
WO2023138001A1 (zh) | 一种新型界面换肤系统及其方法 | |
CN108153597B (zh) | 一种linux设备管理装置及方法 | |
CN103684691B (zh) | 一种同时支持fc协议8g和16g速率的通讯方法 | |
CN105550089A (zh) | 一种基于数字电路的fc网络帧头数据错误注入方法 | |
CN105912273B (zh) | 一种报文共享储存管理的fpga实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |