CN111880682A - vxworks系统下基于校准过程的触摸屏串口驱动设计方法 - Google Patents
vxworks系统下基于校准过程的触摸屏串口驱动设计方法 Download PDFInfo
- Publication number
- CN111880682A CN111880682A CN202010656721.3A CN202010656721A CN111880682A CN 111880682 A CN111880682 A CN 111880682A CN 202010656721 A CN202010656721 A CN 202010656721A CN 111880682 A CN111880682 A CN 111880682A
- Authority
- CN
- China
- Prior art keywords
- touch screen
- point
- serial port
- mouse
- coordinate
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000008569 process Effects 0.000 title claims abstract description 35
- 238000013461 design Methods 0.000 title claims abstract description 10
- 238000011161 development Methods 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 4
- 241000699666 Mus <mouse, genus> Species 0.000 description 43
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 3
- 241000699670 Mus sp. Species 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
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
- G06F3/0416—Control or interface arrangements specially adapted for digitisers
- G06F3/0418—Control or interface arrangements specially adapted for digitisers for error correction or compensation, e.g. based on parallax, calibration or alignment
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明属于vxworks系统技术领域,具体涉及一种vxworks系统下基于校准过程的触摸屏串口驱动设计方法。首先,配置windml虚拟鼠标设备;其次,基于校准过程采用虚拟鼠标实现触摸屏驱动事件:创建串口接收任务解析触摸屏协议报文,获取用户触摸的四点坐标点内容并解析出校准的基准点信息。然后,利用校准点信息并结合屏幕分辨率将触摸事件的坐标点换算成系统屏幕坐标点,最后调用虚拟鼠标设备的鼠标事件达到实现触摸屏驱动的目的。
Description
技术领域
本发明属于vxworks系统技术领域,具体涉及一种vxworks系统下基于校准过程的触摸屏串口驱动设计方法。
背景技术
随着电子技术的不断进步,人机交互方式的不断演变和变化,电阻式触摸屏的单点触控计数被广泛应用。电阻式触摸屏可靠性和使用寿命的不断提高也使得在船舶自动化领域中采用触摸屏技术的终端设备逐渐增多。
Vxworks作为在通讯、军事、航天等高尖技术及实时性要求极高的领域被广泛应用的操作系统,虽然对人机接口设备提供了面向事件的消息处理机制,但是并没有对触摸屏驱动程序开发提供开发内容,为了解决串口类触摸屏设备在系统下的正常使用,需要解决触摸屏的串口驱动问题。目前成熟的触摸屏驱动技术有基于usb类型的触摸屏驱动,即将usb接口类型的触摸屏作为人机接口输入设备,通过类比与usb鼠标驱动消息机制,自模拟一个usb设备向下调用字符设备驱动获取触摸屏数据报文,向上将被windML消息引擎调用抛出触摸屏消息;还有基于windml接口驱动来实现触摸屏驱动,利用windml库的ugl组件设备指针的事件实现。但是上述方法没有解决触摸屏分辨率与系统分辨率不一致的问题,且不能兼容主机其他类型的usb设备,不能解决串口类型的触摸屏驱动问题。
为了解决vxwork下的触摸屏串口驱动问题,解决分辨率不兼容问题,实现触摸移动事件,需要提出一种基于校准过程的触摸屏串口驱动设计方法。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种vxworks系统下基于校准过程的触摸屏串口驱动设计方法。
(二)技术方案
为解决上述技术问题,本发明提供一种vxworks系统下基于校准过程的触摸屏串口驱动设计方法,所述方法包括:
步骤1:配置windml虚拟鼠标设备
建立windml工程,首先,在图形界面配置vxworks系统所需的ps2或者usb鼠标类型;然后,在windml图形配置文件中添加虚拟鼠标设备;
步骤2:基于校准过程采用虚拟鼠标实现触摸屏驱动事件;包括:
步骤21:初始化串口设备使用环境;
步骤22:获取触摸屏校准基准点坐标;
步骤23:将触摸屏点坐标转为系统屏幕点坐标值;
步骤24:将系统屏幕点坐标值转为系统鼠标事件;
通过以上步骤,实现触摸屏在vxwork系统下的串口驱动功能。
其中,所述步骤1中,在不影响vxworks系统正常使用的情况下,为解决系统需兼容其他类型鼠标设备的使用问题,需为系统单独配置一个虚拟鼠标设备;在workbench集成开发环境中,修改windml配置文件手动添加虚拟鼠标设备;
所述步骤1包括:
步骤11:创建windml工程;
步骤12:在windml工程中打开config.windml文件添加display设备,根据需求添加PS2或者UBS鼠标;
步骤13:用文本编辑器打开config.windml中手动添加虚拟鼠标设备配置语句。
其中,所述步骤21包括:
首先,在vxworks系统所接的设备中,指定与触摸屏通信的串口设备描述符;
其次,通过vxworks系统函数open打开与触摸屏通信的串口设备;
然后,配置串口的波特率、校验位参数;
最后,创建串口接收任务进行触摸屏点坐标数据接收。
其中,所述步骤21中,初始化串口设备环境步骤如下:
步骤211:读取配置文件中串口设备端口号和波特率的配置信息;
步骤212:获取串口设备描述符;
步骤213:使用vxworks系统函数open打开描述符所代表的串口设备并保存串口所指向的操作句柄;
步骤214:使用ioctl函数配置串口设备波特率和校验属性;
步骤215:创建串口接收任务;
步骤216:接收任务循环使用ioctl函数判断串口端口是否有新数据接收;当接收长度大于零时,则使用read函数读取串口数据。
其中,所述步骤22包括:
首先,提示用户点击屏幕左右上下四点;
其次,解析触摸屏串口报文获取触摸屏四个角落点坐标,然后根据触摸屏点坐标计算基准点坐标;
最后,将基准点坐标保存在本地文件,退出获取基准点过程。
其中,所述步骤22中,获取触摸屏校准基准点坐标的过程如下:
步骤221:提示用户输入左上方的点;
步骤222:解析左上方的点坐标值判断是否小于误差值,如果小于则提示用户输入右上方的点,否则继续提示输入左上方的点;
步骤223:循环进行步骤222,直到获取屏幕四个角落点的坐标tscal[i],i∈(0,3);
步骤224:计算基准点坐标bank[j],j∈(0,3),设触摸屏分辨率为TX*TY:
① bank[0]=(tscal[0].yc+tscal[1].yc)/2;;
② blank[1]=(tscal[0].xc+tscal[2].xc)/2;
③ blank[2]=TX-(tscal[1].xc+tscal[3].xc)/2;
④ blank[3]=TY-(tscal[2].yc+tscal[3].yc)/2;
步骤225:保存基准点坐标到文件,退出该过程。
其中,所述步骤23包括:
首先,通过串口接收任务,获取触摸屏设备发送的点击事件数据内容;解析触摸屏串口报文获取触摸屏点坐标;
然后,将触摸屏点坐标换算成系统屏幕点坐标。
其中,所述步骤23中,将触摸屏点坐标转为系统屏幕坐标点(x1,y1)的过程为:
首先解析串口报文获取触摸屏设备发送的坐标点(x0,y0);然后根据基准点坐标计算系统屏幕坐标点;设系统屏幕分辨率PX*PY,具体步骤如下:
① 判断x0是否大于bank[1],如果是则将x0-bank[1]的值赋值给x0,否则将x0赋值为0;
② x1=(PX*x0)/(TX-(blank[1]+blank[2]));
③ 判断y0是否大于bank[0],如果是则将y0-bank[0]的值赋值给y0,否则将y0赋值为0;
④ y1=(PY*y0)/(TY-(blank[0]+blank[3]))。
其中,所述步骤24中,为了将触摸屏点击事件模拟成鼠标点击事件,需要将点击触摸屏产生的屏幕坐标值作为虚拟鼠标设备的鼠标事件函数的输入参数;然后,通过调用虚拟鼠标设备的鼠标事件函数mouse模拟成系统鼠标事件。
其中,所述步骤24中,在由步骤23获取了有效的系统屏幕点坐标数据后,执行虚拟鼠标mouse函数,从而将屏幕点击事件模拟成了系统鼠标事件;具体步骤如下:
步骤241:记当前点坐标为临时变量tsInfo,前点坐标为静态变量bkInfo,初始化tsInfo和bkInfo的x坐标、y坐标、点状态status为0;
步骤242:如果bkInfo的点状态为0,则将tsInfo点状态赋值给bkInfo点状态后返回;如果bkInfo点状态不为0,继续下一步;
步骤243:判断tsInfo点状态和bkInfo点状态,根据两个点状态不同模拟相应的鼠标事件:
1)如果tsInfo点状态为连续状态并且bkInfo点坐标状态为点击状态,则模拟鼠标左键按下事件,连续点计数清零,记录起始坐标点位置为(x0,y0);
2)如果tsInfo点状态为连续状态且bkInfo点坐标状态为连续状态,连续点个数变量count自增加1,模拟鼠标移动事件;
3)如果tsInfo点状态为离开状态且bkInfo点状态为连续状态,分两种情况判断触发右键和左键:
① 如果tsInfo的x坐标和y坐标跟x0,y0各自的差距小于q,并且count<10,则模拟左键弹起的鼠标事件;
② 如果tsInfo的x坐标和y坐标跟x0,y0各自的差距小于q,并且count>=10,则模拟右键按下和弹起的鼠标事件。
(三)有益效果
与现有技术相比较,本发明在系统为vxworks的应用场景下,针对系统平台特点,根据触摸屏设备数据传输特点,建立触摸屏与系统分辨率的映射关系,同时利用windml图形库,设计实现了一种vxoworks系统下基于校准的触摸屏串口驱动。本发明解决了不同分辨率的触摸屏与系统的兼容问题,提高了系统的可用性,同时利用windml库模拟系统鼠标事件实现触摸移动事件,保证了系统的接口性能。
附图说明
图1为触摸屏串口驱动实现流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为解决现有技术问题,本发明提供一种vxworks系统下基于校准过程的触摸屏串口驱动设计方法,所述方法用于在vxworks平台下,解决触摸屏串口驱动问题;如图1所示,所述方法包括:
步骤1:配置windml虚拟鼠标设备;
建立windml工程,首先,在图形界面配置vxworks系统所需的ps2或者usb鼠标类型;然后,在windml图形配置文件中添加虚拟鼠标设备;
步骤2:基于校准过程采用虚拟鼠标实现触摸屏驱动事件;包括:
步骤21:初始化串口设备使用环境;
步骤22:获取触摸屏校准基准点坐标;
步骤23:将触摸屏点坐标转为系统屏幕点坐标值;
步骤24:将系统屏幕点坐标值转为系统鼠标事件;
通过以上步骤,实现触摸屏在vxwork系统下的串口驱动功能。
其中,所述步骤1中,在不影响vxworks系统正常使用的情况下,为解决系统需兼容其他类型鼠标设备的使用问题,需为系统单独配置一个虚拟鼠标设备;在workbench集成开发环境中,修改windml配置文件手动添加虚拟鼠标设备;
所述步骤1包括:
步骤11:创建windml工程;
步骤12:在windml工程中打开config.windml文件添加display设备,根据需求添加PS2或者UBS鼠标;
步骤13:用文本编辑器打开config.windml中手动添加虚拟鼠标设备配置语句。
其中,所述步骤21包括:
首先,在vxworks系统所接的设备中,指定与触摸屏通信的串口设备描述符;
其次,通过vxworks系统函数open打开与触摸屏通信的串口设备;
然后,配置串口的波特率、校验位参数;
最后,创建串口接收任务进行触摸屏点坐标数据接收。
其中,所述步骤21中,初始化串口设备环境步骤如下:
步骤211:读取配置文件中串口设备端口号和波特率的配置信息;
步骤212:获取串口设备描述符;
步骤213:使用vxworks系统函数open打开描述符所代表的串口设备并保存串口所指向的操作句柄;
步骤214:使用ioctl函数配置串口设备波特率和校验属性;
步骤215:创建串口接收任务;
步骤216:接收任务循环使用ioctl函数判断串口端口是否有新数据接收;当接收长度大于零时,则使用read函数读取串口数据。
其中,所述步骤22包括:
首先,提示用户点击屏幕左右上下四点;
其次,解析触摸屏串口报文获取触摸屏四个角落点坐标,然后根据触摸屏点坐标计算基准点坐标;
最后,将基准点坐标保存在本地文件,退出获取基准点过程。
其中,所述步骤22中,获取触摸屏校准基准点坐标的过程如下:
步骤221:提示用户输入左上方的点;
步骤222:解析左上方的点坐标值判断是否小于误差值,如果小于则提示用户输入右上方的点,否则继续提示输入左上方的点;
步骤223:循环进行步骤222,直到获取屏幕四个角落点的坐标tscal[i],i∈(0,3);
步骤224:计算基准点坐标bank[j],j∈(0,3),设触摸屏分辨率为TX*TY:
① bank[0]=(tscal[0].yc+tscal[1].yc)/2;;
② blank[1]=(tscal[0].xc+tscal[2].xc)/2;
③ blank[2]=TX-(tscal[1].xc+tscal[3].xc)/2;
④ blank[3]=TY-(tscal[2].yc+tscal[3].yc)/2;
步骤225:保存基准点坐标到文件,退出该过程。
其中,所述步骤23包括:
首先,通过串口接收任务,获取触摸屏设备发送的点击事件数据内容;解析触摸屏串口报文获取触摸屏点坐标;
然后,将触摸屏点坐标换算成系统屏幕点坐标。
其中,所述步骤23中,将触摸屏点坐标转为系统屏幕坐标点(x1,y1)的过程为:
首先解析串口报文获取触摸屏设备发送的坐标点(x0,y0);然后根据基准点坐标计算系统屏幕坐标点;设系统屏幕分辨率PX*PY,具体步骤如下:
① 判断x0是否大于bank[1],如果是则将x0-bank[1]的值赋值给x0,否则将x0赋值为0;
② x1=(PX*x0)/(TX-(blank[1]+blank[2]));
③ 判断y0是否大于bank[0],如果是则将y0-bank[0]的值赋值给y0,否则将y0赋值为0;
④ y1=(PY*y0)/(TY-(blank[0]+blank[3]))。
其中,所述步骤24中,为了将触摸屏点击事件模拟成鼠标点击事件,需要将点击触摸屏产生的屏幕坐标值作为虚拟鼠标设备的鼠标事件函数的输入参数;然后,通过调用虚拟鼠标设备的鼠标事件函数mouse模拟成系统鼠标事件。
其中,所述步骤24中,在由步骤23获取了有效的系统屏幕点坐标数据后,执行虚拟鼠标mouse函数,从而将屏幕点击事件模拟成了系统鼠标事件;具体步骤如下:
步骤241:记当前点坐标为临时变量tsInfo,前点坐标为静态变量bkInfo,初始化tsInfo和bkInfo的x坐标、y坐标、点状态status为0;
步骤242:如果bkInfo的点状态为0,则将tsInfo点状态赋值给bkInfo点状态后返回;如果bkInfo点状态不为0,继续下一步;
步骤243:判断tsInfo点状态和bkInfo点状态,根据两个点状态不同模拟相应的鼠标事件:
1)如果tsInfo点状态为连续状态并且bkInfo点坐标状态为点击状态,则模拟鼠标左键按下事件,连续点计数清零,记录起始坐标点位置为(x0,y0);
2)如果tsInfo点状态为连续状态且bkInfo点坐标状态为连续状态,连续点个数变量count自增加1,模拟鼠标移动事件;
3)如果tsInfo点状态为离开状态且bkInfo点状态为连续状态,分两种情况判断触发右键和左键:
① 如果tsInfo的x坐标和y坐标跟x0,y0各自的差距小于q,并且count<10,则模拟左键弹起的鼠标事件;
② 如果tsInfo的x坐标和y坐标跟x0,y0各自的差距小于q,并且count>=10,则模拟右键按下和弹起的鼠标事件。
实施例1
本实施例提供一种vxworks系统下基于校准过程的触摸屏串口驱动设计方法,包括:
(1)配置windml虚拟鼠标设备,修改windml的配置文件,对系统添加虚拟鼠标指针对象,将触摸屏事件转化为虚拟鼠标事件并兼容其他类型鼠标的使用;
(2)基于校准过程采用虚拟鼠标实现触摸屏驱动事件,创建了串口接收任务获取触摸屏数据,采用滑窗机制减少丢包率。根据不同分辨率校准触摸屏,提示用户触摸输入调整校准点信息,将触摸屏坐标系转化成系统坐标系并调用虚拟鼠标函数实现触摸屏串口驱动。
其中,结合用户触摸输入的四点坐标点信息获取校准的基准点信息并保存到本地,同时比对两次触摸点状态值,根据比对结果模拟不同的鼠标事件,从而达到实现触摸屏串口驱动目的。
实施例2
如图1所示,为了解决vworks系统下触摸屏的串口驱动问题,本实施例采用基于windml虚拟鼠标的实现方法。
1、配置windml虚拟鼠标设备
在不影响系统正常使用的情况下,为解决系统需兼容其他类型鼠标设备的使用问题,为系统单独配置一个虚拟鼠标设备。在workbench集成开发环境中,windml图形界面配置界面不支持鼠标类型多选,为解决此问题,需修改windml配置文件手动添加虚拟鼠标设备。配置windml虚拟鼠标设备具体步骤如下:
① 创建windml工程;
② 在工程中打开config.windml文件添加display设备,根据需求可添加PS2或者UBS鼠标;
③ 用文本编辑器打开config.windml中手动添加虚拟鼠标设备配置语句。
2、基于windml虚拟鼠标实现触摸屏驱动事件
(1)初始化串口设备使用环境
初始化串口设备环境步骤如下:
Step1:读取配置文件中串口设备端口号和波特率等配置信息;
Step2:获取串口设备描述符;
Step3:使用vxworks系统函数open打开描述符所代表的串口设备并保存串口所指向的操作句柄;
Step4:使用ioctl函数配置串口设备波特率和校验属性;
Step5:创建串口接收任务;
Step6:接收任务循环使用ioctl函数判断串口端口是否有新数据接收。当接收长度大于零时,则使用read函数读取串口数据;
(2)获取触摸屏校准基准点坐标
Step1:提示用户输入左上方的点;
Step2:解析左上方的点坐标值判断是否小于误差值,如果小于则提示用户输入右上方的点,否则继续提示输入左上方的点;
Step3:循环进行步骤2,直到获取屏幕四个角落点的坐标tscal[i],i∈(0,3);
Step4:计算基准点坐标bank[j],j∈(0,3),设触摸屏分辨率为TX*TY:
① bank[0]=(tscal[0].yc+tscal[1].yc)/2;;
② blank[1]=(tscal[0].xc+tscal[2].xc)/2;
③ blank[2]=TX-(tscal[1].xc+tscal[3].xc)/2;
④ blank[3]=TY-(tscal[2].yc+tscal[3].yc)/2;
Step5:保存基准点到文件,退出该过程;
(3)将触摸屏点坐标转为系统屏幕坐标点(x1,y1)
首先解析串口报文获取触摸屏设备发送的坐标点(x0,y0)。然后根据基准点坐标计算系统屏幕坐标点。设系统屏幕分辨率PX*PY,为具体步骤如下:
① 判断x0是否大于bank[1],如果是则将x0-bank[1]的值赋值给x0,否则将x0赋值为0;
② x1=(PX*x0)/(TX-(blank[1]+blank[2]));
③ 判断y0是否大于bank[0],如果是则将y0-bank[0]的值赋值给y0,否则将y0赋值为0;
④ y1=(PY*y0)/(TY-(blank[0]+blank[3]));
(4)将系统屏幕点坐标值转为系统鼠标事件
步骤(3)中获取了有效点数据,执行虚拟鼠标mouse函数,从而将屏幕点击事件模拟成了系统鼠标事件。具体步骤如下:
Step1:记当前点坐标为临时变量tsInfo,前点坐标为静态变量bkInfo,初始化tsInfo和bkInfo的x坐标、y坐标、点状态status为0;
Step2:如果bkInfo的点状态为0,则将tsInfo点状态赋值给bkInfo点状态后返回;如果bkInfo点状态不为0,继续下一步;
Step3:判断tsInfo点状态和bkInfo点状态,根据两个点状态不同模拟相应的鼠标事件:
1)如果tsInfo点状态为连续状态并且bkInfo点坐标状态为点击状态,则模拟鼠标左键按下事件,连续点计数清零,记录起始坐标点位置为(x0,y0);
2)如果tsInfo点状态为连续状态且bkInfo点坐标状态为连续状态,连续点个数变量count自增加1,模拟鼠标移动事件;
3)如果tsInfo点状态为离开状态且bkInfo点状态为连续状态,分两种情况判断触发右键和左键:
① 如果tsInfo的x坐标和y坐标跟x0,y0各自的差距小于q,并且count<10,则模拟左键弹起的鼠标事件;
② 如果tsInfo的x坐标和y坐标跟x0,y0各自的差距小于q,并且count>=10,则模拟右键按下和弹起的鼠标事件;
利用上述技术方案,采用上述操作步骤,本发明可以实现vxwork系统下触摸屏串口驱动,该方法已经经过了算法验证,并进行了实验检验。结果标明,该方案可以解决不同分辨率下触摸屏的串口驱动问题,保证触摸屏设备在vxwork系统下正常使用并且可兼容他类型鼠标。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述方法包括:
步骤1:配置windml虚拟鼠标设备
建立windml工程,首先,在图形界面配置vxworks系统所需的ps2或者usb鼠标类型;然后,在windml图形配置文件中添加虚拟鼠标设备;
步骤2:基于校准过程采用虚拟鼠标实现触摸屏驱动事件;包括:
步骤21:初始化串口设备使用环境;
步骤22:获取触摸屏校准基准点坐标;
步骤23:将触摸屏点坐标转为系统屏幕点坐标值;
步骤24:将系统屏幕点坐标值转为系统鼠标事件;
通过以上步骤,实现触摸屏在vxwork系统下的串口驱动功能。
2.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤1中,在不影响vxworks系统正常使用的情况下,为解决系统需兼容其他类型鼠标设备的使用问题,需为系统单独配置一个虚拟鼠标设备;在workbench集成开发环境中,修改windml配置文件手动添加虚拟鼠标设备;
所述步骤1包括:
步骤11:创建windml工程;
步骤12:在windml工程中打开config.windml文件添加display设备,根据需求添加PS2或者UBS鼠标;
步骤13:用文本编辑器打开config.windml中手动添加虚拟鼠标设备配置语句。
3.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤21包括:
首先,在vxworks系统所接的设备中,指定与触摸屏通信的串口设备描述符;
其次,通过vxworks系统函数open打开与触摸屏通信的串口设备;
然后,配置串口的波特率、校验位参数;
最后,创建串口接收任务进行触摸屏点坐标数据接收。
4.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤21中,初始化串口设备环境步骤如下:
步骤211:读取配置文件中串口设备端口号和波特率的配置信息;
步骤212:获取串口设备描述符;
步骤213:使用vxworks系统函数open打开描述符所代表的串口设备并保存串口所指向的操作句柄;
步骤214:使用ioctl函数配置串口设备波特率和校验属性;
步骤215:创建串口接收任务;
步骤216:接收任务循环使用ioctl函数判断串口端口是否有新数据接收;当接收长度大于零时,则使用read函数读取串口数据。
5.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤22包括:
首先,提示用户点击屏幕左右上下四点;
其次,解析触摸屏串口报文获取触摸屏四个角落点坐标,然后根据触摸屏点坐标计算基准点坐标;
最后,将基准点坐标保存在本地文件,退出获取基准点过程。
6.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤22中,获取触摸屏校准基准点坐标的过程如下:
步骤221:提示用户输入左上方的点;
步骤222:解析左上方的点坐标值判断是否小于误差值,如果小于则提示用户输入右上方的点,否则继续提示输入左上方的点;
步骤223:循环进行步骤222,直到获取屏幕四个角落点的坐标tscal[i],i∈(0,3);
步骤224:计算基准点坐标bank[j],j∈(0,3),设触摸屏分辨率为TX*TY:
① bank[0]=(tscal[0].yc + tscal[1].yc)/2;;
② blank[1] = (tscal[0].xc + tscal[2].xc)/2;
③ blank[2] = TX-(tscal[1].xc + tscal[3].xc)/2;
④ blank[3] = TY-(tscal[2].yc + tscal[3].yc)/2;
步骤225:保存基准点坐标到文件,退出该过程。
7.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤23包括:
首先,通过串口接收任务,获取触摸屏设备发送的点击事件数据内容;解析触摸屏串口报文获取触摸屏点坐标;
然后,将触摸屏点坐标换算成系统屏幕点坐标。
8.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤23中,将触摸屏点坐标转为系统屏幕坐标点(x1,y1)的过程为:
首先解析串口报文获取触摸屏设备发送的坐标点(x0,y0);然后根据基准点坐标计算系统屏幕坐标点;设系统屏幕分辨率PX*PY,具体步骤如下:
①判断x0是否大于bank[1],如果是则将x0-bank[1]的值赋值给x0,否则将x0赋值为0;
② x1=(PX*x0)/(TX-(blank[1]+blank[2]));
③判断y0是否大于bank[0],如果是则将y0-bank[0]的值赋值给y0,否则将y0赋值为0;
④ y1=(PY*y0)/(TY-(blank[0]+blank[3]))。
9.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤24中,为了将触摸屏点击事件模拟成鼠标点击事件,需要将点击触摸屏产生的屏幕坐标值作为虚拟鼠标设备的鼠标事件函数的输入参数;然后,通过调用虚拟鼠标设备的鼠标事件函数mouse模拟成系统鼠标事件。
10.如权利要求1所述的vxworks系统下基于校准过程的触摸屏串口驱动设计方法,其特征在于,所述步骤24中,在由步骤23获取了有效的系统屏幕点坐标数据后,执行虚拟鼠标mouse函数,从而将屏幕点击事件模拟成了系统鼠标事件;具体步骤如下:
步骤241:记当前点坐标为临时变量tsInfo,前点坐标为静态变量bkInfo,初始化tsInfo和bkInfo的x坐标、y坐标、点状态status为0;
步骤242:如果bkInfo的点状态为0,则将tsInfo点状态赋值给bkInfo点状态后返回;如果bkInfo点状态不为0,继续下一步;
步骤243:判断tsInfo点状态和bkInfo点状态,根据两个点状态不同模拟相应的鼠标事件:
1)如果tsInfo点状态为连续状态并且bkInfo点坐标状态为点击状态,则模拟鼠标左键按下事件,连续点计数清零,记录起始坐标点位置为(x0,y0);
2)如果tsInfo点状态为连续状态且bkInfo点坐标状态为连续状态,连续点个数变量count自增加1,模拟鼠标移动事件;
3)如果tsInfo点状态为离开状态且bkInfo点状态为连续状态,分两种情况判断触发右键和左键:
①如果tsInfo的x坐标和y坐标跟x0,y0各自的差距小于q,并且count<10,则模拟左键弹起的鼠标事件;
②如果tsInfo的x坐标和y坐标跟x0,y0各自的差距小于q,并且count>=10,则模拟右键按下和弹起的鼠标事件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010656721.3A CN111880682A (zh) | 2020-07-09 | 2020-07-09 | vxworks系统下基于校准过程的触摸屏串口驱动设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010656721.3A CN111880682A (zh) | 2020-07-09 | 2020-07-09 | vxworks系统下基于校准过程的触摸屏串口驱动设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111880682A true CN111880682A (zh) | 2020-11-03 |
Family
ID=73151573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010656721.3A Pending CN111880682A (zh) | 2020-07-09 | 2020-07-09 | vxworks系统下基于校准过程的触摸屏串口驱动设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880682A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100676366B1 (ko) * | 2005-10-14 | 2007-01-30 | 김용태 | 터치스크린이 구비된 무선단말기를 이용한 컴퓨터 제어방법및 그 시스템 |
KR20110088604A (ko) * | 2010-01-26 | 2011-08-04 | 알서포트 주식회사 | 터치스크린내 가상마우스 구현방법 및 이를 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체 |
CN102508568A (zh) * | 2011-09-30 | 2012-06-20 | Tcl集团股份有限公司 | 相对坐标与绝对坐标的切换方法 |
US20140035851A1 (en) * | 2012-07-31 | 2014-02-06 | Samsung Electronics Co., Ltd. | Method for controlling user input and electronic device thereof |
CN110147198A (zh) * | 2019-05-21 | 2019-08-20 | 北京伏羲车联信息科技有限公司 | 一种手势识别方法、手势识别装置及车辆 |
CN110989551A (zh) * | 2019-11-22 | 2020-04-10 | 天津津航计算技术研究所 | 一种基于VxWorks系统通用型接口板的测试系统 |
-
2020
- 2020-07-09 CN CN202010656721.3A patent/CN111880682A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100676366B1 (ko) * | 2005-10-14 | 2007-01-30 | 김용태 | 터치스크린이 구비된 무선단말기를 이용한 컴퓨터 제어방법및 그 시스템 |
KR20110088604A (ko) * | 2010-01-26 | 2011-08-04 | 알서포트 주식회사 | 터치스크린내 가상마우스 구현방법 및 이를 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체 |
CN102508568A (zh) * | 2011-09-30 | 2012-06-20 | Tcl集团股份有限公司 | 相对坐标与绝对坐标的切换方法 |
US20140035851A1 (en) * | 2012-07-31 | 2014-02-06 | Samsung Electronics Co., Ltd. | Method for controlling user input and electronic device thereof |
CN110147198A (zh) * | 2019-05-21 | 2019-08-20 | 北京伏羲车联信息科技有限公司 | 一种手势识别方法、手势识别装置及车辆 |
CN110989551A (zh) * | 2019-11-22 | 2020-04-10 | 天津津航计算技术研究所 | 一种基于VxWorks系统通用型接口板的测试系统 |
Non-Patent Citations (1)
Title |
---|
唐建 邓涵: "基于WindML 的操纵杆驱动设计及多指针实现", 《机电产品开发与创新》, vol. 29, no. 2, pages 64 - 67 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105477854B (zh) | 应用于智能终端的手柄控制方法、装置及系统 | |
CN111880683B (zh) | vxworks系统下基于windml虚拟设备的触摸屏串口驱动设计方法 | |
CN103324348B (zh) | 一种基于智能移动终端的Windows桌面控制方法 | |
CN101789557A (zh) | 一种多功能接口转换装置 | |
CN102053911A (zh) | 基于Android的自动化测试方法、系统及移动终端 | |
CN110058763B (zh) | 交互信息处理方法、系统、装置、存储介质及笔记本 | |
CN1190721C (zh) | 协同手写输入的系统和方法 | |
US8977968B2 (en) | Pseudo-remote terminal IOTA mobile diagnostics and electronic customer care | |
US10168898B2 (en) | Supporting different event models using a single input source | |
CN110174946A (zh) | 鼠标操作模拟方法、模拟系统、存储介质、及电子设备 | |
CN109144300B (zh) | 一种多用途远程鼠键控制方法及系统 | |
CN111880682A (zh) | vxworks系统下基于校准过程的触摸屏串口驱动设计方法 | |
CN113312122A (zh) | 虚拟键盘调用方法、装置、计算机存储介质及电子设备 | |
US20220272009A1 (en) | Incorporation of a trace visualization with a traffic graph visualization in a service mesh | |
CN114153321A (zh) | 一种虚拟键盘和鼠标实现远程控制的方法 | |
CN113419662A (zh) | 辅助触摸设备呈现书写轨迹的方法、装置、配件及终端 | |
CN108897457B (zh) | 触控装置组件以及触控系统 | |
CN112631499A (zh) | 以hook方式实现自定义全局手势技术的方法 | |
CN113806279B (zh) | 一种基于SystemC实现iMX6Q的SoC片上串口的建模方法 | |
US20100287569A1 (en) | Computer, input method, and computer-readable medium | |
CN111870938A (zh) | vxworks系统下基于windml的操纵杆串口驱动设计方法 | |
CN112527166B (zh) | 触控指令的处理方法、装置、设备以及存储介质 | |
US9367166B1 (en) | System and method of visualizing capacitance sensing system operation | |
CN113204494B (zh) | 终端远程测试平台及方法、电子设备及可读介质 | |
CN109407823B (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 |