CN105068947A - 一种基于驱动层处理串口通信的方法 - Google Patents

一种基于驱动层处理串口通信的方法 Download PDF

Info

Publication number
CN105068947A
CN105068947A CN201510513471.7A CN201510513471A CN105068947A CN 105068947 A CN105068947 A CN 105068947A CN 201510513471 A CN201510513471 A CN 201510513471A CN 105068947 A CN105068947 A CN 105068947A
Authority
CN
China
Prior art keywords
data
serial
serial communication
response
thread
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
Application number
CN201510513471.7A
Other languages
English (en)
Other versions
CN105068947B (zh
Inventor
高强
李姗姗
孙宾
胡焱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Financial Information Technology Co Ltd
Original Assignee
Inspur Software Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201510513471.7A priority Critical patent/CN105068947B/zh
Publication of CN105068947A publication Critical patent/CN105068947A/zh
Application granted granted Critical
Publication of CN105068947B publication Critical patent/CN105068947B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver

Abstract

本发明公开了一种基于驱动层处理串口通信的方法,包括以下步骤:驱动层在与外设串口通信时,建立收、发数据流程相互独立的处理架构,即主线程与次线程;在串口通信数据交互过程中,驱动层主线程与次线程分别在发送和接收命令时,通过全局标志位的状态变化及更新,使得两线程间收发功能对应,实现对串口数据的处理及功能分类;在串口读取数据时,采用单字节读取的方式,按照通信协议的规则对读取到的每个字节进行分析及处理,对底层硬件不定时发出的报告指令在此流程中统一处理。该一种基于驱动层处理串口通信的方法与现有技术相比,可有效节省资源,提高模块的工作效率,实用性强,适用范围广泛,易于推广。

Description

一种基于驱动层处理串口通信的方法
技术领域
本发明涉及自助设备技术领域,具体地说是一种实用性强、基于驱动层处理串口通信的方法。
背景技术
在自助设备运行过程中,设备主机需外设模块的协同合作完成各种功能,为了便于主机与外设模块高效通信,驱动层与外设模块之间的数据交互和处理方式尤为重要。
当前,驱动层在与外设的串口通信中,大部分采用同步的串口问答方式,并且在读取串口数据时,多字节整条指令同时读取信息,这种处理方式,在情况复杂的串口数据交互时,会出现驱动层接收底层外设串口数据错误的异常情况,虽然驱动层在此基础上对底层交互做一些特定处理,完成所需功能,但是通信效率会降低,底层外设对外提供的功能也会受到限制。为了完善上述问题,现提出了一种基于驱动层处理串口通信数据的方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、基于驱动层处理串口通信的方法。
一种基于驱动层处理串口通信的方法,其具体实现过程为:
驱动层在与外设串口通信时,建立收、发数据流程相互独立的处理架构,即主线程与次线程;
在串口通信数据交互过程中,驱动层主线程与次线程分别在发送和接收命令时,通过全局标志位的状态变化及更新,使得两线程间收发功能对应,实现对串口数据的处理及功能分类;
在串口读取数据时,采用单字节读取的方式,按照通信协议的规则对读取到的每个字节进行分析及处理,以保证获取到信息的完整性及准确性,并能对底层硬件不定时发出的报告指令在此流程中统一处理。
驱动层在与底层硬件模块,即串口通信的整个流程中,主次两个线程分别控制串口的收、发数据,其中主线程负责要执行功能指令的发送,并对外提供硬件模块的全部功能接口;次线程由主线程在打开串口时启动,一直监听着串口收到的数据信息,直到串口关闭。
所述步骤二中,通过设定全局标志位Flag使两线程之间建立联系并及时更新信息,在主线程接口发送命令时启动标志位,次线程从串口读取到相对应的功能指令后,把相应的标志位状态改变;这样,主线程各接口通过标志位Flag的状态来判断底层硬件对驱动层的响应情况,根据响应情况执行后续操作流程。
驱动层与底层硬件模块之间,即与串口之间进行通信时,采用“命令、响应、应答、响应”的信息交互方式和底层硬件自动上报“报告”的信息,响应的数据类型为“0x000x00”、“0x010x01”、“0x020x02”,且这些响应数据底层会返给驱动层。
串口收到的数据,采用单字节读取的方式,对于收到的单个字节做出“应答”和“响应”的命令分类及判断,根据串口通信帧格式,通过指令的“服务码”和“句柄号”部分确定收到的每条指令类型,确定收到的指令数据和主线程的某一具体指令功能接口相对应,在串口获取到该命令后,以消息的形式发送给上层。
所述串口通信帧的格式具体为:其字符位0~13分别定义为帧头、帧头、帧长度、帧长度、帧类型、帧序号、服务码、对象类型、模块地址、句柄号、属性ID、属性标签、属性值、校验码。
所述主线程上添加有互斥锁,当驱动层与外设串口通信,打开串口时,调用功能接口加入该互斥锁,驱动层发送功能命令,同时flag标志位初始化,当驱动层接收到应答后,解该互斥锁,从而确保串口通信高效。
本发明的一种基于驱动层处理串口通信的方法,具有以下优点:
该发明的一种基于驱动层处理串口通信的方法在驱动层与底层硬件模块串口数据交互时,串口收、发数据双线程独立处理;使用单字节方式接收串口数据,从根本上保证串口数据的完整性及准确性;主线程中互斥锁的添加,保证各功能模块有序执行,对底层硬件模块提供了缓冲时间,具有一定的保护作用,有效节省资源,提高模块的工作效率,实用性强,适用范围广泛,易于推广。
附图说明
附图1为串口通信帧格式示意图。
附图2为本发明的串口通信示意图。
附图3为本发明中驱动层收发数据流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如附图1、图2、图3所示,一种基于驱动层处理串口通信的方法,其具体实现过程为:
驱动层在与外设串口通信时,建立收、发数据流程相互独立的处理架构,即主线程与次线程;
在串口通信数据交互过程中,驱动层主线程与次线程分别在发送和接收命令时,通过全局标志位的状态变化及更新,使得两线程间收发功能对应,实现对串口数据的处理及功能分类;
在串口读取数据时,采用单字节读取的方式,按照通信协议的规则对读取到的每个字节进行分析及处理,以保证获取到信息的完整性及准确性,并能对底层硬件不定时发出的报告指令在此流程中统一处理。
为了便于上层应用使用,驱动层需要将硬件模块的全部功能对外开放,因此,需要将底层模块的各功能都作为单独接口对外提供,这样上层应用可根据业务需求及各种逻辑处理,在此基础上继续封装以便于使用硬件模块的全部功能。
驱动层在与底层硬件模块,即串口通信的整个流程中,主次两个线程分别控制串口的收、发数据,其中主线程负责要执行功能指令的发送,并对外提供硬件模块的全部功能接口;次线程由主线程在打开串口时启动,一直监听着串口收到的数据信息,直到串口关闭,因此,在串口信息交互中,数据的收、发过程是相互独立的。
所述步骤二中,通过设定全局标志位Flag使两线程之间建立联系并及时更新信息,在主线程接口发送命令时启动标志位,次线程从串口读取到相对应的功能指令后,把相应的标志位状态改变;这样,主线程各接口通过标志位Flag的状态来判断底层硬件对驱动层的响应情况,根据响应情况执行后续操作流程。
因受限于硬件模块的串口通信协议,驱动层与底层硬件模块之间,即与串口之间进行通信时,采用“命令、响应、应答、响应”的信息交互方式和底层硬件自动上报“报告”的信息,响应的数据类型为“0x000x00”、“0x010x01”、“0x020x02”,且这些响应数据底层会返给驱动层。
指令信息发送的最终目的是要底层硬件模块执行相应的功能,同时底层硬件模块也向驱动层反馈信息,串口从底层硬件模块收到的所有数据都会被线程监听。对于串口收到的数据,采用单字节读取的方式,对于收到的单个字节做出“应答”和“响应”的命令分类及判断,根据串口通信帧格式,通过指令的“服务码”和“句柄号”部分确定收到的每条指令类型,确定收到的指令数据和主线程的某一具体指令功能接口相对应,在串口获取到该命令后,以消息的形式发送给上层。
底层硬件模块定义的串口通信帧格式如图1所示,该串口通信帧的格式具体为:其字符位0~13分别定义为帧头、帧头、帧长度、帧长度、帧类型、帧序号、服务码、对象类型、模块地址、句柄号、属性ID、属性标签、属性值、校验码。
所述主线程上添加有互斥锁,当驱动层与外设串口通信,打开串口时,驱动层调用功能接口加入该互斥锁,驱动层发送功能命令,同时flag标志位初始化,当驱动层接收到应答后,解该互斥锁,从而确保串口通信高效。
在上层应用多线程调用复杂的情况下,驱动层多个接口有可能会被同时调用,而这些响应数据在串口读取到时,无法判断是哪个主线程接口返回的信息。为了确保驱动层与硬件模块通信可靠性,需要在主线程发送命令到收到响应的这个时间段内加一个互斥锁,这样保证各接口不会因为临界时间的问题产生信息交互的异常存在。驱动层各功能模块收、发数据流程如图3所示。
在驱动层与底层硬件模块串口数据交互时使用了新的处理架构,串口收、发数据双线程分别处理且相互独立,流程清晰;使用单字节方式接收串口数据,能够完整的收到串口数据信息并能对数据进行命令分类及判断,能从根本上保证串口数据的完整性及准确性;采用该架构及串口读取数据的方式,在处理底层随机自动上报的命令时优势最为明显,不用单独再起一个线程监控随机上报的命令,架构及流程清晰,信息交互执行效率更高,更为节省资源;主线程中互斥锁的添加,保证各功能模块有序执行,也对底层硬件模块提供了更大的缓冲时间,对硬件也有一个保护的作用。
本发明的开发及架构流程处理方式已应用在各个硬件模块驱动及各大项目中,与串口数据处理相关的异常在驱动层中从未发生,和其他处理方式相比,驱动层仅仅做了一个底层信息交互、解析及优化的功能,没有对底层硬件的功能做时间或功能的限制,能够合理控制与底层的交互,而且在出现问题的情况下能够很清楚的界定软件或是硬件问题点的范围,这种处理方式能够节省资源,提高模块的工作效率。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种基于驱动层处理串口通信的方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

Claims (7)

1.一种基于驱动层处理串口通信的方法,其特征在于,其具体实现过程为:
一、驱动层在与外设串口通信时,建立收、发数据流程相互独立的处理架构,即主线程与次线程;
二、在串口通信数据交互过程中,驱动层主线程与次线程分别在发送和接收命令时,通过全局标志位的状态变化及更新,使得两线程间收发功能对应,实现对串口数据的处理及功能分类;
三、在串口读取数据时,采用单字节读取的方式,按照通信协议的规则对读取到的每个字节进行分析及处理,以保证获取到信息的完整性及准确性,并能对底层硬件不定时发出的报告指令在此流程中统一处理。
2.根据权利要求1所述的一种基于驱动层处理串口通信的方法,其特征在于,驱动层在与底层硬件模块,即串口通信的整个流程中,主次两个线程分别控制串口的收、发数据,其中主线程负责要执行功能指令的发送,并对外提供硬件模块的全部功能接口;次线程由主线程在打开串口时启动,一直监听着串口收到的数据信息,直到串口关闭。
3.根据权利要求1所述的一种基于驱动层处理串口通信的方法,其特征在于,所述步骤二中,通过设定全局标志位Flag使两线程之间建立联系并及时更新信息,在主线程接口发送命令时启动标志位,次线程从串口读取到相对应的功能指令后,把相应的标志位状态改变;这样,主线程各接口通过标志位Flag的状态来判断底层硬件对驱动层的响应情况,根据响应情况执行后续操作流程。
4.根据权利要求3所述的一种基于驱动层处理串口通信的方法,其特征在于,驱动层与底层硬件模块之间,即与串口之间进行通信时,采用“命令、响应、应答、响应”的信息交互方式和底层硬件自动上报“报告”的信息,响应的数据类型为“0x000x00”、“0x010x01”、“0x020x02”,且这些响应数据底层会返给驱动层。
5.根据权利要求4所述的一种基于驱动层处理串口通信的方法,其特征在于,串口收到的数据,采用单字节读取的方式,对于收到的单个字节做出“应答”和“响应”的命令分类及判断,根据串口通信帧格式,通过指令的“服务码”和“句柄号”部分确定收到的每条指令类型,确定收到的指令数据和主线程的某一具体指令功能接口相对应,在串口获取到该命令后,以消息的形式发送给上层。
6.根据权利要求5所述的一种基于驱动层处理串口通信的方法,其特征在于,所述串口通信帧的格式具体为:其字符位0~13分别定义为帧头、帧头、帧长度、帧长度、帧类型、帧序号、服务码、对象类型、模块地址、句柄号、属性ID、属性标签、属性值、校验码。
7.根据权利要求1所述的一种基于驱动层处理串口通信的方法,其特征在于,所述主线程上添加有互斥锁,当驱动层与外设串口通信,打开串口时,调用功能接口加入该互斥锁,驱动层发送功能命令,同时flag标志位初始化,当驱动层接收到应答后,解该互斥锁,从而确保串口通信高效。
CN201510513471.7A 2015-08-20 2015-08-20 一种基于驱动层处理串口通信的方法 Active CN105068947B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510513471.7A CN105068947B (zh) 2015-08-20 2015-08-20 一种基于驱动层处理串口通信的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510513471.7A CN105068947B (zh) 2015-08-20 2015-08-20 一种基于驱动层处理串口通信的方法

Publications (2)

Publication Number Publication Date
CN105068947A true CN105068947A (zh) 2015-11-18
CN105068947B CN105068947B (zh) 2018-01-16

Family

ID=54498324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510513471.7A Active CN105068947B (zh) 2015-08-20 2015-08-20 一种基于驱动层处理串口通信的方法

Country Status (1)

Country Link
CN (1) CN105068947B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648610A (zh) * 2016-10-24 2017-05-10 广州华多网络科技有限公司 功能接口远程调用及其响应的方法和装置
CN106815950A (zh) * 2017-01-11 2017-06-09 浪潮(苏州)金融技术服务有限公司 一种基于单模块的智慧柜员机驱动方法及其系统
CN107894937A (zh) * 2016-12-30 2018-04-10 上海亿账通互联网科技有限公司 移动设备的帧率数据处理方法及装置
CN107992367A (zh) * 2017-10-20 2018-05-04 河南平高电气股份有限公司 一种Modbus串口数据处理方法
CN108762182A (zh) * 2018-05-02 2018-11-06 精技电子(南通)有限公司 一种伺服系统中的高效通信控制方法
CN111625489A (zh) * 2020-05-27 2020-09-04 深圳市元征科技股份有限公司 一种串口数据分发方法、装置、设备、介质
CN112133015A (zh) * 2020-08-30 2020-12-25 浪潮金融信息技术有限公司 一种基于CCTalk协议实现驱动层硬币识别功能的方法
CN113177015A (zh) * 2021-05-24 2021-07-27 石家庄通合电子科技股份有限公司 基于帧头的串口通讯方法和串口芯片
CN113538767A (zh) * 2021-06-01 2021-10-22 浪潮金融信息技术有限公司 一种半双工的驱动层找零方法、系统及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570899A (zh) * 2004-04-25 2005-01-26 赵红刚 电脑与串口外接模块自动匹配通信的方法
US20090077324A1 (en) * 2007-09-17 2009-03-19 Glenn Smith Methods and systems for exchanging data
CN101907881A (zh) * 2010-06-04 2010-12-08 西安电子科技大学 可编程式数字脉冲发生器
CN102541792A (zh) * 2011-12-19 2012-07-04 云海创想信息技术(北京)有限公司 一种双控bmc之间串口通讯的方法
CN103236154A (zh) * 2013-03-27 2013-08-07 深圳创维数字技术股份有限公司 一种红外串口通信方法和装置
CN104317765A (zh) * 2014-10-20 2015-01-28 成都广达电子股份有限公司 一种基于串口通讯的一对多通讯系统和实现方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570899A (zh) * 2004-04-25 2005-01-26 赵红刚 电脑与串口外接模块自动匹配通信的方法
US20090077324A1 (en) * 2007-09-17 2009-03-19 Glenn Smith Methods and systems for exchanging data
CN101907881A (zh) * 2010-06-04 2010-12-08 西安电子科技大学 可编程式数字脉冲发生器
CN102541792A (zh) * 2011-12-19 2012-07-04 云海创想信息技术(北京)有限公司 一种双控bmc之间串口通讯的方法
CN103236154A (zh) * 2013-03-27 2013-08-07 深圳创维数字技术股份有限公司 一种红外串口通信方法和装置
CN104317765A (zh) * 2014-10-20 2015-01-28 成都广达电子股份有限公司 一种基于串口通讯的一对多通讯系统和实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
姚勇: "基于ARM的广播发射机控制系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648610A (zh) * 2016-10-24 2017-05-10 广州华多网络科技有限公司 功能接口远程调用及其响应的方法和装置
CN107894937A (zh) * 2016-12-30 2018-04-10 上海亿账通互联网科技有限公司 移动设备的帧率数据处理方法及装置
CN106815950A (zh) * 2017-01-11 2017-06-09 浪潮(苏州)金融技术服务有限公司 一种基于单模块的智慧柜员机驱动方法及其系统
CN106815950B (zh) * 2017-01-11 2020-02-18 浪潮金融信息技术有限公司 一种基于单模块的智慧柜员机驱动方法及其系统
CN107992367B (zh) * 2017-10-20 2020-09-25 河南平高电气股份有限公司 一种Modbus串口数据处理方法
CN107992367A (zh) * 2017-10-20 2018-05-04 河南平高电气股份有限公司 一种Modbus串口数据处理方法
CN108762182A (zh) * 2018-05-02 2018-11-06 精技电子(南通)有限公司 一种伺服系统中的高效通信控制方法
CN111625489A (zh) * 2020-05-27 2020-09-04 深圳市元征科技股份有限公司 一种串口数据分发方法、装置、设备、介质
CN111625489B (zh) * 2020-05-27 2022-06-14 深圳市元征科技股份有限公司 一种串口数据分发方法、装置、设备、介质
CN112133015A (zh) * 2020-08-30 2020-12-25 浪潮金融信息技术有限公司 一种基于CCTalk协议实现驱动层硬币识别功能的方法
CN112133015B (zh) * 2020-08-30 2023-01-31 浪潮金融信息技术有限公司 一种基于CCTalk协议实现驱动层硬币识别功能的方法
CN113177015A (zh) * 2021-05-24 2021-07-27 石家庄通合电子科技股份有限公司 基于帧头的串口通讯方法和串口芯片
CN113538767A (zh) * 2021-06-01 2021-10-22 浪潮金融信息技术有限公司 一种半双工的驱动层找零方法、系统及介质
CN113538767B (zh) * 2021-06-01 2023-10-27 浪潮金融信息技术有限公司 一种半双工的驱动层找零方法、系统及介质

Also Published As

Publication number Publication date
CN105068947B (zh) 2018-01-16

Similar Documents

Publication Publication Date Title
CN105068947A (zh) 一种基于驱动层处理串口通信的方法
CN104965700A (zh) VxWorks操作系统下实现驱动SPI设备的方法和系统
CN105740139B (zh) 一种基于虚拟环境的嵌入式软件调试方法
CN103235755A (zh) 一种bios远程网络调试方法
CN103746927A (zh) 基于优先级的流控pfc方法及发送设备、接收设备
CN108141471A (zh) 压缩数据的方法、装置和设备
CN109639493A (zh) 网络设备、状态控制装置及tsn配置方法
CN107491399A (zh) 硬件底层快速配置的上位机软件架构设计方法
CN106502773A (zh) 具有同步回调信息功能的数据异步处理方法及模块
CN103823447B (zh) 半导体设备的上下位机的通信方法和通信系统
CN109062753A (zh) 一种硬盘监控系统以及监控方法
CN108521471A (zh) 充电桩网络通信装置、方法和系统
CN101699416B (zh) 主机与多卡座读卡器的通信方法和系统
CN101763324B (zh) 设备模拟的实现方法和装置
CN103164267A (zh) 无锁消息队列实现方法
CN104598354B (zh) 基于软硬架构的高端容错计算机fpga专用调试方法及其装置
CN108604996B (zh) 一种nfv系统中的策略传输方法和装置
CN107942753B (zh) 机器人与终端设备的软件的通讯框架和通讯方法
CN105262604A (zh) 虚拟机迁移方法及设备
CN108121221B (zh) 一种机器人命令接口控制系统及方法
CN104483960A (zh) 一种汽车诊断通信模块数据收发并行处理的方法
CN203754167U (zh) 一种电梯调试维修手持终端
CN108550199A (zh) 设备运行状态数据的采集方法及装置、可读介质
CN109947576A (zh) 一种虚拟机内部代理程序管理的方法
CN102253890A (zh) 一种嵌入式调试方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180212

Address after: Wusong Industrial Park, Wuzhong Development District of Suzhou City, Jiangsu province 215100 Wusong Road No. 818

Patentee after: Tide Financial Information Technology Co Ltd

Address before: 250100 Ji'nan science and Technology Development Zone, Shandong Branch Road No. 2877

Patentee before: Inspur Group Co., Ltd.

TR01 Transfer of patent right