中标麒麟系统下操纵杆串口驱动设计方法技术方案

技术编号:37355953 阅读:28 留言:0更新日期:2023-04-27 07:06
本发明专利技术涉及一种中标麒麟系统下操纵杆串口驱动设计方法,属于国产化操作系统下操纵杆串口驱动技术领域。本发明专利技术在系统为中标麒麟的应用场景下,针对系统平台特性,根据操纵杆设备串口数据的特点,通过信号量事件传送操纵杆力敏坐标,设计实现了一种基于信号量事件的操纵杆串口驱动。本发明专利技术简化了操纵杆串口驱动加载过程,针对操纵杆串口数据特点,将操纵杆移动事件转化为信号量事件,为上层应用程序提供操纵杆移动方向坐标接口。操纵杆移动方向坐标接口。

【技术实现步骤摘要】
中标麒麟系统下操纵杆串口驱动设计方法


[0001]本专利技术属于国产化操作系统下操纵杆串口驱动
,具体涉及一种中标麒麟系统下操纵杆串口驱动设计方法。

技术介绍

[0002]麒麟操作系统是采用强化的Linux内核,分为桌面版、通用版、高级版和安全版,满足不同客户要求,已经广泛的使用在能源、金融、政府、央企等行业领域。操纵杆作为武器系统中的常见输入装置,通过将操纵杆的手柄扳动一定角度从而实现上下左右的方向控制。
[0003]为了使得操纵杆作为串口设备在麒麟系统下能正常使用,需要解决操纵杆的串口驱动问题。目前成熟的操纵杆驱动技术有基于windml多指针实现,将操纵杆设备作为低层输入驱动使用系统的标准串口驱动,驱动的内容使用高层输入驱动,模拟windml对ps/2鼠标的消息机制对串口的操纵杆进行同样的驱动设计;但是上述方法没有针对操纵杆移动事件为上层应用程序提供移动坐标接口,同时还限定了系统对所能够接入的操纵杆设备的类型。
[0004]为了解决麒麟系统下的操纵杆串口驱动问题,简化驱动事件过程,提出一种操纵杆串口驱动设计方法。

技术实现思路

