一种基于半双工通信设备的多用户并发通信的方法和装置制造方法及图纸

技术编号:12406776 阅读:95 留言:0更新日期:2015-11-29 03:04
本发明专利技术涉及一种基于半双工通信设备的多用户并发通信的方法和系统,该方法包括:消息服务器和消息客户端;用户进程通过启动消息客户端对半双工设备发出请求消息至消息服务器;消息服务器负责收集不同用户的消息请求,将用户的请求消息挂接在消息链表中,当消息链表中有未处理的消息请求时,消息服务器负责进行半双工设备通信,消息服务器在接收到半双工设备的响应数据后,发送至消息客户端;所述消息服务器中的消息链表与客户端的请求消息一一对应,消息链表中的各消息对应不同用户的客户端请求消息。采用本发明专利技术,可提高多用户对半双工设备的访问效率,并为不同客户访问半双工设备提供优先级机制。

【技术实现步骤摘要】

本专利技术涉及办公自动化领域的计算机应用技术、尤其涉及一种基于半双工通信设备的多用户并发通信的方法。
技术介绍
半双工通信常用于工业总线,这种系统通常具有单一用户,通信速率较低,数据吞吐低的特点,在现在的系统中,由于需求的日益复杂,导致通信的复杂度和吞吐量上升,但通信系统采用的硬件仍然采用原有半双工的通信方式,在本公司研制的机架式收发器的控制系统就采用了这种RS485的半双工通信方式,由于该系统通信控制功能较为复杂,功能模块间进行半双工通信交互较为频繁,并且硬件通信基于半双工的特性,同一时间只可处理一个半双工请求,在多子卡多应用高频率的半双工设备总线访问的使用情况下,会导致半双工设备请求的总线控制紊乱,或者数据延迟,导致收发器子卡板与软件数据不匹配的结果。
技术实现思路
根据现有技术中存在的缺陷,现提供一种基于半双工通信设备的多用户并发通信的方法和系统,以实现多用户对半双工设备的访问,提高半双工设备的使用率。本专利技术实施例提供的多用户访问半双工设备的通信方法,包括以下步骤: 一种消息服务器。适用于系统中多应用进程和多用户并发访问半双工设备,该服务器,是半双工总线的服务提供者,它包括消息收集模块、消息管理模块、半双工设备访问控制模块、消息转发模块、半双工设备通信模块、消息回复模块; 所述消息收集模块,通过进程间通信手段接收客户访问半双工设备的请求数据,用于收集客户的请求数据; 所述消息管理模块,用于在消息收集模块成功接收到客户访问半双工设备请求消息后,根据客户的请求数据等级不同,对等待进入半双工设备通信模块的消息数据,进行排序。当通过消息收集模块接收到请求消息后,该模块负责把请求消息按照消息级别移交到消息链表中; 所述半双工设备访问控制模块,用于从消息链表中选取最高等级的消息,等待发送至半双工设备,并对消息链表中消息个数进行调整; 所述半双工设备通信模块,将消息访问模块取出的最高级别消息数据的第一个请求数据,发送至半双工设备端,并等待接收半双工设备回复的响应数据,其中包括错误处理机制、超时机制; 所述消息回复模块,用于将半双工设备返回的响应数据,返回至该数据的实际发生客户端,当半双工设备在超时时长内未返回有效数据,将以一条超时信息告知该客户。一种消息客户端。该消息客户端是半双工总线数据请求者,它集成于多用户的各种应用程序中,所述消息客户端至少一个包括消息编码模块、消息发送模块、消息接收模块,消息解码模块。所述消息编码模块,在客户需要发起半双工设备通信之前,用于将通信的请求数据,采用半双工设备通信协议进行数据编码处理,编码中包含消息类型,数据类型,数据长度,消息长度、消息地址、消息类型、优先级、校验数据,请求者唯一标识,只有经过正确编码处理的数据才可以进入消息发送模块; 所述消息发送模块,用于客户端模块将成功编码后的有效半双工设备访问数据,发送至消息服务器端; 所述消息接收模块,用于客户进程在成功发送完请求数据后,进入该模块等待接收服务器端回复的响应数据,当消息服务器端处理完该客户的请求数据并发送响应数据后,该模块为客户进程接收响应数据消息,用户根据返回数据类型自行处理得到的数据,当成功接收正确数据后,需经过解码获取最终实际数据; 所述消息解码模块,用于为客户进程获取的接收数据进行解析,当客户进程从消息服务端成功获取到正确数据后,通过本模块解析后得到最终实际数据。本专利技术的有益效果是,提高访问半双工设备的响应速度,而且保证了在高并发多应用发起半双工设备请求时的消息可靠性,有效解决了多用户并发访问半双工设备造成的丢包现象,使一个蜂拥而上的半双工设备资源抢占访问方式,变得有序。【附图说明】图1为本专利技术半双工设备并发服务系统完整流程示意图。图2为本专利技术对于高优先级用户请求的示意图。图3为本专利技术所描述的消息编码格式图。【具体实施方式】下面结合附图对本专利技术一实例作进一步的详细描述: 参照附图1,该图是本专利技术一实例的通信流程图。通信双方采用服务器、客户端形式; 步骤I消息服务器以单实例守护进程的方式启动,作为后台的服务程序; 步骤2初始化用以实现进程通信的消息队列,创建消息链表用于管理请求消息; 步骤3初始化用以控制多线程并发处理逻辑的线程锁。此线程锁用于避免主线程与接收请求消息的子线程同时访问操作消息链表。其中,主线程从消息链表中取请求消息,接收请求消息的子线程在接收到消息客户端的请求消息后,将请求消息加入到消息链表中;步骤4创建接收子线程; 步骤5进入消息收集模块,等待接受客户端的请求消息,在无客户请求时保持静默等待; 步骤6当客户请求到来时,接收消息客户端发来的请求消息,并将请求信息加入到消息链表中,返回到步骤5。其中请求信息加入缓存链的具体位置,根据消息级别以及消息客户端的用户身份而定。请参照附图2,该图是在消息链表中已有客户A、B、N等几个未处理的请求信息的情况下,高优先级用户C的请求信息被置于消息链表的首部,使其优先进行半双工设备的访问; 步骤7主线程轮询检查消息链表的请求数量,当消息链表的请求数量小于I时,表示此时无请求数据,主线程保存静默等待状态;当消息链表的请求数量大于O时,表示有请求信息到来,主线程进入半双工访问模块; 步骤9进入半双工访问控制模块,从消息链表的头部取出最高优先级用户的请求信息,将消息链表个数减I ; 步骤9进入半双工设备通信模块,将半双工设备访问模块取出的请求数据,发送至半双工设备端,并等待接收半双工设备回复的响应数据; 步骤10进入信息回复模块,将半双工设备回复的相应数据,发送至消息客户端的接收模块。并回到步骤7,等待或处理下一个请求信息; 所述消息收集模块,作为消息服务器的分支处理线程,利用进程间通信手段接收客户进程访问半双工设备的请求数据,用于收集客户的请求数据;在没有请求数据时,该模块保持睡眠态,等待客户请求消息; 所述消息管理模块,用于在消息收集模块成功接收到客户访问半双工设备请求消息后,根据客户的请求数据优先级不同,对等待进入半双工设备通信模块的消息数据,进行排序。当通过消息收集模块接收到请求消息后,该模块负责把请求消息按照消息级别移交到消息链表中,请参照附图2,该图示例了在半双工设备忙碌时,并且消息链表中已有请求消息时,一个高优先级别的请求到来时消息管理模块的处理流程; 所述半双工设备访问控制模块,用于从消息链表中选取最高等级的消息,等待发送至半双工设备,并对消息链表中消息个数进行减一操作; 所述半双工设备通信模块,将半双工设备访问模块取当前第1页1 2 本文档来自技高网...

【技术保护点】
一种基于半双工通信设备的多用户并发通信方法,包括:消息服务器和消息客户端;所述消息服务器用于接收消息客户端的请求数据,发送请求数据到半双工通信设备,并接收半双工设备的响应数据,其包括消息收集模块、消息管理模块、半双工设备访问控制模块、半双工设备通信模块、消息回复模块;所述消息客户端用于发送请求数据到消息服务器,并接收消息服务器返回的半双工设备的响应数据,其包括至少一个包括消息编码模块、消息发送模块、消息接收模块,消息解码模块。

【技术特征摘要】

【专利技术属性】
技术研发人员:冯力杨国文
申请(专利权)人:北京卓越信通电子股份有限公司
类型:发明
国别省市:北京;11

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

1