多串口通信方法及装置制造方法及图纸

技术编号:16345951 阅读:33 留言:0更新日期:2017-10-03 22:20
本发明专利技术提供一种多串口通信方法及装置,应用于包括多个串口的主控设备,所述方法包括:进入通信线程,初始化各串口的工作状态变量及时间记录;调用串口扫描函数,根据查找出的未实现通信收发的串口的当前通信指令及数据收发状态信息修改该串口的工作状态变量,使用查询方式实现该串口的通信收发;在完成所有串口通信后发出通信已完成事件。该多串口通信方案,通过函数调用及循环查询方式实现串口的通信收发,减少了系统资源占用及CPU运行时间。并且,在完成扫描实现串口通信收发后即发出通信已完成事件,有利于其它线程统一处理通信数据,该方案能够在单线程中实现多串口的通信收发,减少了CPU消耗并提高了系统性能。

【技术实现步骤摘要】
多串口通信方法及装置
本专利技术涉及串口通信
,具体而言,涉及一种多串口通信方法及装置。
技术介绍
串口通信是单片机、数字信号处理器等嵌入式系统之间,以及嵌入式系统与个人电脑或无线模块之间一种普遍使用的点到点的通信方法。工控机、嵌入式电脑和PAC通常连接多个RS232、RS485/422、CAN等串口通信设备,现有技术采用一个或两个线程(或进程)管理一个串口,多个串口需要由多个线程(或进程)进行管理。每个线程(或进程)都需要占用一些操作系统的资源,在不同线程(或进程)之间进行切换也要消耗CPU的运行时间。在多个线程(或进程)中接收到的数据不能保持原来的顺序,对控制系统的性能会有不良影响。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种多串口通信方法及装置,以解决上述问题。本专利技术较佳实施例提供一种多串口通信方法,应用于能够与多个从设备通信连接的主控设备,所述主控设备包括多个串口,所述主控设备通过各所述串口分别与各所述从设备通信连接,所述方法包括:进入通信线程,初始化各所述串口的工作状态变量及各所述串口的时间记录;检测各所述串口的通信状态,查找出未实现通信收发的串口;调用串口扫描函数,根据未实现通信收发的串口的当前通信指令及数据收发状态信息修改该串口的工作状态变量,使用查询方式实现该串口的通信收发;调用指定函数交出该通信线程的当前时间片;检测是否完成所有串口通信,若是,则发出通信已完成事件。进一步地,所述发出通信已完成事件的步骤之后,所述方法还包括:判断是否到达预先分配给所述通信线程的指定运行时间,若未到达,则调用指定函数交出该通信线程的剩余时间片,以将该剩余时间片进行再分配。进一步地,所述调用串口扫描函数,根据未实现通信收发的串口的当前通信指令及数据收发状态信息修改该串口的工作状态变量,使用查询方式实现该串口的通信收发的步骤,包括:检测系统总线是否处于空闲状态,若处于空闲状态,则初始化发送参数,将系统总线设置为发送状态,发送通信指令;判断通信指令是否发送完成,若发送完成,则初始化接收参数,将系统总线设置为等待接收状态;判断是否接收到数据,若接收到数据,则将系统总线设置为接收状态;判断是否接收完一帧数据,若接收完一帧数据,则对接收到的数据进行处理,并将系统总线设置为空闲状态。进一步地,所述判断通信指令是否发送完成的步骤之后,所述方法还包括:判断通信指令发送是否超过预设时长,若超过预设时长,则为系统总线设置超时故障标志。进一步地,所述判断是否接收到数据的步骤之后,所述方法还包括:判断等待接收状态是否超过预设时长,若超过预设时长,则为系统总线设置超时故障标志。进一步地,所述检测是否完成所有串口通信,若是,则发出通信已完成事件的步骤,包括:检测所有串口是否已实现通信指令发送及数据接收和处理过程,若已完成,则清除通信指令计数器,并为系统总线设置通信完成标志。本专利技术另一较佳实施例提供一种多串口通信装置,应用于能够与多个从设备通信连接的主控设备,所述主控设备包括多个串口,所述主控设备通过各所述串口分别与各所述从设备通信连接,所述多串口通信装置包括:初始化模块,用于进入通信线程,初始化各所述串口的工作状态变量及各所述串口的时间记录;查找模块,用于检测各所述串口的通信状态,查找出未实现通信收发的串口;修改模块,用于调用串口扫描函数,根据未实现通信收发的串口的当前通信指令及数据收发状态信息修改该串口的工作状态变量,使用查询方式实现该串口的通信收发;第一调用模块,用于调用指定函数交出该通信线程的当前时间片;检测模块,用于检测是否完成所有串口通信,若是,则发出通信已完成事件。进一步地,所述多串口通信装置还包括判断模块及第二调用模块;所述判断模块用于判断是否到达预先分配给所述通信线程的指定运行时间;所述第二调用模块用于在所述判断模块判断结果为否时,调用指定函数交出该通信线程的剩余时间片,以将该剩余时间片进行再分配。进一步地,所述修改模块包括检测单元、发送参数初始化单元、第一判断单元、接收参数初始化单元、第二判断单元、设置单元、第三判断单元以及处理单元;所述检测单元用于检测系统总线是否处于空闲状态;所述发送参数初始化单元用于在系统总线处于空闲状态时,初始化发送参数,将系统总线设置为发送状态,发送通信指令;所述第一判断单元用于判断通信指令是否发送完成;所述接收参数初始化单元用于在通信指令发送完成时,初始化接收参数,将系统总线设置为等待接收状态;所述第二判断单元用于判断是否接收到数据;所述设置单元用于在接收到数据时,将系统总线设置为接收状态;所述第三判断单元用于判断是否接收完一帧数据;所述处理单元用于在接收完一帧数据时,对接收到的数据进行处理,并将系统总线设置为空闲状态。进一步地,所述修改模块还包括第四判断单元及故障标志设置单元;所述第四判断单元用于判断通信指令发送是否超过预设时长;所述故障标志设置单元用于在超过预设时长时,为系统总线设置超时故障标志。本专利技术实施例提供的多串口通信方法及装置,通过函数调用及循环查询方式来实现多串口的通信收发,减少了系统资源的占用并减少了CPU的运行时间。并且,在完成扫描实现串口通信收发后即发出通信已完成事件,有利于其它线程统一处理通信数据。本专利技术提供的多串口通信方案,能够在单线程中实现多串口的通信收发,减少了CPU消耗并提高了系统性能。为使本专利技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本专利技术较佳实施例提供的一种多串口通信方法的应用场景示意图。图2为本专利技术较佳实施例提供的主控设备的示意性结构框图。图3为本专利技术较佳实施例提供的多串口通信方法的流程图。图4为图3中步骤S105的子步骤的流程图。图5为本专利技术较佳实施例提供的多串口通信装置的功能模块框图。图6为本专利技术较佳实施例提供的修改模块的功能模块框图。图7为本专利技术较佳实施例提供的修改模块的另一功能模块框图。图标:100-主控设备;110-多串口通信装置;111-初始化模块;112-查找模块;113-修改模块;1131-检测单元;1132-发送参数初始化单元;1133-第一判断单元;1134-接收参数初始化单元;1135-第二判断单元;1136-设置单元;1137-第三判断单元;1138-处理单元;1139-第四判断单元;11310-故障标志设置单元;114-第一调用模块;115-检测模块;116-判断模块;117-第二调用模块;120-处理器;130-存储器;200-从设备。具体实施方式下面将结合本专利技术实施例中附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本专利技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本专利技术的实施例的详细描述并非旨在限制要求保护的本专利技术的范围,而是仅仅表示本专利技术的选定实施例。基于本专利技术的本文档来自技高网...
多串口通信方法及装置

