[发明专利]一种基于驱动层处理串口通信的方法有效
申请号: | 201510513471.7 | 申请日: | 2015-08-20 |
公开(公告)号: | CN105068947B | 公开(公告)日: | 2018-01-16 |
发明(设计)人: | 高强;李姗姗;孙宾;胡焱 | 申请(专利权)人: | 浪潮软件集团有限公司 |
主分类号: | G06F13/10 | 分类号: | G06F13/10 |
代理公司: | 济南信达专利事务所有限公司37100 | 代理人: | 孟峣 |
地址: | 250100 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 驱动 处理 串口 通信 方法 | ||
技术领域
本发明涉及自助设备技术领域,具体地说是一种实用性强、基于驱动层处理串口通信的方法。
背景技术
在自助设备运行过程中,设备主机需外设模块的协同合作完成各种功能,为了便于主机与外设模块高效通信,驱动层与外设模块之间的数据交互和处理方式尤为重要。
当前,驱动层在与外设的串口通信中,大部分采用同步的串口问答方式,并且在读取串口数据时,多字节整条指令同时读取信息,这种处理方式,在情况复杂的串口数据交互时,会出现驱动层接收底层外设串口数据错误的异常情况,虽然驱动层在此基础上对底层交互做一些特定处理,完成所需功能,但是通信效率会降低,底层外设对外提供的功能也会受到限制。为了完善上述问题,现提出了一种基于驱动层处理串口通信数据的方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、基于驱动层处理串口通信的方法。
一种基于驱动层处理串口通信的方法,其具体实现过程为:
驱动层在与外设串口通信时,建立收、发数据流程相互独立的处理架构,即主线程与次线程;
在串口通信数据交互过程中,驱动层主线程与次线程分别在发送和接收命令时,通过全局标志位的状态变化及更新,使得两线程间收发功能对应,实现对串口数据的处理及功能分类;
在串口读取数据时,采用单字节读取的方式,按照通信协议的规则对读取到的每个字节进行分析及处理,以保证获取到信息的完整性及准确性,并能对底层硬件不定时发出的报告指令在此流程中统一处理。
驱动层在与底层硬件模块,即串口通信的整个流程中,主次两个线程分别控制串口的收、发数据,其中主线程负责要执行功能指令的发送,并对外提供硬件模块的全部功能接口;次线程由主线程在打开串口时启动,一直监听着串口收到的数据信息,直到串口关闭。
所述步骤二中,通过设定全局标志位Flag使两线程之间建立联系并及时更新信息,在主线程接口发送命令时启动标志位,次线程从串口读取到相对应的功能指令后,把相应的标志位状态改变;这样,主线程各接口通过标志位Flag的状态来判断底层硬件对驱动层的响应情况,根据响应情况执行后续操作流程。
驱动层与底层硬件模块之间,即与串口之间进行通信时,采用“命令、响应、应答、响应”的信息交互方式和底层硬件自动上报“报告”的信息,响应的数据类型为“0x00 0x00”、“0x01 0x01”、“0x02 0x02”,且这些响应数据底层会返给驱动层。
串口收到的数据,采用单字节读取的方式,对于收到的单个字节做出“应答”和“响应”的命令分类及判断,根据串口通信帧格式,通过指令的“服务码”和“句柄号”部分确定收到的每条指令类型,确定收到的指令数据和主线程的某一具体指令功能接口相对应,在串口获取到该命令后,以消息的形式发送给上层。
所述串口通信帧的格式具体为:其字符位0~13分别定义为帧头、帧头、帧长度、帧长度、帧类型、帧序号、服务码、对象类型、模块地址、句柄号、属性ID、属性标签、属性值、校验码。
所述主线程上添加有互斥锁,当驱动层与外设串口通信,打开串口时,调用功能接口加入该互斥锁,驱动层发送功能命令,同时flag标志位初始化,当驱动层接收到应答后,解该互斥锁,从而确保串口通信高效。
本发明的一种基于驱动层处理串口通信的方法,具有以下优点:
该发明的一种基于驱动层处理串口通信的方法在驱动层与底层硬件模块串口数据交互时,串口收、发数据双线程独立处理;使用单字节方式接收串口数据,从根本上保证串口数据的完整性及准确性;主线程中互斥锁的添加,保证各功能模块有序执行,对底层硬件模块提供了缓冲时间,具有一定的保护作用,有效节省资源,提高模块的工作效率,实用性强,适用范围广泛,易于推广。
附图说明
附图1为串口通信帧格式示意图。
附图2为本发明的串口通信示意图。
附图3为本发明中驱动层收发数据流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如附图1、图2、图3所示,一种基于驱动层处理串口通信的方法,其具体实现过程为:
驱动层在与外设串口通信时,建立收、发数据流程相互独立的处理架构,即主线程与次线程;
在串口通信数据交互过程中,驱动层主线程与次线程分别在发送和接收命令时,通过全局标志位的状态变化及更新,使得两线程间收发功能对应,实现对串口数据的处理及功能分类;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮软件集团有限公司,未经浪潮软件集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510513471.7/2.html,转载请声明来源钻瓜专利网。