[0005](一)要解决的技术问题
[0006]本专利技术要解决的技术问题是:在国产化操作系统麒麟平台下,解决操纵杆的串口驱动问题。
[0007](二)技术方案
[0008]为了解决上述技术问题,本专利技术提供了一种中标麒麟系统下操纵杆串口驱动设计方法,其特征在于,包括:
[0009]步骤1、加载串口驱动
[0010]以管理员权限打开系统自启动加载文件,在该文件中添加串口驱动加载语句,满足串口驱动开机自启动需求;
[0011]步骤2、设置串口操作接口
[0012]设置串口初始化接口、读数据接口、写数据接口;
[0013]步骤3、设置操作杆驱动与上层应用的交互接口
[0014]设计提供给上层应用的结构化数据结构,同时按照应用层要求,设计操纵杆参数为可配置,且操纵杆参数以事件的方式实时上报;
[0015]步骤4、根据用户参数初始化操纵杆的使用环境
[0016]首先,获取用户参数并记录;然后,初始化信号量参数和串口句柄;其次,根据用户参数通过串口初始化接口打开与操纵杆通信的串口设备,配置串口的波特率、校验位;最后,创建串口接收任务,进行操纵杆串口数据接收;
[0017]步骤5、解析串口数据,获取操纵杆发送的力敏调节坐标
[0018]首先通过所述串口接收任务,获取操纵杆发送的移动事件报文的数据内容;然后对报文进行合法性验证,对于不合法的报文进行滑窗处理,减少串口数据的丢包率;对于合法的报文,则获取数据内容中操纵杆相对中心点的力敏调节坐标(X,Y);最后,发送力敏调节坐标(X,Y)的坐标信号量;
[0019]步骤6、根据所述坐标信号量设置屏幕坐标上报操纵杆移动坐标事件
[0020]根据串口接收线程发送的所述坐标信号量,实时获取移动坐标信息并上报给应用层,从而实现操纵杆在中标麒麟系统下的串口驱动功能。
[0021]本专利技术还提供了一种用于实现所述方法的系统。
[0022]本专利技术还提供了一种所述方法在武器系统中的应用。
[0023]本专利技术还提供了一种所述系统在武器系统中的应用。
[0024](三)有益效果
[0025]本专利技术在系统为中标麒麟的应用场景下,针对系统平台特性,根据操纵杆设备串口数据的特点,通过信号量事件传送操纵杆力敏坐标,设计实现了一种基于信号量事件的操纵杆串口驱动。本专利技术简化了操纵杆串口驱动加载过程,针对操纵杆串口数据特点,将操纵杆移动事件转化为信号量事件,为上层应用程序提供操纵杆移动方向坐标接口。
具体实施方式
[0026]为使本专利技术的目的、内容、和优点更加清楚,下面结合实施例,对本专利技术的具体实施方式作进一步详细描述。
[0027]为了解决中标麒麟系统下操纵杆的串口驱动问题,本专利技术采用信号量的实现方法。下面对本专利技术的内容作进一步描述。该方法的具体步骤如下:
[0028]1、加载串口驱动
[0029]以管理员权限打开系统自启动加载文件,在文件中添加串口驱动加载语句,满足串口驱动开机自启动需求。
[0030]2、设置串口操作接口
[0031]设置串口初始化接口Init、读数据接口Read、写数据接口Write。设置串口初始化接口Init的具体步骤如下:
[0032]a.以用户指定端口号为函数参数,使用系统函数open打开串口设备,并将打开串口设备的句柄保存在ret中;
[0033]b.检测ret是否为空,如果是则报错退出,否则进行下一步;
[0034]c.使用系统函数fcntl设置句柄ret所代表的串口设备;
[0035]d.以用户指定数值为参数设置波特率;
[0036]设置读数据接口Read的具体步骤如下:
[0037]a.以串口句柄ret、存储数据数组readBuf、所读取数据长度为参数,用系统函数read获取串口数据;
[0038]b.返回读取数据的长度;
[0039]设置写数据接口Write的具体步骤如下:
[0040]a.以串口句柄ret、存储数据数组writeBuf、所发送数据长度为参数,使用系统函
数write发送串口数据;
[0041]b.返回发送数据的长度;
[0042]3、设置操作杆驱动与上层应用的交互接口
[0043]独立设计提供给上层应用(应用层)的结构化数据结构,同时按照应用层要求,设计操纵杆参数为可配置,且操纵杆参数以事件的方式实时上报,设计所述结构化数据结构的具体步骤如下:
[0044]a.设计操作杆的坐标数据结构stickData,该坐标数据结构包含X和Y坐标,分别表示操纵杆相对原点移动的位移;
[0045]b.设计串口参数数据结构comDataInfo,该串口参数数据结构包含串口号和波特率;
[0046]c.指定InitStick为初始化操纵杆的初始化接口函数,用户需要先调用该初始化接口函数进行初始化,并传送步骤b设计的参数信息即串口号和波特率,初始化成功则返回1,否则返回