【技术保护点】
一种多串口通信方法,其特征在于,应用于能够与多个从设备通信连接的主控设备,所述主控设备包括多个串口,所述主控设备通过各所述串口分别与各所述从设备通信连接,所述方法包括:进入通信线程,初始化各所述串口的工作状态变量及各所述串口的时间记录;检测各所述串口的通信状态,查找出未实现通信收发的串口;调用串口扫描函数,根据未实现通信收发的串口的当前通信指令及数据收发状态信息修改该串口的工作状态变量,使用查询方式实现该串口的通信收发;调用指定函数交出该通信线程的当前时间片;检测是否完成所有串口通信,若是,则发出通信已完成事件。

【技术特征摘要】
1.一种多串口通信方法,其特征在于,应用于能够与多个从设备通信连接的主控设备,所述主控设备包括多个串口,所述主控设备通过各所述串口分别与各所述从设备通信连接,所述方法包括:进入通信线程,初始化各所述串口的工作状态变量及各所述串口的时间记录;检测各所述串口的通信状态,查找出未实现通信收发的串口;调用串口扫描函数,根据未实现通信收发的串口的当前通信指令及数据收发状态信息修改该串口的工作状态变量,使用查询方式实现该串口的通信收发;调用指定函数交出该通信线程的当前时间片;检测是否完成所有串口通信,若是,则发出通信已完成事件。2.根据权利要求1所述的多串口通信方法,其特征在于,所述发出通信已完成事件的步骤之后,所述方法还包括:判断是否到达预先分配给所述通信线程的指定运行时间,若未到达,则调用指定函数交出该通信线程的剩余时间片,以将该剩余时间片进行再分配。3.根据权利要求1所述的多串口通信方法,其特征在于,所述调用串口扫描函数,根据未实现通信收发的串口的当前通信指令及数据收发状态信息修改该串口的工作状态变量,使用查询方式实现该串口的通信收发的步骤,包括:检测系统总线是否处于空闲状态,若处于空闲状态,则初始化发送参数,将系统总线设置为发送状态,发送通信指令;判断通信指令是否发送完成,若发送完成,则初始化接收参数,将系统总线设置为等待接收状态;判断是否接收到数据,若接收到数据,则将系统总线设置为接收状态;判断是否接收完一帧数据,若接收完一帧数据,则对接收到的数据进行处理,并将系统总线设置为空闲状态。4.根据权利要求3所述的多串口通信方法,其特征在于,所述判断通信指令是否发送完成的步骤之后,所述方法还包括:判断通信指令发送是否超过预设时长,若超过预设时长,则为系统总线设置超时故障标志。5.根据权利要求3所述的多串口通信方法,其特征在于,所述判断是否接收到数据的步骤之后,所述方法还包括:判断等待接收状态是否超过预设时长,若超过预设时长,则为系统总线设置超时故障标志。6.根据权利要求1所述的多串口通信方法,其特征在于,所述检测是否完成所有串口通信,若是,则发出通信已完成事件的步骤,包括:检测所有串口是否已实现通信指令发送及数据接收和处理过程,若已完成,则清除通...

【专利技术属性】
技术研发人员:邓海军
申请(专利权)人:湖南省力宇燃气动力有限公司
类型:发明
国别省市:湖南,43

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

1