专利名称:一种实现网络与串口数据交互的方法、设备及系统的制作方法
技术领域:
本发明涉及通信技术领域,尤其涉及一种实现网络与串口数据交互的方法、设备及系统。
背景技术:
随着网络技术的广泛发展,利用以太网(Internet)进行数据传输可以实现数据传输的组网应用。同时,随着第三代(3G)无线路由器的出现,可以实现无线方式接入Internet,实现数据传输的组网应用并保证业务传送的安全性。目前,在环保、电力、工业控制、安防等多个行业,大量使用计算机系统,并且广泛地部署了以太网实现计算机联网,因此以太网接口成为现有环境中一种常见的接口方式。但是,由于串行通信发展较早、成熟可靠,具有极强的适用性和广泛的应用范围,大量的电子设备和仪表都设计为通过串口进行通信。为了跟上互联网和网络自动化的发展潮流,需要建立高品质的数据采集、生成监控、即时成本管理的联网系统,这就需要对串口设备进行远程监控和管理,如何实现以太网和串口设备之间的数据交互成为急需解决的问题。
发明内容
本发明提供一种实现网络与串口数据交互的方法、设备及系统,用以实现网络与串口数据的交互。本发明实施例提供的具体技术方案如下:一种实现网络与串口数据交互的方法,包括串行连接事务处理模块分别向串行端口和网络端口发送开启消息,并在所述串行端口和所述网络端口开启后,定时检测串行端口和网络端口的会话连接状态并通知下行串口事务处理模块以及上行网络端事务处理模块;下行串口事务处理模块根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存;以及在所述缓存中有从网络端口接收的数据帧时,从所述缓存中获取所述从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送;上行网络端事务处理模块根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存;以及在所述缓存中有从串行接口接收的串行数据流时,从所述缓存中获取所述从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送。一种实现网络与串口数据交互的设备,包括:串行连接事务处理模块,用于分别向串行端口和网络端口发送开启消息,并在所述串行端口和所述网络端口开启后,定时检测串行端口和网络端口的会话连接状态并通知下行串口事务处理模块以及上行网络端事务处理模块;下行串口事务处理模块,用于根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存;以及用于在所述缓存中有从网络端口接收的数据帧时,从所述缓存中获取所述从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送;上行网络端事务处理模块,用于根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存;以及在所述缓存中有从串行接口接收的串行数据流时,从所述缓存中获取所述从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送。一种网络与串口数据交互的系统,包括:设有网络端口的第一设备、实现网络与串口数据交互的第二设备和设有串行端口的第三设备,所述第一设备通过网络端口与第二设备连接,所述第二设备通过串行端口与所述第三设备连接;所述第一设备,用于将待发送的串行数据流通过虚拟串口转换为数据帧,并将转换获得数据帧通过网络端口传输至所述第二设备;以及通过网络端口接收第二设备发送的数据帧,并通过虚拟串口将所述数据帧转换为串行数据流;所述第二设备,用于通过网络端口接收所述第一设备发送的数据帧,并将接收的数据帧转换为串行数据流后通过串行端口发送至所述第三设备;以及通过串行端口接收所述第三设备发送的串行数据流,并将接收的串行数据流转换为数据帧后发送给所述第一设备;所述第三设备,用于通过串行端口接收所述第二设备发送的串行数据流。基于上述技术方案,本发明实施例中,通过串行连接事务处理模块向串行端口和网络端口发送开启消息,并将串行端口和网络端口的会话连接状态通知下行串口事务处理模块以及上行网络端事务处理模块,由下行串口事务处理模块监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存,以及在缓存中有从网络端口接收的数据帧时,从该缓存中获取从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送;以及由上行网络端事务处理模块监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存,以及在缓存中有从串行接口接收的串行数据流时,从该缓存中获取从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送,从而实现了网络与串口数据的交互。通过该方案,可以实现稳定可靠的数据流传输,将传统的串行数据送上IP以及无线通道,通过网络在任何地方控制终端设备以及接收终端设备的采集数据,提高了现有设备的利用率。
图1为本发明实施例中网络与串口数据交互的系统架构示意图;图2为本发明实施例中实现网络与串口数据交互的设备结构示意图;图3为3G路由器的硬件系统结构示意图4为本发明实施例中3G路由器与即客户端组成的系统的软件应用模型示意图;图5为本发明实施例中实现网络与串口数据交互的方法流程图;图6为本发明实施例中系统应用层软件流程设计框架示意图;图7为本发明实施例中串行连接事务处理模块、下行串口事务处理模块以及上行网络端事务处理1旲块之间的联动关系不意图;图8为本发明实施例中串行连接事务处理模块的状态机变化示意图;图9为本发明实施例中下行串口事务处理模块的状态机变化示意图;图10为本发明实施例中上行网络端事务处理模块的状态机变化示意图;图11为本发明实施例中串行端口与网络端口数据交互功能的实现框架图;图12为本发明实施例中Real-port模式下PC与3G路由器的数据交互过程示意图;图13为本发明实施例中Real-port模式下网络端口传输的报文头结构示意图;图14为本发明实施例中Reverse-telnet模式下网络端口传输的报文结构示意图;图15为本发明实施例中RFC2217模式下网络端口传输的控制报文字符串的结构示意图。
具体实施例方式为了实现网络与串口数据的交互,以便于对串口设备进行监控和管理,本发明实施例中提供了一种实现网络与串口数据交互的方法、设备及系统。下面结合附图对本发明优选的实施方式进行详细说明。如附图1所示,本发明实施例中提供了一种网络与串口数据交互的系统,该系统主要包括设有网络端口的第一设备101、实现网络与串口数据交互的第二设备102和设有串行端口的第三设备103,第一设备101通过网络端口与第二设备102连接,第二设备102通过串行端口与第三设备103连接,其中,第一设备101,用于将待发送的串行数据流通过虚拟串口转换为数据帧,并将转换获得数据帧通过网络端口传输至第二设备102 ;以及通过网络端口接收第二设备102发送的数据帧,并通过虚拟串口将数据帧转换为串行数据流;第二设备102,用于通过网络端口接收第一设备101发送的数据帧,并将接收的数据帧转换为串行数据流后通过串行端口发送至第三设备103 ;以及通过串行端口接收第三设备103发送的串行数据流,并将接收的串行数据流转换为数据帧后发送给第一设备101 ;第三设备103,用于通过串行端口接收第二设备102发送的串行数据流。其中,第一设备101与第二设备通过网络端口建立连接的方式包括但不限于:传输控制协议-客户端(TCP-Client)模式、传输控制协议-服务器(TCP-Server)模式、用户数据报协议(UDP)模式、虚拟串口(Real-port)模式、反向-远程登录(Reverse-telnet)模式以及请求注解(RFC) 2217模式。本发明实施例中,如附图2所示,实现网络与串口数据交互的第二设备102主要包括以下模块:
串行连接事务处理模块201,用于分别向串行端口和网络端口发送开启消息,并在串行端口和网络端口开启后,定时检测串行端口和网络端口的会话连接状态并通知下行串口事务处理模块202以及上行网络端事务处理模块203 ;下行串口事务处理模块202,用于根据串行连接事务处理模块201的通知确定串行端口和网络端口的会话连接正常时,监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存;以及用于在缓存中有从网络端口接收的数据帧时,从缓存中获取从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送;上行网络端事务处理模块203,用于根据串行连接事务处理模块201的通知确定串行端口和网络端口的会话连接正常时,监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存;以及在缓存中有从串行接口接收的串行数据流时,从缓存中获取从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送。优选地,该第二设备为第三代移动通信(3G)路由器。通过在3G路由器上实现串口与网络数据交互功能,可以在3G网络以及以太网(或局域网)和串行设备之间数据传输,能够以无线方式实现网络与串口设备之间的数据交互,通过3G网络以及以太网可以在任何地方控制串行设备以及接收串行设备采集的数据,使得串口设备能够即时连接网络,达到对串口设备的远程监控以及管理。并且,通过3G无线网络与以太网之间的数据交换,实现无线网络与串口设备之间的信息交互。在一个具体的实施例中,3G路由器的硬件系统结构如附图3所示,其中iMX283为主控中央处理器(CPU),该CPU采用454兆赫兹(MHz)的ARM926EJ-S为内核,内含16K字节大小的程序和32K字节大小的数据存储器。该CPU集成了片内的电源管理单元(PMU)及多路对直流参数进行变换的电流(DC-DC),支持多种内存(如双倍速率同步动态随机存储器(DDR2)、NAND闪存(NAND FLASH)、串行外设接口闪存(SPI FLASH),其中DDR2的最大时钟频率为205MHz,支持20比特(bit)的用于校正多个随机错误模式的多级循环、错误校正的变成数字编码(BCH码)硬件纠错,集成有主设备、从设备通用串行总线(HOST、SLAVE USB)总线控制器以及多种外围常用接口,4路4线通用异步收发(UART)、4路可编程串行外设接口(SPI)、两线式串行(I2C)总线以及其他接口。其中,3G模块提供外置3G无线上网卡进行无线通信,KS8995进行以太网通信,MAX13487、SP3234进行串口通信。该3G路由器与具备网络端口的第一设备(即客户端)组成的系统的软件应用模型如附图4所示,虚线所示为数据流的传输,该数据流可以是来自以太网或3G网络的数据,也可以是来自应用层的数据传输至以太网或串口。基于同一发明构思,如附图5所示,本发明实施例中实现网络与串口数据交互的详细方法流程如下:步骤501:串行连接事务处理模块分别向串行端口和网络端口发送开启消息,并在串行端口和网络端口开启后,定时检测串行端口和网络端口的会话连接状态并通知下行串口事务处理模块以及上行网络端事务处理模块。步骤502:下行串口事务处理模块根据串行连接事务处理模块的通知确定串行端口和网络端口的会话连接正常时,监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存;以及在缓存中有从网络端口接收的数据帧时,从缓存中获取从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送。步骤503:上行网络端事务处理模块根据串行连接事务处理模块的通知确定串行端口和网络端口的会话连接正常时,监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存;以及在缓存中有从串行接口接收的串行数据流时,从缓存中获取从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送。以下具体实施例中以在3G路由器中实现网络与串口数据交互为例,对其具体的实现过程进行说明,实际应用中并不进行限于在3G路由器上实现该功能,对于其它具有网络传输能力以及串口连接功能的设备同样适用。网络与串口数据交互的功能实现在3G路由器的应用层中软件实现,主要设计思想为:将串行连接的各运行阶段抽象为状态,将串行连接进行不同阶段的处理用状态机动作描述,以及将串行连接的不同阶段的迁移条件抽象为消息描述。通过运行状态机完成相应的处理流程,如附图6所示为系统应用层软件流程设计框架,下行串口事务处理模块处理串行端口侧数据的收发事件以及异常事件,上行网络端事务处理模块处理网络侧数据的收发事件以及异常事件、串行连接事务处理模块通过处理器事件控制串行端口和网络端口的开启以及对下行串口事务处理模块和上行网络端事务处理模块进行统一管理。串行连接事务处理模块、下行串口事务处理模块以及上行网络端事务处理模块之间的联动关系如附图7所示,系统软件通过消息队列的发送和接收完成状态机运转的管理流程。串行连接事务处理模块根据用户开启和关闭协议转换功能的消息,先后分别向下行串口事务处理模块和上行网络端事务处理模块发送开启消息,当串行端口打开成功,串行连接事务处理模块处于半连接状态,在网络端口打开成功后,串行连接事务处理模块处于全连接状态,此时会定时向串行端口和网络端口发送定时器消息以检测串行端口和网络的会话是否正常,起到维护会话连接的作用。下行串口事务处理模块根据串行连接事务处理模块状态机变化时通知的消息动态更新自己的状态机,在各状态下处理串行端口的收发事件和异常事件,同时通知串行连接事务处理模块和上行网络端事务处理模块,以使相关状态信息达到同步。上行网络端事务处理模块根据串行连接事务处理模块状态机变化时通知的事件动态更新自己的状态机,在各状态下处理各工作模式下会话的连接、关闭、网络报文的收发及异常事件。具体地,下行串口事务处理模块及上行网络端事务处理模块分别监测串行端口和网络端口的数据收发,在串行端口有待读取的数据时,读取串行端口的数据并放入缓存,将缓存中存放的从串行端口获取的数据转换为网络端口数据传输格式后写入网络端口。或者,在网络端口有待读取的数据时,读取网络端口的数据并放入缓存,将缓存中存放的从网络端口获取的数据转换为串行端口数据传输格式后写入串行端口。在数据收发完成后,继续监控网络端口和串行端口是否有待读取的数据。基于该状态机设计的思想,串行连接事务处理模块的状态机变化如附图8所示,状态机具体变化过程如下:串行连接事务处理模块在接收到串行端口和网络端口数据转换功能开启的消息后,从关闭状态转为初始状态;串行连接事务处理模块在初始状态下向串行端口发送开启消息,在串行端口开启后,从初始状态转换为半启动状态;串行连接事务处理模块在半启动状态下向网络端口发送开启消息,在网络端口开启后,从半启动状态转换为启动状态;以及在半启动状态定时检测确定串行端口的会话连接异常时,从半启动状态转换为初始状态;串行连接事务处理模块在启动状态下定时向串行端口和网络端口发送用于检测会话连接状态的消息,并在接收到串行端口和/或网络端口返回的携带会话连接状态的反馈消息后转为数据处理状态,在数据处理状态下处理该反馈消息,将串行端口和网络端口的会话连接状态通知下行串口事务处理模块以及上行网络端事务处理模块后返回启动状态;以及在启动状态下接收到串行端口和/或网络端口异常的消息后转为异常处理状态,在异常处理状态下强行转为初始状态;串行连接事务处理模块在数据处理状态或异常处理状态下接收到串行端口和网络端口数据转换功能关闭的消息时,转为关闭状态。下行串口事务处理模块的状态机变化如附图9所示,状态机具体变化过程如下:下行串口事务处理模块在关闭状态下接收到串行端口和网络端口数据转换功能开启的消息后,转为初始状态;下行串口事务处理模块在初始状态下接收串行连接事务处理模块发送的携带串行端口和网络端口的会话连接状态的通知,根据该通知确定串行端口开启后转为启动状态;下行串口事务处理模块在启动状态下接收串行连接事务处理模块发送的携带串行端口和网络端口的会话连接状态的通知,根据该通知确定串行端口未开启后转为初始状态;以及在启动状态下监测串行端口为读事件时转为读状态,读取串行端口的数据并保存至缓存,并在读取完毕后转为启动状态;以及在启动状态下监测串行端口为写事件时转为写状态,在缓存中有从网络端口接收的数据帧时,从缓存中获取从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流写入串行端口发送,并在写入完毕后转换为启动状态;下行串口事务处理模块在读状态下读取串行端口的数据失败时,转为错误状态;以及在写状态下向串行端口写入数据失败时,转换为错误状态;下行串口事务处理模块在错误状态下检测串行端口无错误时,转为启动状态。上行网络端事务处理模块的状态机变化如附图10所示,状态机具体变化过程如下:上行网络端事务处理模块在关闭状态下接收到串行端口和网络端口数据转换功能开启的消息后,转为初始状态;上行网络端事务处理模块在初始状态下接收串行连接事务处理模块发送的携带串行端口和网络端口的会话连接状态的通知,根据该通知确定串行端口及网络端口开启后转为第一启动状态;上行网络端事务处理模块在第一启动状态下接收到串行端口和网络端口数据转换功能关闭的消息后转为关闭状态;以及在第一启动状态下检测会话连接的数目,若会话连接数目增加,则转为会话连接增加状态;上行网络端事务处理模块在会话连接增加状态下确定会话连接的数目大于零时,转为第二启动状态,并在第二启动状态下检测会话连接数目增加时,转为会话连接增加状态;以及在第二启动状态下检测会话连接数目减少时,转为会话连接减少状态;上行网络端事务处理模块在会话连接减少状态下若检测到会话连接数目大于零时转为第二启动状态,若检测到会话连接数目减少到零转为第一启动状态;上行网络端事务处理模块在第二启动状态下监测网络端口有待读取的数据帧时转为读状态,在读状态下读取网络端口的的数据帧并保存至缓存,并在读取完毕后转为第二启动状态;以及在第二启动状态下监测缓存中有从串行端口接收的串行数据流时转为写状态,在写状态下从缓存中获取从串行端口接收的串行数据流并转换为数据帧,将转换获得的数据帧写入网络端口发送,并在写入完毕后转换为第二启动状态;以及在第二启动状态下检测到网络端口连接异常时转入错误状态;上行网络端事务处理模块在错误状态下检测网络端口连接恢复正常时转入第二启动状态;以及在错误状态下检测网络端口连接恢复失败时转入会话连接减少状态。该具体实施例中,3G路由器驱动层在进行软件设计时,分为串行端口的数据接收流程和数据发送流程,数据接收流程具体描述为:硬件相关驱动程序根据中断、轮询、直接内存存取(DMA)等方式将硬件先入先出队列(FIFO)中的数据读取到读缓存队列(read_buf_.head)中,然后通过工作队列调度对读取的数据进行处理后存入读缓存(reacLbuf)中,然后唤醒读等待队列通知上层应用程序将数据从读缓存中读取到应用层的缓存中。数据发送流程具体描述为:应用层通过写函数调用待写入串行端口的数据,唤醒写等待队列的同时将数据写入应用层的写缓存(write_buf)中,然后将应用层写缓存中的数据读取到硬件相关层的写缓存(inf0.xmit.buf)中,硬件相关驱动程序中的写函数依据中断、轮询、DMA等方式将写缓存中的数据写入串行端口芯片的FIFO中。串行端口与网络端口的数据交互,并不是简单物理层和数据链路层的转化,由于串口协议本身不具有网络层和传输层,因此实际是将串口的数据采用传输控制协议/因特网互联协议(TCP/IP)协议对应的格式进行封装并传输,例如通过socket函数接收和发送的数据实际为应用层的数据。该具体实施例中,系统中串行端口与网络端口数据交互功能的实现框架如附图11所示,上行网络端事务处理模块、下行串口事务处理模块分别建立进程进行处理,上行网络端事务处理模块主要是接收网络侧的数据并通知下行串口事务处理模块发送接收到的网络侧的数据;串行端口从下挂设备中读取数据后经由下行串口事务处理模块以及上行网络端事务处理模块发送给网络端。该具体实施例中,将上行网络端事务处理模块简称为上行口,将下行串口事务处理模块简称为下行口。设备的串行端口数决定了串行连接的数目,在系统启动后启动一个串行连接,其初始状态为未连接状态,每个串行连接包含一个上行口和一个下行口,其中,上行口是面向IP网络的逻辑接口,根据配置的模式可以包含多个会话;下行口是面向串口设备的逻辑接口,与设备的一个串行端口绑定,会话可视为socket连接,当下行口绑定的串行端口正常工作时,该下行口处于开启状态,其所属的串行连接处于半连接状态,当上行口包含不小于I条会话时,该上行口处于开启状态,其所属的串行连接处于全连接状态,就可以正常处理数据了。网络端口工作模式的钩子函数挂载在上行口线程,通过工作模式的钩子函数实现与系统内核的通信,为不同应用场景下的网络端口提供相应的数据处理方式。该具体实施例中,针对不同的应用场景下的网络端口设置不同的工作模式,该工作模式包括=TCP-Client模式、TCP-Server模式、UDP模式、Real-port模式、Reverse-telnet模式以及RFC2217模式。不同的工作模式之间可以互相切换。通过不同的工作模式实现串口设备与网络(以太网和3G网络)之间数据的透明传输。一般在IP网络的数据传输采用TCP协议和UDP协议两种,其中UDP是不面向连接的、不可靠的、无序的、面向数据包的传输协议,TCP是面向连接的、可靠的、有序的、面向字节流的传输协议。其中,TCP-Client工作模式下是将网络端口作为采用TCP协议的客户端JCP-Server工作模式是将网络端口作为采用TCP协议的服务端;UDP工作模式是将网络端口作为采用UDP协议的客户端或服务端。TCP-Client、TCP-SerVer、UDP工作模式是将网络端口作为相应工作模式下的通信角色,对外提供socket接口,实现数据交互。在Real-port模式下,为了解决部分具备网络端口的设备(如个人电脑PC)没有硬件串口无法连接调试设备的难题,将串口设备的串行端口映射成PC上的虚拟串口,使用创建的虚拟串口可以直接应用原有串口设备上的软件或通信模块。数据交互过程如附图12所示,作为客户端的PC与路由器建立连接后,将需要发送的串口命令以及数据封装在网络数据包中,通过网络发送给路由器,由路由器通过其内部协议进行解析后,将解析后的串口命令以及数据重新封装为串行数据流发送给串口设备,实现虚拟串口数据转换服务。虚拟串口是在TCP协议之前增加私有的报文头,虚拟串口与PC间传输的数据包括报文头和数据体,其中报文头部分占4字节,具体结构如附图13所示,报文头由起始码、协议版本号、功能码、当前数据包长度以及保留比特位组成。具体地,起始码占4比特、协议版本号占4比特、功能码占4比特、当前数据包长度占6比特、保留比特位为4比特。其中,功能码可以用于数据、心跳、串口参数同步、流控通知、设备流控状态等功能,尤其是可以针对异常中断处理、流控作出响应。网络端口在Reverse-telnet模式下作为标准的telnet服务器使用,并且可以处理协议规定的特殊字符,一般用于连接路由器或者交换机的网络端口,与虚拟串口类似,通过在TCP报文中添加telnet协议字段部分,实现通过telnet管理串口设备。数据交互过程为:作为客户端的PC将需要发送的远程登录(telnet)数据通过网络发送给路由器,由路由器通过其内部的协议软件进行解析后,再将解析后的telnet数据转换为串行数据流发送给串口设备,从而实现telnet数据转换服务。Reverse-telnet模式下网络端口传输的报文的报文头由3个字节组成,如附图14所示,报文头3个字节的组合有以下几种:telnte命令起始位IAC (取值为255)+发送端指示接收端激活选项TNDO (取值为253)+回显功能TN_ECH0 (取值为l),telnte命令起始位IAC (取值为255)+发送端指示接收端激活选项TNDO (取值为253)+窗口控制选项TN_NAWS(取值为31),telnte命令起始位IAC (取值为255) +发送端指示接收端禁止选项TNDONT(取值为254)+串口流控选项TN_LFL0W (取值为33),telnte命令起始位IAC (取值为255)+发送端自身激活选项TNWILL (取值为251)+回显功能TN_ECH0 (取值为1),telnte命令起始位IAC (取值为255)+发送端自身激活选项TNWILL (取值为251)+发送端激活字符发送选项TN_SGA (取值为3)。通过该方案,系统管理员可以通过在客户端与远程设备之间建立会话,远程登录到没有直接连在Ethernet网络上的计算机或设备,用户体验类似于标准telnet方式,对计算机或设备进行远程配置与检测。RFC2217模式则是基于telnet协议增加了通用串口控制选项,按照通用请求注解(RFC)标准协议实现。该模式下的控制报文字符串可以用于设置波特率、数据位、奇偶校验位、停止位、流控,具体的控制报文字符串如附图15所示,由起始标志、串口控制选项配置命令(com-port-option)、串口配置选项(Signature)、串口配置选项设置值(〈text〉)以及结束标志组成,其中起始标志由telnet命令起始位IAC以及字符起始标志位Sb组成,结束标志由telnet命令起始位IAC以及结束标志位Se组成。其中,Signature部分在设置波特率(set-baud)时为4字节,在设置数据位(set-datasize)时为I字节,在设置奇偶校验位(set-parity)时为I字节,在设置停止位(set-stopsize)时为4字节,在设置流控(set-control)时为I字节。通过该方案,在反向telnet的基础上增加针对串口参数配置的功能,可以实现在对计算机或设备进行远程管理的基础上,还可以对设备串口参数进行相应的配置与管理。
基于上述技术方案,本发明实施例中,通过串行连接事务处理模块向串行端口和网络端口发送开启消息,并将串行端口和网络端口的会话连接状态通知下行串口事务处理模块以及上行网络端事务处理模块,由下行串口事务处理模块监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存,以及在缓存中有从网络端口接收的数据帧时,从该缓存中获取从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送;以及由上行网络端事务处理模块监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存,以及在缓存中有从串行接口接收的串行数据流时,从该缓存中获取从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送,从而实现了网络与串口数据的交互。并且,通过采用状态机的设计方式将串行连接的运行阶段抽象为不同的状态,将串行连接进入不同阶段的处理用状态机动作描述,将串行连接的不同阶段的迁移条件抽象为消息描述,通过更新状态机的方式实现数据处理过程,可以有效降低系统设备实现的难度,提闻系统的稳定性。同时,通过将串口与网络数据转换的功能集成在3G路由器中,实现了 3G无线网络以及以太网与串口设备之间的信息交互。另外,通过设置多种工作模式,使得串口与网络数据转换可以应用于不同的场景,拓展了设备的使用范围。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种实现网络与串口数据交互的方法,其特征在于,包括: 串行连接事务处理模块分别向串行端口和网络端口发送开启消息,并在所述串行端口和所述网络端口开启后,定时检测串行端口和网络端口的会话连接状态并通知下行串口事务处理模块以及上行网络端事务处理模块; 下行串口事务处理模块根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存;以及在所述缓存中有从网络端口接收的数据帧时,从所述缓存中获取所述从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送; 上行网络端事务处理模块根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存;以及在所述缓存中有从串行接口接收的串行数据流时,从所述缓存中获取所述从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送。
2.按权利要求1所述的方法,其特征在于,串行连接事务处理模块分别向串行端口和网络端口发送开启消息,并在所述串行端口和所述网络端口开启后,定时检测串行端口和网络端口的会话连接状态并通知下行串口事务处理模块以及上行网络端事务处理模块,具体包括: 串行连接事务处理模块在接收到串行端口和网络端口数据转换功能开启的消息后,从关闭状态转为初始状态; 串行连接事务处理 模块在初始状态下向串行端口发送开启消息,在所述串行端口开启后,从初始状态转换为半启动状态; 串行连接事务处理模块在半启动状态下向网络端口发送开启消息,在所述网络端口开启后,从半启动状态转换为启动状态;以及在半启动状态定时检测确定所述串彳丁端口的会话连接异常时,从半启动状态转换为初始状态; 串行连接事务处理模块在启动状态下定时向串行端口和网络端口发送用户检测会话连接状态的消息,并在接收到串行端口和/或网络端口返回的携带会话连接状态的反馈消息后转为数据处理状态,在数据处理状态下处理所述反馈消息,将串行端口和网络端口的会话连接状态通知下行串口事务处理模块以及上行网络端事务处理模块后返回启动状态;以及在启动状态下接收到串行端口和/或网络端口异常的消息后转为异常处理状态,在异常处理状态下强行转为初始状态; 串行连接事务处理模块在数据处理状态或异常处理状态下接收到串行端口和网络端口数据转换功能关闭的消息时,转为关闭状态。
3.按权利要求1所述的方法,其特征在于,下行串口事务处理模块根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存;以及在所述缓存中有从网络端口接收的数据帧时,从所述缓存中获取所述从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送,具体包括: 下行串口事务处理模块在关闭状态下接收到串行端口和网络端口数据转换功能开启的消息后,转为初始状态; 下行串口事务处理模块在初始状态下接收串行连接事务处理模块发送的携带串行端口和网络端口的会话连接状态的通知,根据所述通知确定所述串行端口开启后转为启动状态; 下行串口事务处 理模块在启动状态下接收串行连接事务处理模块发送的携带串行端口和网络端口的会话连接状态的通知,根据所述通知确定所述串行端口未开启后转为初始状态;以及在启动状态下监测串行端口为读事件时转为读状态,读取串行端口的数据并保存至缓存,并在读取完毕后转为启动状态;以及在启动状态下监测串行端口为写事件时转为写状态,在缓存中有从网络端口接收的数据帧时,从缓存中获取从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流写入串行端口发送,并在写入完毕后转换为启动状态; 下行串口事务处理模块在读状态下读取串行端口的数据失败时,转为错误状态;以及在写状态下向串行端口写入数据失败时,转换为错误状态; 下行串口事务处理模块在错误状态下检测串行端口无错误时,转为启动状态。
4.按权利要求1所述的方法,其特征在于,上行网络端事务处理模块根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存;以及在所述缓存中有从串行接口接收的串行数据流时,从所述缓存中获取所述从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送,具体包括: 上行网络端事务处理模块在关闭状态下接收到串行端口和网络端口数据转换功能开启的消息后,转为初始状态; 上行网络端事务处理模块在初始状态下接收串行连接事务处理模块发送的携带串行端口和网络端口的会话连接状态的通知,根据所述通知确定所述串行端口及所述网络端口开启后转为第一启动状态; 上行网络端事务处理模块在第一启动状态下接收到串行端口和网络端口数据转换功能关闭的消息后转为关闭状态;以及在第一启动状态下检测会话连接的数目,若会话连接数目增加,则转为会话连接增加状态; 上行网络端事务处理模块在会话连接增加状态下确定会话连接的数据大于零时,转为第二启动状态,并在第二启动状态下检测会话连接数目增加时,转为会话连接增加状态;以及在第二启动状态下检测会话连接数目减少时,转为会话连接减少状态; 上行网络端事务处理模块在会话连接减少状态下若检测到会话连接数目大于零时转为第二启动状态,若检测到会话连接数目减少到零转为第一启动状态; 上行网络端事务处理模块在第二启动状态下监测网络端口有待读取的数据帧时转为读状态,在读状态下读取网络端口的的数据帧并保存至缓存,并在读取完毕后转为第二启动状态;以及在第二启动状态下监测缓存中有从串行端口接收的串行数据流时转为写状态,在写状态下从缓存中获取从串行端口接收的串行数据流并转换为数据帧,将转换获得的数据帧写入网络端口发送,并在写入完毕后转换为第二启动状态;以及在第二启动状态下检测到网络端口连接异常时转入错误状态; 上行网络端事务处理模块在错误状态下检测网络端口连接恢复正常时转入第二启动状态;以及在错误状态下检测网络端口连接恢复失败时转入会话连接减少状态。
5.按权利要求1-4任一项所述的方法,其特征在于,还包括:所述网络端口针对不同的应用场景设置不同的工作模式,所述工作模式包括:传输控制协议-客户端TCP-Client模式、传输控制协议-服务器TCP-Server模式、用户数据报协议UDP模式、虚拟串口Real-port模式、反向_远程登录Reverse-telnet模式以及请求注解RFC2217模式。
6.按权利要求5所述的方法,其特征在于,所述网络端口工作于Real-port模式下时,所述网络端口传输的报文头由起始码、协议版本号、功能码、当前数据包长度以及保留比特位组成。
7.按权利要求5所述的方法,其特征在于,所述网络端口工作于Reverse-telnet模式下时,所述网络端口传输的报文头由3个字节组成。
8.按权利要求5所述的方法,其特征在于,所述网络端口工作于RFC2217模式下时,所述网络端口传输的控制报文字符串由起始标志、串行端口控制选项配置命令、串行端口配置选项、串行端口配置选项设置值以及结束标志组成。
9.一种实现网络与串口数据交互的设备,其特征在于,包括: 串行连接事务处理模块,用于分别向串行端口和网络端口发送开启消息,并在所述串行端口和所述网络端口开启后,定时检测串行端口和网络端口的会话连接状态并通知下行串口事务处理模块以及上行网络端事务处理模块; 下行串口事务处理模块,用于根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存;以及用于在所述缓存中有从网络端口接收的数据帧时,从所述缓 存中获取所述从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送; 上行网络端事务处理模块,用于根据所述串行连接事务处理模块的通知确定所述串行端口和所述网络端口的会话连接正常时,监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存;以及在所述缓存中有从串行接口接收的串行数据流时,从所述缓存中获取所述从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送。
10.按权利要求9所述的设备,其特征在于,所述设备为第三代移动通信路由器。
11.一种实现网络与串口数据交互的系统,其特征在于,包括:设有网络端口的第一设备、实现网络与串口数据交互的第二设备和设有串行端口的第三设备,所述第一设备通过网络端口与第二设备连接,所述第二设备通过串行端口与所述第三设备连接; 所述第一设备,用于将待发送的串行数据流通过虚拟串口转换为数据帧,并将转换获得数据帧通过网络端口传输至所述第二设备;以及通过网络端口接收第二设备发送的数据帧,并通过虚拟串口将所述数据帧转换为串行数据流; 所述第二设备,用于通过网络端口接收所述第一设备发送的数据帧,并将接收的数据帧转换为串行数据流后通过串行端口发送至所述第三设备;以及通过串行端口接收所述第三设备发送的串行数据流,并将接收的串行数据流转换为数据帧后发送给所述第一设备; 所述第三设备,用于通过串行端口接收所述第二设备发送的串行数据流。
12.按权利要求11所述的系统,其特征在于,所述第一设备与所述第二设备通过网络端口建立连接的方式包括:TCP-Client模式、TCP-Sei'vei'模式、UDP模式、Real-port模式、Reverse-telnet 模式以及 RFC2217 模式。
全文摘要
本发明公开了一种实现网络与串口数据交互的方法、设备及系统,实现网络与串口数据的交互。具体为串行连接事务处理模块定时检测串行端口和网络端口的会话连接状态并通知下行串口事务处理模块以及上行网络端事务处理模块;下行串口事务处理模块监测串行端口的数据接收,在串行端口有串行数据流到来时,获取该串行数据流并保存至缓存;以及从缓存中获取从网络端口接收的数据帧并转换为串行数据流,将转换获得的串行数据流通过串行端口发送;上行网络端事务处理模块监测网络端口的数据接收,在网络端口有数据帧到来时,获取该数据帧并保存至缓存;以及从缓存中获取从串行接口接收的串行数据流并转换为数据帧,将转换获得的数据帧通过网络端口发送。
文档编号H04L29/10GK103095703SQ20131001204
公开日2013年5月8日 申请日期2013年1月11日 优先权日2013年1月11日
发明者刘锐 申请人:瑞斯康达科技发展股份有限公司