基于LINUX消息队列多应用共享串口的通信方法技术

技术编号:29132707 阅读:19 留言:0更新日期:2021-07-02 22:28
本申请实施例提出了基于LINUX消息队列多应用共享串口的通信方法,应用于基于ARM核心的串口通信板,包括控制需要调用串口操作的应用程序根据预设的配置文件选取串口通信板中的串口号,将选出的串口号作为特征符;调用LINUX系统提供的消息队列API操作函数结合特征符进行数据收发操作。通过软件功能和外设板卡解决了基于ARM芯片LINUX系统的智能终端可用串口比较少的问题;同时通过简单复制就可以提高外接串口数量,满足串口可扩展性。

【技术实现步骤摘要】
基于LINUX消息队列多应用共享串口的通信方法
本专利技术涉及计算机
,尤其涉及一种基于LINUX消息队列多应用共享串口的通信方法。
技术介绍
随着社会经济、智能电网和配电物联网的发展,很多智能采集设备被广泛应用于电力数据信息收集传输各个环节,因为业务拓展和安全可靠性要求,很多智能终端都开始采用基于ARM芯片的嵌入式LINUX系统平台,但目前主流应用的ARM芯片,其直接支持的串口通道比较有限,无法满足智能采集终端大批量串口设备的接入要求。如果利用ARM芯片总线直接来扩展串口数量,第一需要重新设计CPU核心板的电路和开发驱动程序,第二扩展的串口数量有限,随着后续业务的开展可扩展性就显得比较差。
技术实现思路
为了解决现有技术中存在的缺点和不足,本专利技术提出了基于LINUX消息队列多应用共享串口的通信方法,借助软件功能和外设板卡解决了基于ARM芯片LINUX系统的智能终端可用串口比较少的问题。具体的,本申请实施例提出的基于LINUX消息队列多应用共享串口的通信方法,应用于基于ARM核心的串口通信板,所述通信方法包括:控制需要调用串口操作的应用程序根据预设的配置文件选取串口通信板中的串口号,将选出的串口号作为特征符;调用LINUX系统提供的消息队列API操作函数结合特征符进行数据收发操作。可选的,所述基于ARM核心的串口通信板,包括:ARM核心板的一个串口和STM32串口板的一个主串口连接,应用程序通过共享ARM核心板这个串口的数据收发,可以去操作STM32串口板的其它五个RS-485串口。可选的,所述控制需要调用串口操作的应用程序根据预设的配置文件选取串口通信板中的串口号,将选出的串口号作为特征符,包括:控制需要操作串口的应用程序根据配置文件从STM32串口卡扩展出来的串口号选出串口号。可选的,所述调用LINUX系统提供的消息队列API操作函数结合特征符进行数据收发操作,包括:LINUX系统提供的消息队列API操作函数,这些函数都可以通过参数让数据带上特征符进行入队和出队操作,应用程序可以根据特征符方便的接收只属于自己的数据。可选的,所述通信方法还包括:在ARM核心板上运行的LINUX系统中包括串口通信程序,在串口通信程序启动后建立数据收发消息队列;应用程序发送给串口的数据会进入发送消息队列。可选的,所述通信方法还包括:控制串口通信程序从消息队列里读取数据后,通过自身串口发送给STM32串口板的主串口:对主串口进行监听,判断是否有STM32串口板通信小程序的数据回复。可选的,所述通信方法还包括:如果有回复数据,就解析出完整帧,并根据串口特征符入队接收消息队列,应用程序可以通过这个接收消息队列接收属于自己的数据。可选的,所述通信方法还包括:如果没有接收到回复数据就继续监听发送消息队列是否还有应用程序的数据需要发送,形成一个数据发送接收的程序循环。可选的,所述通信方法还包括:STM32里的通信小程序会监听主串口是否有ARM核心板发来的数据。可选的,所述数据是设置STM32串口板里5个分串口的参数命令,或是需要5个分串口转发的实际数据。本专利技术提供的技术方案带来的有益效果是:通过软件功能和外设板卡解决了基于ARM芯片LINUX系统的智能终端可用串口比较少的问题;同时通过简单复制就可以提高外接串口数量,满足串口可扩展性。附图说明为了更清楚地说明本专利技术的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提出的基于LINUX消息队列多应用共享串口的通信方法的流程示意图;图2为本申请实施例提出的硬件原理示意图;图3为本申请实施例提出的软件架构示意图;图4为本申请实施例提出的软件通信流程示意图。具体实施方式为使本专利技术的结构和优点更加清楚,下面将结合附图对本专利技术的结构作进一步地描述。实施例一具体的,如图1所示,本申请实施例提出的基于LINUX消息队列多应用共享串口的通信方法,应用于基于ARM核心的串口通信板,所述通信方法包括:11、控制需要调用串口操作的应用程序根据预设的配置文件选取串口通信板中的串口号,将选出的串口号作为特征符;12、调用LINUX系统提供的消息队列API操作函数结合特征符进行数据收发操作。在实施中,在LINUX系统下开发一个串口通信程序来统一管理ARM核心板自带几个串口的数据收发,同时开发一个封装了串口操作的静态库程序提供给其它应用程序调用,这个静态库利用LINUX系统的消息队列来实现串口通信程序和其它应用程序之间的数据交互。再利用STM32芯片开发一个外围板卡,板卡可以自带6个串口,其中一个主串口与ARM核心板的一个串口连接,在这个板卡上开发一个通信小程序负责主串口与ARM核心板的数据通信,并把接收到的数据往其它5个串口调度和分发,同时5个串口接收的数据也可以统一转发给ARM核心板,那么这5个串口就可以提供给各类串行通信设备的接入。通过以上步骤,ARM核心板LINUX系统下运行的各类应用程序,就可以通过消息队列来共享ARM核心板上的串口通信,从而达到利用STM32上的扩展串口接入设备。如图2所示:ARM核心板的一个串口和STM32串口板的一个主串口连接,应用程序通过共享ARM核心板这个串口的数据收发,可以去操作STM32串口板的其它五个RS-485串口。这里最主要是需要通过软件的功能来实现串口数据的调度和分发。如图3所示:各个应用程序需要操作串口,可以根据配置文件选定某个STM32串口卡扩展出来的串口号,然后调用串口封装静态库的串口操作函数,这个静态库里的函数会负责注册消息队列,并可以根据串口号为特征符向消息队列发送和接收数据,LINUX系统提供的消息队列API操作函数,这些函数都可以通过参数让数据带上特征符进行入队和出队操作,应用程序可以根据特征符方便的接收只属于自己的数据。如图4所示:运行在ARM核心板LINUX系统下的串口通信程序,启动后会负责建立数据收发消息队列,应用程序发送给串口的数据会进入发送消息队列,这些数据可以是设置STM32串口板里5个分串口的参数命令,也可以是需要5个分串口转发的实际数据。串口通信程序从消息队列里读取数据后,会通过自身串口发送给STM32串口板的主串口,然后监听这个串口,判断是否有STM32串口板通信小程序的数据回复,如果有回复数据,就解析出完整帧,并根据串口特征符入队接收消息队列,应用程序可以通过这个接收消息队列接收属于自己的数据;如果没有接收到回复数据就继续监听发送消息队列是否还有应用程序的数据需要发送,以此形成一个数据发送接收的程序循环。同样,STM32里的通信小程序会监听主串口是否本文档来自技高网...