1;
[0047]d.指定reportStickEvent为操纵杆坐标上报事件接口函数,用户需要创建一个线程等待该操纵杆坐标上报事件接口函数的返回值,并传送步骤a设计的参数信息;
[0048]4、根据用户参数初始化操纵杆的使用环境
[0049]首先,获取用户参数并记录;然后,初始化信号量参数和串口句柄;其次,根据用户参数通过串口初始化接口打开与操纵杆通信的串口设备,配置串口的波特率、校验位等参数;最后,创建串口接收任务进行操纵杆串口数据接收。
[0050]5、解析串口数据,获取操纵杆发送的力敏调节坐标
[0051]首先通过所述串口接收任务,获取操纵杆发送的移动事件报文的数据内容;然后对报文进行合法性本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种中标麒麟系统下操纵杆串口驱动设计方法,其特征在于,包括:步骤1、加载串口驱动以管理员权限打开系统自启动加载文件,在该文件中添加串口驱动加载语句,满足串口驱动开机自启动需求;步骤2、设置串口操作接口设置串口初始化接口、读数据接口、写数据接口;步骤3、设置操作杆驱动与上层应用的交互接口设计提供给上层应用的结构化数据结构,同时按照应用层要求,设计操纵杆参数为可配置,且操纵杆参数以事件的方式实时上报;步骤4、根据用户参数初始化操纵杆的使用环境首先,获取用户参数并记录;然后,初始化信号量参数和串口句柄;其次,根据用户参数通过串口初始化接口打开与操纵杆通信的串口设备,配置串口的波特率、校验位;最后,创建串口接收任务,进行操纵杆串口数据接收;步骤5、解析串口数据,获取操纵杆发送的力敏调节坐标首先通过所述串口接收任务,获取操纵杆发送的移动事件报文的数据内容;然后对报文进行合法性验证,对于不合法的报文进行滑窗处理,减少串口数据的丢包率;对于合法的报文,则获取数据内容中操纵杆相对中心点的力敏调节坐标(X,Y);最后,发送力敏调节坐标(X,Y)的坐标信号量;步骤6、根据所述坐标信号量设置屏幕坐标上报操纵杆移动坐标事件根据串口接收线程发送的所述坐标信号量,实时获取移动坐标信息并上报给应用层,从而实现操纵杆在中标麒麟系统下的串口驱动功能。2.如权利要求1所述的方法,其特征在于,步骤2中,设置串口初始化接口Init的具体步骤如下:a.以用户指定端口号为函数参数,使用系统函数open打开串口设备,并将打开串口设备的句柄保存在ret中;b.检测ret是否为空,如果是则报错退出,否则进行下一步;c.使用系统函数fcntl设置句柄ret所代表的串口设备;d.以用户指定数值为参数设置波特率。3.如权利要求2所述的方法,其特征在于,步骤2中,设置读数据接口Read的具体步骤如下:a.以串口句柄ret、存储数据数组readBuf、所读取数据长度为参数,用系统函数read获取串口数据;b.返回读取数据的长度。4.如权利要求3所述的方法,其特征在于,步骤2中,设置写数据接口Write的具体步骤如下:a.以串口句柄ret、存储数据数组writeBuf、所发送数据长度为参数,使用系统函数write发送串口数据;b.返回发送数据的长度。5.如权利要求4所述的方法,其特征在于,步骤3中,设计所述结构化数据结构的具体步
骤如下:a.设计操作杆的坐标数据结构stickData,该坐标数据结构包含X和Y坐标,分别表示操纵杆相对原点移动的位移;b.设计串口参数数据结构comDataInfo,该串口参数数据结构包含串口号和波特率;c.指定InitStick为初始化操纵杆的初始化接口函数,用户需要先调用该初始化接口函数进行初始化,并传送上面步骤b设计的参数信息即串口号和波特率,初始化成功则返回1,否则返回

1;d.指定reportStickEvent为操纵杆坐标上报事件接口函数,用户需要创建一个线程等待该操纵杆坐标上报事件接口函数的返回值,并传送步骤a设计的参数信息。6.如权利要求5所述的方法,其特征在于,步骤5具体为:1)申请一个静态数组,并初始化该静态数组buf,数组长度即报文最大长度为MAX_LEN,记录存储数组的长度为静态整型变量msgLen;2)循环遍历串口接收到的数据数组recvBuf;3)首先判断遍历次数是否小于本次接收的数据长度recvLen,如果是,则执行下一步,否则退出该过程;4)记录存储数组的长度msgLen自增1;5)分类判断存储数组的长度msgLen当前的长度值,具体步骤如下;a.如果msgLen的值为1,则将数据数组recvBuf的当前值赋值给静态数组bu...

【专利技术属性】
技术研发人员:高娟
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1