CN108235802A - 通信控制方法与控制装置 - Google Patents
通信控制方法与控制装置 Download PDFInfo
- Publication number
- CN108235802A CN108235802A CN201780002445.5A CN201780002445A CN108235802A CN 108235802 A CN108235802 A CN 108235802A CN 201780002445 A CN201780002445 A CN 201780002445A CN 108235802 A CN108235802 A CN 108235802A
- Authority
- CN
- China
- Prior art keywords
- serial
- serial ports
- data
- slave
- virtual
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种通信控制方法与控制装置,属于通信领域。所述方法包括:创建与每一所述从机的每一所述串口一一对应的虚拟串口节点;在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口;依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区,以使得所述主机能从每一虚拟串口节点的缓冲区读取到对应的所述串口的数据。本发明的技术方案改善了主机与从机的串口之间的通信机制,有效提升了主机与从机的串口的通信效率与准确性。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种通信控制方法与控制装置。
背景技术
在实际应用中,一个作为数据管理的主机通过RS485与数个从机通信连接。每一从机设有数个串口以与前端采集终端连接,以实现主机与前端采集终端之间的通信。
然而,随着数据需求量的不断增加,所需要的从机数量也会逐渐增多,这就导致主机与从机的串口通信控制管理越来越复杂,而且主机和前端采集终端通信(也即,主机与从机的串口的通信)的实时性也会大大降低,严重影响了主机与从机的串口的通信效率。
发明内容
有鉴于此,本发明的目的在于提供一种通信控制方法与控制装置,旨在有效提高主机与从机的串口的通信效率。
为实现上述目的,本发明提供一种通信控制方法,用于实现主机与每一从机的每一串口的通信,所述通信控制方法包括如下步骤:
创建与每一所述从机的每一所述串口一一对应的虚拟串口节点;
在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口;
依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区,以使得所述主机能从每一虚拟串口节点的缓冲区读取到对应的所述串口的数据。
可选的,所述创建与每一所述从机的每一所述串口一一对应的虚拟串口节点的步骤包括:
获取所述从机的地址编码与所述从机的每一所述串口的地址编码;
对应每一所述串口创建一虚拟串口节点;
对所述虚拟串口节点与对应的所述串口做寻址映射。
可选的,所述对所述虚拟串口节点与对应的所述串口做寻址映射的步骤包括:
将所述虚拟串口节点的句柄、对应的所述从机的地址编码、对应的所述串口的地址编码,以及所述虚拟串口节点的编码进行映射。
可选的,所述在接收到所述主机向所述虚拟串口节点发送数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口的步骤包括:
在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,判断所述数据写入请求的类型;所述数据写入请求包括串口参数设置请求与串口数据写入请求;
当所述数据写入请求为串口参数设置请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口设置参数写入对应的所述串口;
当所述数据写入请求为串口数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口数据写入对应的所述串口。
可选的,所述依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区的步骤包括:
向一所述从机发送串口数据读取请求;
当所述从机在预设的响应时间内响应所述串口数据读取请求时,将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区;
当所述从机在预设的响应时间内未响应所述串口数据读取请求时,向下一所述从机发送串口数据读取请求。
为了实现上述目的,本发明还提出一种通信控制装置,用于实现主机与每一从机的每一串口的通信,所述通信控制装置包括创建模块、数据写入模块与数据读取模块;
所述创建模块,用于创建与每一所述从机的每一所述串口一一对应的虚拟串口节点;
所述数据写入模块,用于在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口;
所述数据读取模块,用于依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区,以使得所述主机能从每一虚拟串口节点的缓冲区读取到对应的所述串口的数据。
可选的,所述创建模块包括获取单元、创建单元与映射单元;
所述获取单元,用于获取所述从机的地址编码与所述从机的每一所述串口的地址编码;
所述创建单元,用于对应每一所述串口创建一虚拟串口节点;
所述映射单元,用于对所述虚拟串口节点与对应的所述串口做寻址映射。
可选的,所述映射单元,具体用于将所述虚拟串口节点的句柄、对应的所述从机的地址编码、对应的所述串口的地址编码,以及所述虚拟串口节点的编码进行映射。
可选的,所述数据写入模块包括判断单元、串口参数设置单元与串口数据写入单元;
所述判断单元,用于在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,判断所述数据写入请求的类型;所述数据写入请求包括串口参数设置请求与串口数据写入请求;
所述串口参数设置单元,用于在所述数据写入请求为串口参数设置请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口设置参数写入对应的所述串口;
所述串口数据写入单元,用于在所述数据写入请求为串口数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口数据写入对应的所述串口。
可选的,所述数据读取模块包括发送单元与控制单元;
所述发送单元,用于向所述从机发送串口数据读取请求;
所述控制单元,用于在所述从机在预设的响应时间内响应所述串口数据读取请求时,将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区;
所述控制单元,还用于在所述从机在预设的响应时间内未响应所述串口数据读取请求时,控制所述发送单元向下一所述从机发送串口数据读取请求。
本发明的技术方案,通过创建与每一从机的每一所述串口一一对应的虚拟串口节点,可以通过虚拟串口节点获取对应的串口的地址编码,以实现向串口的数据写入;还可以通过从虚拟串口节点的缓存区直接获取对应的串口的数据,以实现对串口的数据读取;本发明的技术方案改善了主机与从机的串口之间的通信机制,有效提升了主机与从机的串口的通信效率与准确性。
附图说明
图1为本发明通信控制方法一实施例的流程图;
图2为图1中创建与每一所述从机的每一所述串口一一对应的虚拟串口节点的步骤一实施例的流程图;
图3为图1中在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口的步骤一实施例的流程图;
图4为图1中依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区的步骤一实施例的流程图;
图5为本发明通信控制装置一实施例的模块示意图;
图6为图5中创建模块一实施例的模块示意图;
图7为图5中数据写入模块一实施例的模块示意图;
图8为图5中数据读取模块一实施例的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及工业实用性更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明第一实施例提出的一种通信控制方法,包括以下步骤:
步骤S100、创建与每一所述从机的每一所述串口一一对应的虚拟串口节点;
步骤S200、在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口;
步骤S300、依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区,以使得所述主机能从每一虚拟串口节点的缓冲区读取到对应的所述串口的数据。
其中,步骤S200与S300不分先后,可以互换。
在本实施例中,根据定制的扫描协议,主机依次向每个从机发送串口信息扫描请求。然后根据所述从机返回的串口信息在通信控制装置建立对应的虚拟串口节点(本发明中使用的虚拟终端克隆设备是/dev/ptmx),可以指定虚拟串口节点所在的文件目录和名称(如,/dev/vtserial1),并在对虚拟串口节点进行编号,与实际的从机串口使用struct结构体绑定在一起,做到一对一的映射。使用linux系统的i/o异步读写机制(本发明使用的是select方法),把每个创建的虚拟串口节点的句柄加入到读写监听队列,等待事件触发虚拟串口节点的读写。
具体的,所述主机与所述从机通过RS485通信连接;从机与前端数据采集终端端采集单元。当所述主机启动时,设置在所述主机侧的通信控制装置按照所述从机的地址编码依次向连接的所有从机发送扫描请求。所述从机接收到所述扫描请求后,将所述从机的各串口信息响应给所述通信控制装置。所述通信控制装置根据各所述串口信息,在本地创建与每一所述串口一一对应的虚拟串口节点,并对所述虚拟串口节点和对应的串口做寻址映射处理。当所述主机需要对所述串口进行数据写入时,所述主机发送数据写入请求。所述通信控制装置根据所述数据写入请求,在对应的所述虚拟串口节点与所述串口的映射关系中查找到对应的串口的地址编码。然后通过RS485将所述数据写入请求中包含的写入数据写入所述串口。当所述主机需要读取所述串口的数据时,由于所述通信控制装置实时从所述串口中读取所述串口的数据并将读取到的所述数据存储至对应的虚拟串口节点的缓冲区内,因此所述主机可以直接从所述虚拟串口的缓冲区中读取到对应的所述串口的数据。
本实施例的技术方案,通过创建与每一从机的每一所述串口一一对应的虚拟串口节点,可以通过虚拟串口节点获取对应的串口的地址编码,以实现向串口的数据写入;还可以通过从虚拟串口节点的缓存区直接获取对应的串口的数据,以实现对串口的数据读取;本实施例的技术方案改善了主机与从机的串口之间的通信机制,有效提升了主机与从机的串口的通信效率与准确性。
进一步的,如图2所示,所述创建与每一所述从机的每一所述串口一一对应的虚拟串口节点的步骤包括:
步骤S110、获取所述从机的地址编码与所述从机的每一所述串口的地址编码。
步骤S120、对应每一所述串口创建一虚拟串口节点;
步骤S130、对所述虚拟串口节点与对应的所述串口做寻址映射;具体为将所述虚拟串口节点的句柄、对应的所述从机的地址编码、对应的所述串口的地址编码,以及所述虚拟串口节点的编码进行映射。
在本实施例中,在创建虚拟串口节点之前,需要依次对每一从机的地址进行编码;再对每一所述从机的每一串口的地址进行编码。比如,有N个从机,每个从机有M个串口,那么,将所述从机的地址编码依次设置为0、1、2、……、N;将地址编码为0的从机的串口的地址编码设置为1、2、3、……、M;地址编码为1的从机的串口的地址编码为M+1、M+2、M+3、……、M+M;地址编码为2的从机的串口的地址编码为2M+1、2M+2、2M+3、……、2M+M;……;地址编码为N从机的串口的地址编码为N*M+1、N*M+2、N*M+3、……、N*M+M。然后,对应N*M+M个串口,创建N*M+M个虚拟串口节点。对所述虚拟串口节点与对应的所述串口做寻址映射时,可以把所述虚拟串口节点的名称(命名方式为vtserial+编码,如vtserial1)、打开所述虚拟串口节点时产生的文件描述符、对应的所述从机的地址编码,以及对应所述从机的所述串口的编码使用C语言struct结构体的形式绑定到一起,形成一个虚拟串口节点信息的内部映射,然后,把所有串口的结构体信息存储到一个list链表中。当所述主机的应用程序在通过所述寻串口节点的名称操作对应的所述串口时,通信控制装置就可以根据打开所述虚拟串口节点的文件描述符从list链表中找到该所述虚拟串口节点的结构体信息,解析出所述虚拟串口节点对应的从机的地址编码和对应从机的串口的地址编码,做出正确的串口寻址,有效提升了通信效率。
值得一提的是,当对所述从机的扫描在一定的时间内没有响应时,将该从机加入扫描失败队列,并在后续对扫描失败队列中从机按照预设的时间间隔轮训扫描。在映射关系建立完成后,把句柄加入select I/O监听列表,开始监听虚拟串口节点的读写操作。
进一步的,如图3所示,所述在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口的步骤包括:
步骤S210、接收所述主机向所述虚拟串口节点发送的数据写入请求。
步骤S220、判断所述数据写入请求是否为串口参数设置请求;如果是,则执行步骤230;如果否,则执行步骤S240。
步骤230、从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口设置参数写入对应的所述串口。
步骤240、从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口数据写入对应的所述串口。
在本实施例中,所述主机的应用程序通过系统标准I/O的open函数打开虚拟串口节点(比如:open(vtserial1,O_RDWR))后,通过Linux系统标准的write函数访问虚拟串口节点,并通过虚拟驱动层将数据写入请求发送给通信控制装置,通信控制装置根据下表1与下表2定义的数据帧格式,解析出数据写入请求的类型。当所述数据写入请求为串口参数设置请求时,从虚拟串口节点的虚拟串口节点list表中查询到虚拟串口节点对应的从机串口,把解析后的串口通信参数按照内部定义的主从式通信协议发给相应的从机上,以便从机对相应的串口进行设置。当所述数据写入请求为串口数据写入请求时,从虚拟串口节点list表中寻址到虚拟串口节点对应的从机串口,把解析出来的串口数据按照内部定义的主从式通信协议发送到从机上的对应的串口,以便对串口进行数据写入。
表1
表2
内容 | 描述 | 大小 |
数据长度 | 后面所有数据的长度 | 2字节 |
‘W’ | 从机管理模块识别为串口数据下行 | 1个字符 |
串口数据内容 | 字符串,包含结束符 |
进一步的,如图4所示,所述依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区的步骤包括:
步骤S310、向一所述从机发送串口数据读取请求;
步骤S320、判断从机是否在预设的响应时间内响应该读取请求;如果是,则执行步骤S330,如果否,则执行步骤S340。
步骤S330、将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区;
步骤S340、向下一所述从机发送串口数据读取请求。
在本实施例中,由于主机和各个从机之间是通过RS485实现通信连接,由于RS485的电气特性,防止通信出现冲突冒险,各个从机不能主动上报信息给主机的应用程序,只能等待主机读取,主机通过轮训的方式对所有的从机依次下发读取串口数据的请求。为了提高轮训效率,这里对轮训间隔的优化原则是:当向从机发送读取从机上所有串口数据的请求后,如果所述从机在预设的响应时间内响应了该请求,则将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区;如果所述从机在预设的响应时间内未响应该请求,则直接向下一所述从机发送串口数据读取请求。
值得一提的是,在从机响应了串口数据读取请求后,还可以对获取到的串口数据的完整性进行验证。在完整性验证通过时,将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区。在完整性验证不通过时,将获取到的串口数据丢弃,然后向下一所述从机发送串口数据读取请求。
如图5所示,本发明第一实施例提出的一种通信控制装置,用于实现主机与每一从机的每一串口的通信,在本实施例中,所述通信控制装置包括创建模块410、数据写入模块420与数据读取模块430;所述创建模块410,用于创建与每一所述从机的每一所述串口一一对应的虚拟串口节点;所述数据写入模块420,用于在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口;所述数据读取模块430,用于依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区,以使得所述主机能从每一虚拟串口节点的缓冲区读取到对应的所述串口的数据。
在本实施例中,根据定制的扫描协议,主机依次向每个从机发送串口信息扫描请求。然后根据所述从机返回的串口信息在通信控制装置建立对应的虚拟串口节点(本发明中使用的虚拟终端克隆设备是/dev/ptmx),可以指定虚拟串口节点所在的文件目录和名称(如,/dev/vtserial1),并在对虚拟串口节点进行编号,与实际的从机串口使用struct结构体绑定在一起,做到一对一的映射。使用linux系统的i/o异步读写机制(本发明使用的是select方法),把每个创建的虚拟串口节点的句柄加入到读写监听队列,等待事件触发虚拟串口节点的读写。
具体的,所述主机与所述从机通过RS485通信连接。当所述主机启动时,设置在所述主机侧的通信控制装置按照所述从机的地址编码依次向连接的所有从机发送扫描请求。所述从机接收到所述扫描请求后,将所述从机的各串口信息响应给所述通信控制装置。所述通信控制装置根据各所述串口信息,在本地创建与每一所述串口一一对应的虚拟串口节点,并对所述虚拟串口节点和对应的串口做寻址映射处理。当所述主机需要对所述串口进行数据写入时,所述主机发送数据写入请求。所述通信控制装置根据所述数据写入请求,在对应的所述虚拟串口节点与所述串口的映射关系中查找到对应的串口的地址编码。然后通过RS485将所述数据写入请求中包含的写入数据写入所述串口。当所述主机需要读取所述串口的数据时,由于所述通信控制装置实时从所述串口中读取所述串口的数据并将读取到的所述数据存储至对应的虚拟串口节点的缓冲区内,因此所述主机可以直接从所述虚拟串口的缓冲区中读取到对应的所述串口的数据。
本实施例的技术方案,通过创建与每一从机的每一所述串口一一对应的虚拟串口节点,可以通过虚拟串口节点获取对应的串口的地址编码,以实现向串口的数据写入;还可以通过从虚拟串口节点的缓存区直接获取对应的串口的数据,以实现对串口的数据读取;本实施例的技术方案改善了主机与从机的串口之间的通信机制,有效提升了主机与从机的串口的通信效率与准确性。
进一步的,如图6所示,所述创建模块410包括获取单元412、创建单元414与映射单元416;所述获取单元412,用于获取所述从机的地址编码与所述从机的每一所述串口的地址编码;所述创建单元414,用于对应每一所述串口创建一虚拟串口节点;所述映射单元416,用于对所述虚拟串口节点与对应的所述串口做寻址映射。所述映射单元416,具体用于将所述虚拟串口节点的句柄、对应的所述从机的地址编码、对应的所述串口的地址编码,以及所述虚拟串口节点的编码进行映射。
在本实施例中,在创建虚拟串口节点之前,需要依次对每一从机的地址进行编码;再对每一所述从机的每一串口的地址进行编码。比如,有N个从机,每个从机有M个串口,那么,将所述从机的地址编码依次设置为0、1、2、……、N;将地址编码为0的从机的串口的地址编码设置为1、2、3、……、M;地址编码为1的从机的串口的地址编码为M+1、M+2、M+3、……、M+M;地址编码为2的从机的串口的地址编码为2M+1、2M+2、2M+3、……、2M+M;……;地址编码为N从机的串口的地址编码为N*M+1、N*M+2、N*M+3、……、N*M+M。然后,对应N*M+M个串口,创建N*M+M个虚拟串口节点。对所述虚拟串口节点与对应的所述串口做寻址映射时,可以把所述虚拟串口节点的名称(命名方式为vtserial+编码,如vtserial1)、打开所述虚拟串口节点时产生的文件描述符、对应的所述从机的地址编码,以及对应所述从机的所述串口的编码使用C语言struct结构体的形式绑定到一起,形成一个虚拟串口节点信息的内部映射,然后,把所有串口的结构体信息存储到一个list链表中。当所述主机的应用程序在通过所述寻串口节点的名称操作对应的所述串口时,通信控制装置就可以根据打开所述虚拟串口节点的文件描述符从list链表中找到该所述虚拟串口节点的结构体信息,解析出所述虚拟串口节点对应的从机的地址编码和对应从机的串口的地址编码,做出正确的串口寻址,有效提升了通信效率。
值得一提的是,当对所述从机的扫描在一定的时间内没有响应时,将该从机加入扫描失败队列,并在后续对扫描失败队列中从机按照预设的时间间隔轮训扫描。在映射关系建立完成后,把句柄加入select I/O监听列表,开始监听虚拟串口节点的读写操作。
进一步的,如图7所示,所述数据写入模块420包括判断单元422、串口参数设置单元424与串口数据写入单元426;所述判断单元422,用于在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,判断所述数据写入请求的类型;所述数据写入请求包括串口参数设置请求与串口数据写入请求;所述串口参数设置单元424,用于在所述数据写入请求为串口参数设置请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口设置参数写入对应的所述串口;所述串口数据写入单元426,用于在所述数据写入请求为串口数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口数据写入对应的所述串口。
在本实施例中,所述主机的应用程序通过系统标准I/O的open函数打开虚拟串口节点(比如:open(vtserial1,O_RDWR))后,通过Linux系统标准的write函数访问虚拟串口节点,并通过虚拟驱动层将数据写入请求发送给通信控制装置,通信控制装置根据下表1与下表2定义的数据帧格式,解析出数据写入请求的类型。当所述数据写入请求为串口参数设置请求时,从虚拟串口节点的虚拟串口节点list表中查询到虚拟串口节点对应的从机串口,把解析后的串口通信参数按照内部定义的主从式通信协议发给相应的从机上,以便从机对相应的串口进行设置。当所述数据写入请求为串口数据写入请求时,从虚拟串口节点list表中寻址到虚拟串口节点对应的从机串口,把解析出来的串口数据按照内部定义的主从式通信协议发送到从机上的对应的串口,以便对串口进行数据写入。
表1
表2
内容 | 描述 | 大小 |
数据长度 | 后面所有数据的长度 | 2字节 |
‘W’ | 从机管理模块识别为串口数据下行 | 1个字符 |
串口数据内容 | 字符串,包含结束符 |
进一步的,如图8所示,所述数据读取模块430包括发送单元432与控制单元434;所述发送单元432,用于向所述从机发送串口数据读取请求;所述控制单元434,用于在所述从机在预设的响应时间内响应所述串口数据读取请求时,将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区;所述控制单元434,还用于在所述从机在预设的响应时间内未响应所述串口数据读取请求时,控制所述发送单元432向下一所述从机发送串口数据读取请求。
在本实施例中,由于主机和各个从机之间是通过RS485实现通信连接,由于RS485的电气特性,防止通信出现冲突冒险,各个从机不能主动上报信息给主机的应用程序,只能等待主机读取,主机通过轮训的方式对所有的从机依次下发读取串口数据的请求。为了提高轮训效率,这里对轮训间隔的优化原则是:当向从机发送读取从机上所有串口数据的请求后,如果所述从机在预设的响应时间内响应了该请求,则将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区;如果所述从机在预设的响应时间内未响应该请求,则直接向下一所述从机发送串口数据读取请求。
值得一提的是,在从机响应了串口数据读取请求后,还可以对获取到的串口数据的完整性进行验证。在完整性验证通过时,将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区。在完整性验证不通过时,将获取到的串口数据丢弃,然后向下一所述从机发送串口数据读取请求。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
工业实用性说明
本发明的技术方案,通过创建与每一从机的每一所述串口一一对应的虚拟串口节点,可以通过虚拟串口节点获取对应的串口的地址编码,以实现向串口的数据写入;还可以通过从虚拟串口节点的缓存区直接获取对应的串口的数据,以实现对串口的数据读取;本发明的技术方案改善了主机与从机的串口之间的通信机制,有效提升了主机与从机的串口的通信效率与准确性。
Claims (10)
1.一种通信控制方法,用于实现主机与每一从机的每一串口的通信,所述通信控制方法包括如下步骤:
创建与每一所述从机的每一所述串口一一对应的虚拟串口节点;
在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口;
依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区,以使得所述主机能从每一虚拟串口节点的缓冲区读取到对应的所述串口的数据。
2.如权利要求1所述的通信控制方法,其中,所述创建与每一所述从机的每一所述串口一一对应的虚拟串口节点的步骤包括:
获取所述从机的地址编码与所述从机的每一所述串口的地址编码;
对应每一所述串口创建一虚拟串口节点;
对所述虚拟串口节点与对应的所述串口做寻址映射。
3.如权利要求2所述的通信控制方法,其中,所述对所述虚拟串口节点与对应的所述串口做寻址映射的步骤包括:
将所述虚拟串口节点的句柄、对应的所述从机的地址编码、对应的所述串口的地址编码,以及所述虚拟串口节点的编码进行映射。
4.如权利要求1所述的通信控制方法,其中,所述在接收到所述主机向所述虚拟串口节点发送数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口的步骤包括:
在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,判断所述数据写入请求的类型;所述数据写入请求包括串口参数设置请求与串口数据写入请求;
当所述数据写入请求为串口参数设置请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口设置参数写入对应的所述串口;
当所述数据写入请求为串口数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口数据写入对应的所述串口。
5.如权利要求1所述的通信控制方法,其中,所述依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区的步骤包括:
向一所述从机发送串口数据读取请求;
当所述从机在预设的响应时间内响应所述串口数据读取请求时,将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区;
当所述从机在预设的响应时间内未响应所述串口数据读取请求时,向下一所述从机发送串口数据读取请求。
6.一种通信控制装置,用于实现主机与每一从机的每一串口的通信,所述通信控制装置包括创建模块、数据写入模块与数据读取模块;
所述创建模块,用于创建与每一所述从机的每一所述串口一一对应的虚拟串口节点;
所述数据写入模块,用于在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述数据写入对应的所述串口;
所述数据读取模块,用于依次读取每一所述从机的每一所述串口的数据,并将获取到的所述数据存储于对应的虚拟串口节点的缓冲区,以使得所述主机能从每一虚拟串口节点的缓冲区读取到对应的所述串口的数据。
7.如权利要求6所述的通信控制装置,其中,所述创建模块包括获取单元、创建单元与映射单元;
所述获取单元,用于获取所述从机的地址编码与所述从机的每一所述串口的地址编码;
所述创建单元,用于对应每一所述串口创建一虚拟串口节点;
所述映射单元,用于对所述虚拟串口节点与对应的所述串口做寻址映射。
8.如权利要求7所述的通信控制装置,其中,所述映射单元,具体用于将所述虚拟串口节点的句柄、对应的所述从机的地址编码、对应的所述串口的地址编码,以及所述虚拟串口节点的编码进行映射。
9.如权利要求6所述的通信控制装置,其中,所述数据写入模块包括判断单元、串口参数设置单元与串口数据写入单元;
所述判断单元,用于在接收到所述主机向所述虚拟串口节点发送的数据写入请求时,判断所述数据写入请求的类型;所述数据写入请求包括串口参数设置请求与串口数据写入请求;
所述串口参数设置单元,用于在所述数据写入请求为串口参数设置请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口设置参数写入对应的所述串口;
所述串口数据写入单元,用于在所述数据写入请求为串口数据写入请求时,从所述虚拟串口节点中获取对应的所述串口的地址编码,并根据所述地址编码将所述串口数据写入对应的所述串口。
10.如权利要求6所述的通信控制装置,其中,所述数据读取模块包括发送单元与控制单元;
所述发送单元,用于向所述从机发送串口数据读取请求;
所述控制单元,用于在所述从机在预设的响应时间内响应所述串口数据读取请求时,将所述从机的每一所述串口的数据存储于对应的虚拟串口节点的缓冲区;
所述控制单元,还用于在所述从机在预设的响应时间内未响应所述串口数据读取请求时,控制所述发送单元向下一所述从机发送串口数据读取请求。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/076760 WO2018165900A1 (zh) | 2017-03-15 | 2017-03-15 | 通信控制方法与控制装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108235802A true CN108235802A (zh) | 2018-06-29 |
Family
ID=62643253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780002445.5A Pending CN108235802A (zh) | 2017-03-15 | 2017-03-15 | 通信控制方法与控制装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108235802A (zh) |
WO (1) | WO2018165900A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111443928A (zh) * | 2020-03-24 | 2020-07-24 | 四川众合智控科技有限公司 | 基于串口通信的信标刷写方法和系统 |
CN112527720A (zh) * | 2020-12-05 | 2021-03-19 | 青岛鼎信通讯股份有限公司 | 一种应用于机架式厂站终端的数据通信方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2715431Y (zh) * | 2004-01-15 | 2005-08-03 | 北京北纬通信科技股份有限公司 | 分体式数据采集发送装置 |
CN101621440A (zh) * | 2009-05-22 | 2010-01-06 | 浙江天正电气股份有限公司 | 远程多路串口通讯映射系统 |
CN101894041A (zh) * | 2010-07-15 | 2010-11-24 | 中兴通讯股份有限公司 | 多虚拟串口系统及其通信方法 |
CN105512063A (zh) * | 2014-09-24 | 2016-04-20 | 中兴通讯股份有限公司 | 一种数据传输的方法和系统 |
CN106126452A (zh) * | 2016-06-17 | 2016-11-16 | 北京大学 | 基于IIC协议的Linux操作系统与裸机通信的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101945031B (zh) * | 2010-10-21 | 2012-05-30 | 广州数控设备有限公司 | 一种高速现场总线从站相互通信的实现方法 |
US8924972B2 (en) * | 2012-09-27 | 2014-12-30 | Oracle International Corporation | Method and system for logging into a virtual environment executing on a host |
-
2017
- 2017-03-15 WO PCT/CN2017/076760 patent/WO2018165900A1/zh active Application Filing
- 2017-03-15 CN CN201780002445.5A patent/CN108235802A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2715431Y (zh) * | 2004-01-15 | 2005-08-03 | 北京北纬通信科技股份有限公司 | 分体式数据采集发送装置 |
CN101621440A (zh) * | 2009-05-22 | 2010-01-06 | 浙江天正电气股份有限公司 | 远程多路串口通讯映射系统 |
CN101894041A (zh) * | 2010-07-15 | 2010-11-24 | 中兴通讯股份有限公司 | 多虚拟串口系统及其通信方法 |
CN105512063A (zh) * | 2014-09-24 | 2016-04-20 | 中兴通讯股份有限公司 | 一种数据传输的方法和系统 |
CN106126452A (zh) * | 2016-06-17 | 2016-11-16 | 北京大学 | 基于IIC协议的Linux操作系统与裸机通信的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111443928A (zh) * | 2020-03-24 | 2020-07-24 | 四川众合智控科技有限公司 | 基于串口通信的信标刷写方法和系统 |
CN112527720A (zh) * | 2020-12-05 | 2021-03-19 | 青岛鼎信通讯股份有限公司 | 一种应用于机架式厂站终端的数据通信方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2018165900A1 (zh) | 2018-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112688967B (zh) | 一种物联网数据处理方法、装置、设备及存储介质 | |
CN107229415B (zh) | 一种数据写方法、数据读方法及相关设备、系统 | |
CN101578827B (zh) | 未授权访问信息收集系统 | |
DE60101566T2 (de) | Gerätetreibererzeugung | |
CN103118147A (zh) | 内网服务器访问方法、设备和系统 | |
CN111352889B (zh) | 一种基于mctp协议的设备管理方法、设备、装置和介质 | |
US20130047212A1 (en) | Wireless Internet-Accessing Module, Host, Communication Method Thereof, and Data Card | |
CN111343148A (zh) | 一种fgpa通信数据的处理方法、系统及装置 | |
CN111464419A (zh) | 一种基于总线网络通信的数据传输控制方法 | |
CN113014510B (zh) | 惯导系统分布式测试中数据缓存方法及装置 | |
CN107547346A (zh) | 一种报文传输方法和装置 | |
CN108235802A (zh) | 通信控制方法与控制装置 | |
CN110392123A (zh) | 检测出口ip地址的方法、装置和系统 | |
CN113596017B (zh) | 一种协议解析方法、装置、软网关和存储介质 | |
KR20160103110A (ko) | 네트워크 요소 데이터 액세스 방법, 액세스 장치, 및 네트워크 관리 시스템 | |
CN112422485B (zh) | 一种传输控制协议的通信方法及装置 | |
CN110109848B (zh) | Dsp硬件抽象层以及dsp处理器 | |
WO2019242374A1 (zh) | 数据结构、数据索引方法、装置及设备、存储介质 | |
US20030067909A1 (en) | Method and apparatus for setting up a communications link | |
CN109992197B (zh) | 一种数据读写方法、装置、电子设备和存储介质 | |
CN110730168B (zh) | 一种通信控制方法、装置及服务端设备 | |
CN114489943A (zh) | 一种数据访问方法和装置 | |
CN104080038A (zh) | 定位方法及设备 | |
CN111885560A (zh) | 蓝牙通信方法和装置、存储介质及电子装置 | |
CN105577433A (zh) | 一种acs集群管理方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180629 |