【技术保护点】
1.基于LINUX消息队列多应用共享串口的通信方法,应用于基于ARM核心的串口通信板,其特征在于,所述通信方法包括:/n控制需要调用串口操作的应用程序根据预设的配置文件选取串口通信板中的串口号,将选出的串口号作为特征符;/n调用LINUX系统提供的消息队列API操作函数结合特征符进行数据收发操作。/n

【技术特征摘要】
1.基于LINUX消息队列多应用共享串口的通信方法,应用于基于ARM核心的串口通信板,其特征在于,所述通信方法包括:
控制需要调用串口操作的应用程序根据预设的配置文件选取串口通信板中的串口号,将选出的串口号作为特征符;
调用LINUX系统提供的消息队列API操作函数结合特征符进行数据收发操作。


2.根据权利要求1所述的基于LINUX消息队列多应用共享串口的通信方法,其特征在于,所述基于ARM核心的串口通信板,包括:
ARM核心板的一个串口和STM32串口板的一个主串口连接,应用程序通过共享ARM核心板这个串口的数据收发,可以去操作STM32串口板的其它五个RS-485串口。


3.根据权利要求2所述的基于LINUX消息队列多应用共享串口的通信方法,其特征在于,所述控制需要调用串口操作的应用程序根据预设的配置文件选取串口通信板中的串口号,将选出的串口号作为特征符,包括:
控制需要操作串口的应用程序根据配置文件从STM32串口卡扩展出来的串口号选出串口号。


4.根据权利要求2所述的基于LINUX消息队列多应用共享串口的通信方法,其特征在于,所述调用LINUX系统提供的消息队列API操作函数结合特征符进行数据收发操作,包括:
LINUX系统提供的消息队列API操作函数,这些函数都可以通过参数让数据带上特征符进行入队和出队操作,应用程序可以根据特征符方便的接收只属于自己的数据。


5.根据权利要求1所述的基于LINUX消息队列多应用共享串口的通信方法,其...

【专利技术属性】
技术研发人员:蒋世挺陈思有朱瑞张国成魏明林胡建
申请(专利权)人:浙江华云信息科技有限公司
类型:发明
国别省市:浙江;33

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

1