CN107391125B - VxWorks系统下用于人机交互的用户界面设计方法 - Google Patents
VxWorks系统下用于人机交互的用户界面设计方法 Download PDFInfo
- Publication number
- CN107391125B CN107391125B CN201710533522.1A CN201710533522A CN107391125B CN 107391125 B CN107391125 B CN 107391125B CN 201710533522 A CN201710533522 A CN 201710533522A CN 107391125 B CN107391125 B CN 107391125B
- Authority
- CN
- China
- Prior art keywords
- thread
- display
- function
- input
- sent
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- 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/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0354—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
- G06F3/03543—Mice or pucks
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Digital Computer Display Output (AREA)
Abstract
本发明公开了一种VxWorks系统下用于人机交互的用户界面设计方法,涉及计算机用户界面技术领域,该方案为:在VxWorks系统没有鼠标显示驱动的情况下,利用主线程、外设响应线程和显示线程之间的消息传递实现多线程并行的数据处理和画面显示,实现高效且流畅显示用户界面并进行操作。其中:外设响应线程监听输入设备输入信号;一方面将鼠标或者键盘的操作指令通过消息队列的方式发送给主线程;另一方面将鼠标坐标通过消息队列发送给显示线程;主线程接收从外部接口传入的待处理数据,并监听由外设响应线程发送的输入设备输入信号;将处理后需要显示的数据发送给显示线程;显示线程显示处理后需要显示的数据以及鼠标坐标。
Description
技术领域
本发明涉及计算机用户界面技术领域,具体涉及一种VxWorks系统下用于人机交互的用户界面设计方法。
背景技术
Vxworks是美国Wind River System公司开发的一款嵌入式实时操作系统,通常使用WRS公司Tornado实时操作系统开发环境进行Vxworks的软件开发工作。Vxworks作为嵌入式实时操作系统,具有高可靠性、高实时性的特点,被广泛地应用于通信、军事、航空航天等对实时性和可靠性要求极高的领域。Tornado提供了友好的用户开发环境、仿真环境和其他开发工具。WindML是VxWorks提供的一个图形开发库,可以利用它在嵌入式操作系统上开发含有图形、音频、视频的UI程序,并支持输入设备和过程事件。
但VxWorks系统也有先天的缺陷,比如功能不强、扩展性差。由于VxWorks系统大多应用于工业、航空、军工领域,在驱动、芯片、设备和通信方式上的支持较差。比如官方不提供显卡的图形驱动,需由第三方专业公司开发,一般的设备和芯片厂家也没有提供VxWorks下的驱动。
WindML没有专门针对鼠标的图形驱动,在WindML的例程中,鼠标的显示是通过UGL库的绘图函数画出来的,并且将鼠标的外设响应函数和绘图函数放在主线程中运行。主线程通常是运行软件主要功能的线程,一方面主线程在一次运行循环中处理复杂的任务,会花费较多的时间,另一方面主线程还要接受外部设备的输入,并对输入进行响应。
通常基于WindML的VxWorks人机交互显示程序的运行方式为:主线程完成的任务包括接收外部数据、外设消息,并对接收的数据进行运算处理,将处理完的结果数据以及界面图形绘制出来。因此,图形界面更新的周期T0为T0=Tr+Tp+Ts,Tr为接收数据的时间,Tp为处理数据的时间,Ts为绘制图形界面的时间。由于主程序中需要完成接收数据、处理数据以及绘制图形,则主线程中一次用户界面显示运行循环将花费大量的时间。特别当运算处理函数计算复杂、运算量大时,Tp随之变大,导致T0变大,绘制图形界面的刷新周期变长,刷新频率变低,极大限制了图形的显示效率。当显示的帧率低于25帧时,肉眼会明显感觉画面不连续,造成视觉上的不适。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种VxWorks系统下用于人机交互的用户界面设计方法,完成用户界面显示周期短,图形的显示效率高。
为达到以上目的,本发明采取的技术方案是:一种VxWorks系统下用于人机交互的用户界面设计方法,利用主线程、外设响应线程和显示线程进行之间的消息传递实现多线程并行的数据处理和画面显示,其中:
外设响应线程用于监听输入设备输入信号,所述输入设备输入信号包括鼠标或者键盘的操作指令以及鼠标坐标;在获取输入设备输入信号后,一方面将鼠标或者键盘的操作指令通过消息队列的方式发送给主线程;另一方面将鼠标坐标通过消息队列发送给显示线程;
主线程用于接收从外部接口传入的待处理数据,并监听由外设响应线程发送的输入设备输入信号;结合外设响应线程发送的输入设备输入信号对从外部接口传入的待处理数据进行处理;将处理后需要显示的数据发送给显示线程;
显示线程用于监听由主线程发来处理后需要显示的数据,以及由外设响应线程发来的含有鼠标坐标的消息;显示线程调用WindML函数以双缓存方式显示由主线程发来的处理后需要显示的数据以及由外设响应线程发来的鼠标坐标。
在上述技术方案的基础上,所述外设响应线程的工作流程包括:
A1,通过uglInputMsgGet()函数获取输入设备输入信号,并判断是鼠标输入或者是键盘输入;若为鼠标输入,进入步骤A2;若为键盘输入,进入步骤A4;
A2,通过uglCursorMove()函数对鼠标坐标进行更新;
A3,通过msgQSend()函数向CMsgToMain_QID消息队列发送消息给主线程,向CMsgToDraw_QID消息队列发送消息给显示线程,返回步骤A1;
A4,通过msgQSend()函数向KMsgToMain_QID消息队列发送消息给主线程,返回步骤A1。
在上述技术方案的基础上,所述主线程的工作流程包括:
B1,接收从外部接口传入的待处理数据,并监听由外设响应线程发送的输入设备输入信号,即CMsgToMain_QID消息和KMsgToMain_QID消息;
B2,结合外设响应线程发送的输入设备输入信号对从外部接口传入的待处理数据进行处理;
B3,将处理后需要显示的数据向MMsgToDraw_QID消息队列发送消息给显示线程,返回步骤B1。
在上述技术方案的基础上,所述WindML函数包括UGL库函数,uglPageDrawSet()函和uglPageVisibleSet()函数,所述WindML函数用于双缓存高效率显示画面。
在上述技术方案的基础上,所述显示线程的工作流程包括:
C1,UGL库函数初始化;
C2,定义page[0]和page[1]用作双缓存显示,通过uglPageDrawSet()函数设置待绘制的page;
C3,通过msgQReceive()函数从CMsgToDraw_QID消息队列中接受外设响应线程发送的含有鼠标坐标的消息,从MMsgToDraw_QID消息队列中接受主线程发送的处理后需要显示的数据;
C4,根据主线程发送的处理后需要显示的数据确定需要显示的字体、文本、几何图形的颜色和位置信息,利用UGL库函数绘制图像;
C5,通过uglPageVisibleSet()函数设置待显示的page,交替使用page[0]和page[1]进行显示,返回步骤C1。
在上述技术方案的基础上,外设响应线程发送消息频率保持在25Hz以上。
与现有技术相比,本发明的优点在于:
在VxWorks系统下,利用主线程、外设响应线程和显示线程之间的消息传递实现多线程并行的数据处理和画面显示,在系统不带鼠标显示驱动的情况下,能高效又流畅的显示用户界面并进行操作。增设的外设响应线程用于接收监听输入设备输入信号,一方面将鼠标或者键盘的操作指令通过消息队列的方式发送给主线程;另一方面将鼠标坐标通过消息队列发送给显示线程;增设的显示线程用于利用WindML双缓存方式显示主线程发来的处理后需要显示的数据以及由外设响应线程发来的鼠标坐标。将原先由主线程完成的数据处理运算和图形绘制工作分离,采用外设响应线程、主线程、显示线程并行运行,复杂的数据处理运算不会影响用户界面的显示,缩短了完成用户界面显示的周期,提高了图形显示效率。
附图说明
图1为本发明实施例中VxWorks系统下用于人机交互的用户界面设计方法的流程示意图;
图2为本发明实施例中VxWorks系统下用于人机交互的用户界面设计方法的外设响应线程流程示意图;
图3为本发明实施例中VxWorks系统下用于人机交互的用户界面设计方法的主线程流程示意图;
图4为本发明实施例中VxWorks系统下用于人机交互的用户界面设计方法的显示线程流程示意图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种VxWorks系统下用于人机交互的用户界面设计方法,包括:在VxWorks系统无鼠标显示驱动的情况下,利用主线程、外设响应线程和显示线程之间的消息传递实现多线程并行的数据处理和画面显示,其中:
外设响应线程用于监听输入设备输入信号,所述输入设备输入信号包括鼠标或者键盘的操作指令以及鼠标坐标;在获取输入设备输入信号后,一方面将鼠标或者键盘的操作指令通过消息队列的方式发送给主线程;另一方面将鼠标坐标通过消息队列发送给显示线程;
主线程用于接收从外部接口传入的待处理数据,并监听由外设响应线程发送的输入设备输入信号;结合外设响应线程发送的输入设备输入信号对从外部接口传入的待处理数据进行处理;将处理后需要显示的数据发送给显示线程;
显示线程用于监听由主线程发来处理后需要显示的数据,以及由外设响应线程发来的含有鼠标坐标的消息;调用WindML函数交替显示主线程发来的处理后需要显示的数据以及由外设响应线程发来的鼠标坐标。
本发明同时开启主线程、外设响应线程和显示线程,增设的外设响应线程用于接收监听输入设备输入信号,一方面将鼠标或者键盘的操作指令通过消息队列的方式发送给主线程;另一方面将鼠标坐标通过消息队列发送给显示线程;增设的显示线程用于调用WindML函数交替显示主线程发来的处理后需要显示的数据以及由外设响应线程发来的鼠标坐标。将原先由主线程完成的数据接收和图形绘制工作分出来由外设响应线程和显示线程完成,加快了线程处理进度,缩短了完成用户界面显示的周期,提高了图形显示效率。由于鼠标会经常移动,其刷新显示的频率需要达到25帧以上才能达到流畅效果,因此,外设响应线程发送消息频率至少保证在25Hz以上,而主线程发送的数据更新频率要求不高,发送时间间隔保证在500ms以下即可。
参见图2所示,所述外设响应线程的工作流程包括:
A1,通过uglInputMsgGet()函数获取输入设备输入信号,并判断是鼠标输入或者是键盘输入;若为鼠标输入,进入步骤A2;若为键盘输入,进入步骤A4;
A2,通过uglCursorMove()函数对鼠标坐标进行更新;
A3,通过msgQSend()函数向CMsgToMain_QID消息队列发送消息给主线程,向CMsgToDraw_QID消息队列发送消息给显示线程,返回步骤A1;
A4,通过msgQSend()函数向KMsgToMain_QID消息队列发送消息给主线程,返回步骤A1。
参见图3所示,所述主线程的工作流程包括:
B1,接收从外部接口传入的待处理数据,并监听由外设响应线程发送的输入设备输入信号,即CMsgToMain_QID消息和KMsgToMain_QID消息;
B2,结合外设响应线程发送的输入设备输入信号对从外部接口传入的待处理数据进行处理;
B3,将处理后需要显示的数据向MMsgToDraw_QID消息队列发送消息给显示线程,返回步骤B1。
所述WindML函数包括UGL库函数,uglPageDrawSet()函和uglPageVisibleSet()函数,WindML函数用于双缓存高效率显示画面。
参见图4所示,所述显示线程的工作流程包括:
C1,UGL库函数初始化;
C2,定义page[0]和page[1]用作双缓存显示,通过uglPageDrawSet()函数设置待绘制的page;
C3,通过msgQReceive()函数从CMsgToDraw_QID消息队列中接受外设响应线程发送的含有鼠标坐标的消息,从MMsgToDraw_QID消息队列中接受主线程发送的处理后需要显示的数据;
C4,根据主线程发送的处理后需要显示的数据确定需要显示的字体、文本、几何图形的颜色和位置信息,利用UGL库函数绘制图像;
C5,通过uglPageVisibleSet()函数设置待显示的page,交替使用page[0]和page[1]进行显示,返回步骤C1。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (6)
1.一种VxWorks系统下用于人机交互的用户界面设计方法,其特征在于,利用主线程、外设响应线程和显示线程进行之间的消息传递实现多线程并行的数据处理和画面显示,其中:
外设响应线程用于监听输入设备输入信号,所述输入设备输入信号包括鼠标或者键盘的操作指令以及鼠标坐标;在获取输入设备输入信号后,一方面将鼠标或者键盘的操作指令通过消息队列的方式发送给主线程;另一方面将鼠标坐标通过消息队列发送给显示线程;
主线程用于接收从外部接口传入的待处理数据,并监听由外设响应线程发送的输入设备输入信号;结合外设响应线程发送的输入设备输入信号对从外部接口传入的待处理数据进行处理;将处理后需要显示的数据发送给显示线程;
显示线程用于监听由主线程发来处理后需要显示的数据,以及由外设响应线程发来的含有鼠标坐标的消息;显示线程调用WindML函数以双缓存方式显示由主线程发来的处理后需要显示的数据以及由外设响应线程发来的鼠标坐标。
2.如权利要求1所述的一种VxWorks系统下用于人机交互的用户界面设计方法,其特征在于:
所述外设响应线程的工作流程包括:
A1,通过uglInputMsgGet ()函数获取输入设备输入信号,并判断是鼠标输入或者是键盘输入;若为鼠标输入,进入步骤A2;若为键盘输入,进入步骤A4;
A2,通过uglCursorMove()函数对鼠标坐标进行更新;
A3,通过msgQSend()函数分别向CMsgToMain_QID消息队列、CMsgToDraw_QID消息队列发送消息,所述CMsgToMain_QID消息队列将接收到的所述消息发送给主线程,所述CMsgToDraw_QID消息队列将接收到的所述消息发送给显示线程,返回步骤A1;
A4,通过msgQSend()函数向KMsgToMain_QID消息队列发送消息,所述KMsgToMain_QID消息队列将接收到的所述消息发送给主线程,返回步骤A1。
3.如权利要求1所述的一种VxWorks系统下用于人机交互的用户界面设计方法,其特征在于:所述主线程的工作流程包括:
B1,接收从外部接口传入的待处理数据,并监听由外设响应线程发送的输入设备输入信号,即CMsgToMain_QID消息和KMsgToMain_QID消息;
B2,结合外设响应线程发送的输入设备输入信号对从外部接口传入的待处理数据进行处理;
B3,将处理后需要显示的数据通过MMsgToDraw_QID消息队列发送消息给显示线程,返回步骤B1。
4.如权利要求1所述的一种VxWorks系统下用于人机交互的用户界面设计方法,其特征在于:所述WindML函数包括UGL库函数, uglPageDrawSet()函数和uglPageVisibleSet()函数,所述WindML函数用于双缓存高效率显示画面。
5.如权利要求1所述的一种VxWorks系统下用于人机交互的用户界面设计方法,其特征在于:所述显示线程的工作流程包括:
C1,UGL库函数初始化;
C2,定义page[0]和page[1]用作双缓存显示,通过uglPageDrawSet()函数设置待绘制的page;
C3,通过msgQReceive()函数从CMsgToDraw_QID消息队列中接受外设响应线程发送的含有鼠标坐标的消息,从MMsgToDraw_QID消息队列中接受主线程发送的处理后需要显示的数据;
C4,根据主线程发送的处理后需要显示的数据确定需要显示的字体、文本、几何图形的颜色和位置信息,利用UGL库函数绘制图像;
C5,通过uglPageVisibleSet()函数设置待显示的page,交替使用page[0]和page[1]进行显示,返回步骤C1。
6.如权利要求1所述的一种VxWorks系统下用于人机交互的用户界面设计方法,其特征在于:所述外设响应线程发送消息频率保持在25Hz以上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710533522.1A CN107391125B (zh) | 2017-07-03 | 2017-07-03 | VxWorks系统下用于人机交互的用户界面设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710533522.1A CN107391125B (zh) | 2017-07-03 | 2017-07-03 | VxWorks系统下用于人机交互的用户界面设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391125A CN107391125A (zh) | 2017-11-24 |
CN107391125B true CN107391125B (zh) | 2021-01-15 |
Family
ID=60333755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710533522.1A Active CN107391125B (zh) | 2017-07-03 | 2017-07-03 | VxWorks系统下用于人机交互的用户界面设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391125B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509248B (zh) * | 2018-04-13 | 2021-11-23 | 网易(杭州)网络有限公司 | 数据处理方法和装置、存储介质、处理器及终端 |
CN112631802B (zh) * | 2019-04-29 | 2024-04-12 | 杭州涂鸦信息技术有限公司 | 一种线程间通信方法及相关装置 |
CN111880683B (zh) * | 2020-07-09 | 2024-05-14 | 天津津航计算技术研究所 | vxworks系统下基于windml虚拟设备的触摸屏串口驱动设计方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080168096A1 (en) * | 2007-01-08 | 2008-07-10 | Shalom Daskal | Extracting business logic from the user interface of service and product oriented computerized systems |
US20130074042A1 (en) * | 2011-09-19 | 2013-03-21 | Microsoft Corporation | Visualizing thread state during program debugging |
CN102426546A (zh) * | 2011-11-04 | 2012-04-25 | 同辉佳视(北京)信息技术股份有限公司 | 多窗口并发显示方法 |
CN103019823B (zh) * | 2012-12-12 | 2016-06-08 | 上海航天测控通信研究所 | 实现VxWorks与Qt通信的消息队列方法 |
CN106201493A (zh) * | 2016-06-30 | 2016-12-07 | 成都金本华电子有限公司 | 基于vxWorks的ucGui系统 |
-
2017
- 2017-07-03 CN CN201710533522.1A patent/CN107391125B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107391125A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391125B (zh) | VxWorks系统下用于人机交互的用户界面设计方法 | |
TWI431465B (zh) | 用以調整電力消耗之方法、製造物品、裝置及系統 | |
CN110597444B (zh) | 一种书写笔迹显示方法、装置、终端设备及存储介质 | |
CN104123110A (zh) | 一种Android双屏异像显示方法 | |
JP6374038B2 (ja) | ドローコールにわたる共有リソースデータコヒーレンシを確実にするための効率的なハードウェアメカニズム | |
CN101566909A (zh) | 多窗口操作界面显示方法 | |
WO2021068713A1 (zh) | 一种页面显示方法及穿戴设备 | |
WO2021052100A1 (zh) | 基于wayland协议的图形合成方法、装置、系统和计算机可读存储介质 | |
CN112306297A (zh) | 一种会议白板手写输入低延迟的实现方法 | |
CN113655975A (zh) | 图像显示方法、装置、电子设备和介质 | |
CN110489318B (zh) | systrace信息的抓取方法、装置、存储介质及终端 | |
CN102012811B (zh) | 一种桌面标注与互动方法 | |
CA2711874C (en) | Aligning animation state update and frame composition | |
CN115639920B (zh) | 绘制方法、电子设备和可读存储介质 | |
CN115857698A (zh) | 混合现实交互显示装置及方法 | |
EP4270156A1 (en) | Gesture data acquisition method and apparatus, terminal, and storage medium | |
US10963983B2 (en) | Graphics performance for complex user interfaces | |
US20190108814A1 (en) | Method for improving system performance, device for improving system performance, and display apparatus | |
CN103688239A (zh) | 利用透明窗口的绘图动作的控制方法 | |
US9823935B2 (en) | Techniques for latching input events to display flips | |
US10546399B2 (en) | Pencil ink render using high priority queues | |
CN104317475A (zh) | 一种信息处理方法及电子设备 | |
CN105700885A (zh) | 一种基于多视口模拟多窗口系统和方法 | |
CN110941374A (zh) | 一种多显示器显示鹰眼图的方法、设备、介质、装置 | |
CN117238244A (zh) | 显示方法、终端设备及图像显示装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |