CN116112536A - 一种tcp-串口通信透传的方法及装置 - Google Patents

一种tcp-串口通信透传的方法及装置 Download PDF

Info

Publication number
CN116112536A
CN116112536A CN202211743533.XA CN202211743533A CN116112536A CN 116112536 A CN116112536 A CN 116112536A CN 202211743533 A CN202211743533 A CN 202211743533A CN 116112536 A CN116112536 A CN 116112536A
Authority
CN
China
Prior art keywords
tcp
data
serial
tcp client
serial port
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
Application number
CN202211743533.XA
Other languages
English (en)
Inventor
王清波
黄振江
李超勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Tongze Kangwei Intelligent Technology Co ltd
Original Assignee
Guangzhou Tongkang Chuangzhi Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Tongkang Chuangzhi Software Co ltd filed Critical Guangzhou Tongkang Chuangzhi Software Co ltd
Priority to CN202211743533.XA priority Critical patent/CN116112536A/zh
Publication of CN116112536A publication Critical patent/CN116112536A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Abstract

本发明公开了一种TCP‑串口通信透传的方法及装置。该方法包括:根据TCP客户端的通信套接字和串口设备的通信句柄,建立TCP客户端和串口设备的通信通道,得到TCP‑串口通信通道;基于TCP‑串口通信通道,将串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使TCP客户端逐帧发送所有串口数据;根据TCP服务端的通信套接字和TCP客户端的通信句柄,建立TCP服务端和TCP客户端的通信通道,得到TCP‑TCP通信通道;基于TCP‑TCP通信通道,将TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;基于TCP‑串口通信通道,将TCP客户端接收缓存队列中的所有网络数据发送至串口设备,使串口设备逐帧发送所有网络数据。本发明能够实现网络数据和串口数据的双向透传。

Description

一种TCP-串口通信透传的方法及装置
技术领域
本发明涉及无线通信技术领域,尤其涉及一种TCP-串口通信透传的方法及装置。
背景技术
目前,大多数智能终端采用无线通信方式,大多数硬件设备采用串口通信方式。随着物联网技术在工业上的推广应用,开始研究TCP客户端和串口设备的通信组网。而TCP客户端和串口设备采用不同的通信协议,如何在TCP客户端和串口设备之间实现网络数据和串口数据的双向透传,成为当前急需解决的一大难题。
发明内容
为了克服现有技术的缺陷,本发明提供一种TCP-串口通信透传的方法及装置,能够在TCP客户端和串口设备之间实现网络数据和串口数据的双向透传。
为了解决上述技术问题,第一方面,本发明一实施例提供一种TCP-串口通信透传的方法,包括:
根据TCP客户端的通信套接字和串口设备的通信句柄,建立所述TCP客户端和所述串口设备的通信通道,得到TCP-串口通信通道;
基于所述TCP-串口通信通道,将所述串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使所述TCP客户端逐帧发送所有所述串口数据;
根据TCP服务端的通信套接字和所述TCP客户端的通信句柄,建立所述TCP服务端和所述TCP客户端的通信通道,得到TCP-TCP通信通道;
基于所述TCP-TCP通信通道,将所述TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;
基于所述TCP-串口通信通道,将所述TCP客户端接收缓存队列中的所有所述网络数据发送至所述串口设备,使所述串口设备逐帧发送所有所述网络数据。
进一步地,所述基于所述TCP-串口通信通道,将所述串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,具体包括:
基于所述TCP-串口通信通道,定期监测所述串口设备的串口数据接收情况,以及分别检测所述TCP客户端的通信套接字和所述串口设备的通信句柄的状态;
在所述串口设备在当前周期内接收到至少一个所述串口数据,且所述TCP客户端的通信套接字和所述串口设备的通信句柄均处于正常状态时,将所述串口设备在当前周期内接收的所有所述串口数据保存至所述TCP客户端发送缓存队列。
进一步地,所述将所述串口设备在当前周期内接收的所有所述串口数据保存至所述TCP客户端发送缓存队列,具体包括:
遍历所述串口设备在当前周期内接收的每一所述串口数据,判断当前串口数据的数据长度是否小于等于所述TCP客户端发送缓存队列中可存储数据的总数据长度;
在所述当前串口数据的数据长度小于等于所述TCP客户端发送缓存队列中可存储数据的总数据长度时,将所述当前串口数据作为一帧数据,更新所述TCP客户端发送缓存队列中已存储数据的总数据帧数;
判断所述TCP客户端发送缓存队列中已存储数据的总数据帧数是否小于所述TCP客户端发送缓存队列的最大数据帧数;
在所述TCP客户端发送缓存队列中已存储数据的总数据帧数小于所述TCP客户端发送缓存队列的最大数据帧数时,将所述当前串口数据作为一帧数据保存至所述TCP客户端发送缓存队列,更新所述TCP客户端发送缓存队列中可存储数据的总数据长度。
进一步地,所述使所述TCP客户端逐帧发送所有所述串口数据,具体包括:
通过所述TCP客户端,检测所述TCP客户端的通信套接字的状态;
通过所述TCP客户端,在所述TCP客户端的通信套接字处于正常状态时,将所述TCP客户端发送缓存队列中的每一所述串口数据均作为一帧数据,逐帧发送所有所述串口数据。
进一步地,所述使所述TCP客户端逐帧发送所有所述串口数据,具体包括:
在所述TCP客户端发送任一所述串口数据后,监测所述TCP客户端是否成功发送所述串口数据;
在所述TCP客户端未成功发送所述串口数据时,销毁所述TCP客户端的通信套接字,生成TCP发送失败记录。
进一步地,所述基于所述TCP-TCP通信通道,将所述TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列,具体包括:
基于所述TCP-TCP通信通道,定期监测所述TCP客户端的网络数据接收情况,以及分别检测所述TCP服务端的通信套接字和所述TCP客户端的通信句柄的状态;
在所述TCP客户端在当前周期内接收到至少一个所述网络数据,且所述TCP服务端的通信套接字和所述TCP客户端的通信句柄均处于正常状态时,将所述TCP客户端在当前周期内接收的所有所述网络数据保存至所述TCP客户端接收缓存队列。
进一步地,所述将所述TCP客户端在当前周期内接收的所有所述网络数据保存至所述TCP客户端接收缓存队列,具体包括:
遍历所述TCP客户端在当前周期内接收的每一所述网络数据,判断当前网络数据的数据长度是否小于等于所述TCP客户端接收缓存队列中可存储数据的总数据长度;
在所述当前网络数据的数据长度小于等于所述TCP客户端接收缓存队列中可存储数据的总数据长度时,将所述当前网络数据作为一帧数据,更新所述TCP客户端接收缓存队列中已存储数据的总数据帧数;
判断所述TCP客户端接收缓存队列中已存储数据的总数据帧数是否小于所述TCP客户端接收缓存队列的最大数据帧数;
在所述TCP客户端接收缓存队列中已存储数据的总数据帧数小于所述TCP客户端接收缓存队列的最大数据帧数时,将所述当前网络数据作为一帧数据保存至所述TCP客户端接收缓存队列,更新所述TCP客户端接收缓存队列中可存储数据的总数据长度。
进一步地,所述使所述串口设备逐帧发送所有所述网络数据,具体包括:
通过所述串口设备,检测所述串口设备的通信句柄的状态;
通过所述串口设备,在所述串口设备的通信句柄处于正常状态时,将所述TCP客户端接收缓存队列中的每一所述网络数据均作为一帧数据,逐帧发送所有所述网络数据。
进一步地,所述使所述串口设备逐帧发送所有所述网络数据,具体包括:
在所述串口设备发送任一所述网络数据后,监测所述串口设备是否成功发送所述网络数据;
在所述串口设备未成功发送所述网络数据时,销毁所述串口设备的通信句柄,生成串口发送失败记录。
第二方面,本发明一实施例提供一种TCP-串口通信透传的装置,包括:
TCP-串口通信通道建立模块,用于根据TCP客户端的通信套接字和串口设备的通信句柄,建立所述TCP客户端和所述串口设备的通信通道,得到TCP-串口通信通道;
串口数据传输模块,用于基于所述TCP-串口通信通道,将所述串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使所述TCP客户端逐帧发送所有所述串口数据;
TCP-TCP通信通道建立模块,用于根据TCP服务端的通信套接字和所述TCP客户端的通信句柄,建立所述TCP服务端和所述TCP客户端的通信通道,得到TCP-TCP通信通道;
网络数据接收模块,用于基于所述TCP-TCP通信通道,将所述TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;
网络数据传输模块,用于基于所述TCP-串口通信通道,将所述TCP客户端接收缓存队列中的所有所述网络数据发送至所述串口设备,使所述串口设备逐帧发送所有所述网络数据。
相比于现有技术,本发明的实施例,具有如下有益效果:
通过根据TCP客户端的通信套接字和串口设备的通信句柄,建立TCP客户端和串口设备的通信通道,得到TCP-串口通信通道;基于TCP-串口通信通道,将串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使TCP客户端逐帧发送所有串口数据;根据TCP服务端的通信套接字和TCP客户端的通信句柄,建立TCP服务端和TCP客户端的通信通道,得到TCP-TCP通信通道;基于TCP-TCP通信通道,将TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;基于TCP-串口通信通道,将TCP客户端接收缓存队列中的所有网络数据发送至串口设备,使串口设备逐帧发送所有网络数据,能够在TCP客户端和串口设备之间实现网络数据和串口数据的双向透传。
附图说明
图1为本发明第一实施例中的一种TCP-串口通信透传的方法的流程示意图;
图2为本发明第一实施例中示例的TCP客户端通信套接字创建线程的数据流图;
图3为本发明第一实施例中示例的串口设备通信句柄创建和串口数据接收线程的数据流图;
图4为本发明第一实施例中示例的TCP服务端通信套接字创建线程的数据流图;
图5为本发明第一实施例中示例的串口数据保存线程的数据流图;
图6为本发明第一实施例中示例的TCP发送线程的数据流图;
图7为本发明第一实施例中示例的网络数据接收线程的数据流图;
图8为本发明第一实施例中示例的网络数据保存线程的数据流图;
图9为本发明第一实施例中示例的串口发送线程的数据流图;
图10为本发明第二实施例中的一种TCP-串口通信透传的装置的结构示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,文中的步骤编号,仅为了方便具体实施例的解释,不作为限定步骤执行先后顺序的作用。本实施例提供的方法可以由相关的终端设备执行,且下文均以TCP客户端的处理器作为执行主体为例进行说明。
如图1所示,第一实施例提供一种TCP-串口通信透传的方法,包括步骤S1~S5:
S1、根据TCP客户端的通信套接字和串口设备的通信句柄,建立TCP客户端和串口设备的通信通道,得到TCP-串口通信通道;
S2、基于TCP-串口通信通道,将串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使TCP客户端逐帧发送所有串口数据;
S3、根据TCP服务端的通信套接字和TCP客户端的通信句柄,建立TCP服务端和TCP客户端的通信通道,得到TCP-TCP通信通道;
S4、基于TCP-TCP通信通道,将TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;
S5、基于TCP-串口通信通道,将TCP客户端接收缓存队列中的所有网络数据发送至串口设备,使串口设备逐帧发送所有网络数据。
可以理解的是,TCP客户端和串口设备分别与TCP服务端连接。
作为示例性地,在步骤S1中,创建TCP客户端的通信套接字,例如运行如图2所示的TCP客户端通信套接字创建线程,创建TCP客户端的通信套接字,以及创建串口设备的通信句柄,例如运行如图3所示的串口设备通信句柄创建和串口数据接收线程,创建串口设备的通信句柄,根据TCP客户端的通信套接字和串口设备的通信句柄,建立TCP客户端和串口设备的通信通道,得到TCP-串口通信通道。
在步骤S2中,当监测到串口设备接收到串口数据时,基于TCP-串口通信通道,将串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使TCP客户端从TCP客户端发送缓存队列中逐帧读取所有串口数据进行TCP发送,从而逐帧发送所有串口数据。
在步骤S3中,创建TCP服务端的通信套接字,例如运行如图4所示的TCP服务端通信套接字创建线程,创建TCP服务端的通信套接字,以及创建TCP客户端的通信句柄,根据TCP服务端的通信套接字和TCP客户端的通信句柄,建立TCP服务端和TCP客户端的通信通道,得到TCP-TCP通信通道。
在步骤S4中,当监测到TCP服务端下发网络数据时,基于TCP-TCP通信通道,将TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列。
在步骤S5中,基于TCP-串口通信通道,将TCP客户端接收缓存队列中的所有网络数据发送至串口设备,使串口设备从TCP客户端接收缓存队列中逐帧读取所有网络数据进行串口发送,从而逐帧发送所有网络数据。
本实施例通过建立TCP-串口通信通道,基于TCP-串口通信通道,将串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使TCP客户端从TCP客户端发送缓存队列中逐帧读取所有串口数据进行TCP发送,以及基于TCP-串口通信通道,将TCP客户端接收缓存队列中的所有网络数据发送至串口设备,使串口设备从TCP客户端接收缓存队列中逐帧读取所有网络数据进行串口发送,能够在TCP客户端和串口设备之间实现网络数据和串口数据的双向透传,且其中对串口数据和网络数据先进行合包处理再进行数据透传,能够确保上位机接收到完整数据,避免出现因数据不完整影响协议解析的问题。
在优选的实施例当中,所述基于TCP-串口通信通道,将串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,具体包括:基于TCP-串口通信通道,定期监测串口设备的串口数据接收情况,以及分别检测TCP客户端的通信套接字和串口设备的通信句柄的状态;在串口设备在当前周期内接收到至少一个串口数据,且TCP客户端的通信套接字和串口设备的通信句柄均处于正常状态时,将串口设备在当前周期内接收的所有串口数据保存至TCP客户端发送缓存队列。
作为示例性地,假设以100毫秒为一个周期,运行如图3所示的串口设备通信句柄创建和串口数据接收线程,基于TCP-串口通信通道,定期监测串口设备的串口数据接收情况,以及分别检测TCP客户端的通信套接字和串口设备的通信句柄的状态,在串口设备在当前周期内接收到至少一个串口数据,且TCP客户端的通信套接字和串口设备的通信句柄均处于正常状态时,将串口设备在当前周期内接收的所有串口数据保存至TCP客户端发送缓存队列;在串口设备在当前周期内未接收到一个串口数据,或者TCP客户端的通信套接字和串口设备的通信句柄中任一个不处于正常状态时,等待下一周期执行串口数据接收操作。
本实施例通过分别检测TCP客户端的通信套接字和串口设备的通信句柄的状态来对TCP通信和串口通信进行保活处理,能够确保将串口设备在当前周期内接收的所有串口数据完整保存至TCP客户端发送缓存队列。
在优选的实施例当中,所述将串口设备在当前周期内接收的所有串口数据保存至TCP客户端发送缓存队列,具体包括:遍历串口设备在当前周期内接收的每一串口数据,判断当前串口数据的数据长度是否小于等于TCP客户端发送缓存队列中可存储数据的总数据长度;在当前串口数据的数据长度小于等于TCP客户端发送缓存队列中可存储数据的总数据长度时,将当前串口数据作为一帧数据,更新TCP客户端发送缓存队列中已存储数据的总数据帧数;判断TCP客户端发送缓存队列中已存储数据的总数据帧数是否小于TCP客户端发送缓存队列的最大数据帧数;在TCP客户端发送缓存队列中已存储数据的总数据帧数小于TCP客户端发送缓存队列的最大数据帧数时,将当前串口数据作为一帧数据保存至TCP客户端发送缓存队列,更新TCP客户端发送缓存队列中可存储数据的总数据长度。
作为示例性地,在获取到串口设备在当前周期内接收的所有串口数据时,运行如图5所示的串口数据保存线程,遍历串口设备在当前周期内接收的每一串口数据,以当前遍历的串口数据作为当前串口数据,判断当前串口数据的数据长度是否小于等于TCP客户端发送缓存队列中可存储数据的总数据长度,在当前串口数据的数据长度不小于等于TCP客户端发送缓存队列中可存储数据的总数据长度时,无法将当前串口数据作为一帧数据保存至TCP客户端发送缓存队列,可等待TCP客户端发送缓存队列释放存储空间,在当前串口数据的数据长度小于等于TCP客户端发送缓存队列中可存储数据的总数据长度时,将当前串口数据作为一帧数据,更新TCP客户端发送缓存队列中已存储数据的总数据帧数,进而判断TCP客户端发送缓存队列中已存储数据的总数据帧数是否小于TCP客户端发送缓存队列的最大数据帧数,在TCP客户端发送缓存队列中已存储数据的总数据帧数小于TCP客户端发送缓存队列的最大数据帧数时,将当前串口数据作为一帧数据保存至TCP客户端发送缓存队列,更新TCP客户端发送缓存队列中可存储数据的总数据长度,在TCP客户端发送缓存队列中已存储数据的总数据帧数不小于TCP客户端发送缓存队列的最大数据帧数时,将TCP客户端发送缓存队列中已存储数据的总数据帧数重置为0,将当前串口数据作为一帧数据保存至TCP客户端发送缓存队列。
本实施例考虑到TCP客户端发送缓存队列中可存储数据的总数据长度,将串口设备在当前周期内接收的所有串口数据逐帧保存至TCP客户端发送缓存队列,能够确保将串口设备在当前周期内接收的所有串口数据完整保存至TCP客户端发送缓存队列。
在优选的实施例当中,所述使TCP客户端逐帧发送所有串口数据,具体包括:通过TCP客户端,检测TCP客户端的通信套接字的状态;通过TCP客户端,在TCP客户端的通信套接字处于正常状态时,将TCP客户端发送缓存队列中的每一串口数据均作为一帧数据,逐帧发送所有串口数据。
作为示例性地,运行如图6所示的TCP发送线程,通过TCP客户端,检测TCP客户端的通信套接字的状态,在TCP客户端的通信套接字处于正常状态时,将TCP客户端发送缓存队列中的每一串口数据均作为一帧数据,从TCP客户端发送缓存队列中逐帧读取所有串口数据进行TCP发送,从而逐帧发送所有串口数据。
本实施例通过检测TCP客户端的通信套接字的状态来对TCP通信进行保活处理,能够确保TCP客户端完整发送串口设备在当前周期内接收的所有串口数据。
在优选的实施例当中,所述使TCP客户端逐帧发送所有串口数据,具体包括:在TCP客户端发送任一串口数据后,监测TCP客户端是否成功发送串口数据;在TCP客户端未成功发送串口数据时,销毁TCP客户端的通信套接字,生成TCP发送失败记录。
作为示例性地,运行如图6所示的TCP发送线程,在TCP客户端发送任一串口数据后,监测TCP客户端是否成功发送串口数据,在TCP客户端成功发送串口数据时,继续从TCP客户端发送缓存队列中读取下一帧串口数据进行TCP发送,在TCP客户端未成功发送串口数据时,销毁TCP客户端的通信套接字,生成TCP发送失败记录,以重新创建TCP客户端的通信套接字,重新发送串口数据。
本实施例通过监测TCP客户端的串口数据发送情况,能够确保TCP客户端完整发送串口设备在当前周期内接收的所有串口数据。
在优选的实施例当中,所述基于TCP-TCP通信通道,将TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列,具体包括:基于TCP-TCP通信通道,定期监测TCP客户端的网络数据接收情况,以及分别检测TCP服务端的通信套接字和TCP客户端的通信句柄的状态;在TCP客户端在当前周期内接收到至少一个网络数据,且TCP服务端的通信套接字和TCP客户端的通信句柄均处于正常状态时,将TCP客户端在当前周期内接收的所有网络数据保存至TCP客户端接收缓存队列。
作为示例性地,假设以100毫秒为一个周期,运行如图7所示的网络数据接收线程,基于TCP-TCP通信通道,定期监测TCP客户端的网络数据接收情况,以及分别检测TCP服务端的通信套接字和TCP客户端的通信句柄的状态,在TCP客户端在当前周期内接收到至少一个网络数据,且TCP服务端的通信套接字和TCP客户端的通信句柄均处于正常状态时,将TCP客户端在当前周期内接收的所有网络数据保存至TCP客户端接收缓存队列;在TCP客户端在当前周期内未接收到一个网络数据,或者TCP服务端的通信套接字和TCP客户端的通信句柄中任一个不处于正常状态时,等待下一周期执行网络数据接收操作。
本实施例通过分别检测TCP服务端的通信套接字和TCP客户端的通信句柄的状态来对TCP通信进行保活处理,能够确保将TCP客户端在当前周期内接收的所有网络数据完整保存至TCP客户端接收缓存队列。
在优选的实施例当中,所述将TCP客户端在当前周期内接收的所有网络数据保存至TCP客户端接收缓存队列,具体包括:遍历TCP客户端在当前周期内接收的每一网络数据,判断当前网络数据的数据长度是否小于等于TCP客户端接收缓存队列中可存储数据的总数据长度;在当前网络数据的数据长度小于等于TCP客户端接收缓存队列中可存储数据的总数据长度时,将当前网络数据作为一帧数据,更新TCP客户端接收缓存队列中已存储数据的总数据帧数;判断TCP客户端接收缓存队列中已存储数据的总数据帧数是否小于TCP客户端接收缓存队列的最大数据帧数;在TCP客户端接收缓存队列中已存储数据的总数据帧数小于TCP客户端接收缓存队列的最大数据帧数时,将当前网络数据作为一帧数据保存至TCP客户端接收缓存队列,更新TCP客户端接收缓存队列中可存储数据的总数据长度。
作为示例性地,在获取到TCP客户端在当前周期内接收的所有网络数据时,运行如图8所示的网络数据保存线程,遍历TCP客户端在当前周期内接收的每一网络数据,以当前遍历的网络数据作为当前网络数据,判断当前网络数据的数据长度是否小于等于TCP客户端接收缓存队列中可存储数据的总数据长度,在当前网络数据的数据长度不小于等于TCP客户端接收缓存队列中可存储数据的总数据长度时,无法将当前网络数据作为一帧数据保存至TCP客户端接收缓存队列,可等待TCP客户端接收缓存队列释放存储空间,在当前网络数据的数据长度小于等于TCP客户端接收缓存队列中可存储数据的总数据长度时,将当前网络数据作为一帧数据,更新TCP客户端接收缓存队列中已存储数据的总数据帧数,进而判断TCP客户端接收缓存队列中已存储数据的总数据帧数是否小于TCP客户端接收缓存队列的最大数据帧数,在TCP客户端接收缓存队列中已存储数据的总数据帧数小于TCP客户端接收缓存队列的最大数据帧数时,将当前网络数据作为一帧数据保存至TCP客户端接收缓存队列,更新TCP客户端接收缓存队列中可存储数据的总数据长度,在TCP客户端接收缓存队列中已存储数据的总数据帧数不小于TCP客户端接收缓存队列的最大数据帧数时,将TCP客户端接收缓存队列中已存储数据的总数据帧数重置为0,将当前网络数据作为一帧数据保存至TCP客户端接收缓存队列。
本实施例考虑到TCP客户端接收缓存队列中可存储数据的总数据长度,将TCP客户端在当前周期内接收的所有网络数据逐帧保存至TCP客户端接收缓存队列,能够确保将TCP客户端在当前周期内接收的所有网络数据完整保存至TCP客户端接收缓存队列。
在优选的实施例当中,所述使串口设备逐帧发送所有网络数据,具体包括:通过串口设备,检测串口设备的通信句柄的状态;通过串口设备,在串口设备的通信句柄处于正常状态时,将TCP客户端接收缓存队列中的每一网络数据均作为一帧数据,逐帧发送所有网络数据。
作为示例性地,运行如图9所示的串口发送线程,通过串口设备,检测串口设备的通信句柄的状态,在串口设备的通信句柄处于正常状态时,将TCP客户端接收缓存队列中的每一网络数据均作为一帧数据,从TCP客户端接收缓存队列中逐帧读取所有网络数据进行串口发送,从而逐帧发送所有网络数据。
本实施例通过检测串口设备的通信句柄的状态来对串口通信进行保活处理,能够确保串口设备完整发送TCP客户端在当前周期内接收的所有网络数据。
在优选的实施例当中,所述使串口设备逐帧发送所有网络数据,具体包括:在串口设备发送任一网络数据后,监测串口设备是否成功发送网络数据;在串口设备未成功发送网络数据时,销毁串口设备的通信句柄,生成串口发送失败记录。
作为示例性地,运行如图9所示的串口发送线程,在串口设备发送任一网络数据后,监测串口设备是否成功发送网络数据,在串口设备成功发送网络数据时,继续从TCP客户端接收缓存队列中读取下一帧网络数据进行串口发送,在串口设备未成功发送网络数据时,销毁串口设备的通信句柄,生成串口发送失败记录,以重新创建串口设备的通信句柄,重新发送网络数据。
本实施例通过监测串口设备的网络数据发送情况,能够确保串口设备完整发送TCP客户端在当前周期内接收的所有网络数据。
基于与第一实施例相同的发明构思,第二实施例提供如图10所示的一种TCP-串口通信透传的装置,包括:TCP-串口通信通道建立模块21,用于根据TCP客户端的通信套接字和串口设备的通信句柄,建立TCP客户端和串口设备的通信通道,得到TCP-串口通信通道;串口数据传输模块22,用于基于TCP-串口通信通道,将串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使TCP客户端逐帧发送所有串口数据;TCP-TCP通信通道建立模块23,用于根据TCP服务端的通信套接字和TCP客户端的通信句柄,建立TCP服务端和TCP客户端的通信通道,得到TCP-TCP通信通道;网络数据接收模块24,用于基于TCP-TCP通信通道,将TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;网络数据传输模块25,用于基于TCP-串口通信通道,将TCP客户端接收缓存队列中的所有网络数据发送至串口设备,使串口设备逐帧发送所有网络数据。
在优选的实施例当中,串口数据传输模块22,包括:串口数据保存单元,用于:基于TCP-串口通信通道,定期监测串口设备的串口数据接收情况,以及分别检测TCP客户端的通信套接字和串口设备的通信句柄的状态;在串口设备在当前周期内接收到至少一个串口数据,且TCP客户端的通信套接字和串口设备的通信句柄均处于正常状态时,将串口设备在当前周期内接收的所有串口数据保存至TCP客户端发送缓存队列。
在优选的实施例当中,串口数据保存单元,具体用于:遍历串口设备在当前周期内接收的每一串口数据,判断当前串口数据的数据长度是否小于等于TCP客户端发送缓存队列中可存储数据的总数据长度;在当前串口数据的数据长度小于等于TCP客户端发送缓存队列中可存储数据的总数据长度时,将当前串口数据作为一帧数据,更新TCP客户端发送缓存队列中已存储数据的总数据帧数;判断TCP客户端发送缓存队列中已存储数据的总数据帧数是否小于TCP客户端发送缓存队列的最大数据帧数;在TCP客户端发送缓存队列中已存储数据的总数据帧数小于TCP客户端发送缓存队列的最大数据帧数时,将当前串口数据作为一帧数据保存至TCP客户端发送缓存队列,更新TCP客户端发送缓存队列中可存储数据的总数据长度。
在优选的实施例当中,串口数据传输模块22,包括:串口数据发送单元,用于:通过TCP客户端,检测TCP客户端的通信套接字的状态;通过TCP客户端,在TCP客户端的通信套接字处于正常状态时,将TCP客户端发送缓存队列中的每一串口数据均作为一帧数据,逐帧发送所有串口数据。
在优选的实施例当中,串口数据发送单元,具体用于:在TCP客户端发送任一串口数据后,监测TCP客户端是否成功发送串口数据;在TCP客户端未成功发送串口数据时,销毁TCP客户端的通信套接字,生成TCP发送失败记录。
在优选的实施例当中,网络数据接收模块24,包括:网络数据保存单元,用于:基于TCP-TCP通信通道,定期监测TCP客户端的网络数据接收情况,以及分别检测TCP服务端的通信套接字和TCP客户端的通信句柄的状态;在TCP客户端在当前周期内接收到至少一个网络数据,且TCP服务端的通信套接字和TCP客户端的通信句柄均处于正常状态时,将TCP客户端在当前周期内接收的所有网络数据保存至TCP客户端接收缓存队列。
在优选的实施例当中,网络数据保存单元,具体用于:遍历TCP客户端在当前周期内接收的每一网络数据,判断当前网络数据的数据长度是否小于等于TCP客户端接收缓存队列中可存储数据的总数据长度;在当前网络数据的数据长度小于等于TCP客户端接收缓存队列中可存储数据的总数据长度时,将当前网络数据作为一帧数据,更新TCP客户端接收缓存队列中已存储数据的总数据帧数;判断TCP客户端接收缓存队列中已存储数据的总数据帧数是否小于TCP客户端接收缓存队列的最大数据帧数;在TCP客户端接收缓存队列中已存储数据的总数据帧数小于TCP客户端接收缓存队列的最大数据帧数时,将当前网络数据作为一帧数据保存至TCP客户端接收缓存队列,更新TCP客户端接收缓存队列中可存储数据的总数据长度。
在优选的实施例当中,网络数据接收模块24,包括:网络数据发送单元,用于:通过串口设备,检测串口设备的通信句柄的状态;通过串口设备,在串口设备的通信句柄处于正常状态时,将TCP客户端接收缓存队列中的每一网络数据均作为一帧数据,逐帧发送所有网络数据。
在优选的实施例当中,网络数据发送单元,具体用于:在串口设备发送任一网络数据后,监测串口设备是否成功发送网络数据;在串口设备未成功发送网络数据时,销毁串口设备的通信句柄,生成串口发送失败记录。
综上所述,实施本发明的实施例,具有如下有益效果:
通过根据TCP客户端的通信套接字和串口设备的通信句柄,建立TCP客户端和串口设备的通信通道,得到TCP-串口通信通道;基于TCP-串口通信通道,将串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使TCP客户端逐帧发送所有串口数据;根据TCP服务端的通信套接字和TCP客户端的通信句柄,建立TCP服务端和TCP客户端的通信通道,得到TCP-TCP通信通道;基于TCP-TCP通信通道,将TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;基于TCP-串口通信通道,将TCP客户端接收缓存队列中的所有网络数据发送至串口设备,使串口设备逐帧发送所有网络数据,能够在TCP客户端和串口设备之间实现网络数据和串口数据的双向透传。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
本领域普通技术人员可以理解实现上述实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

Claims (10)

1.一种TCP-串口通信透传的方法,其特征在于,包括:
根据TCP客户端的通信套接字和串口设备的通信句柄,建立所述TCP客户端和所述串口设备的通信通道,得到TCP-串口通信通道;
基于所述TCP-串口通信通道,将所述串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使所述TCP客户端逐帧发送所有所述串口数据;
根据TCP服务端的通信套接字和所述TCP客户端的通信句柄,建立所述TCP服务端和所述TCP客户端的通信通道,得到TCP-TCP通信通道;
基于所述TCP-TCP通信通道,将所述TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;
基于所述TCP-串口通信通道,将所述TCP客户端接收缓存队列中的所有所述网络数据发送至所述串口设备,使所述串口设备逐帧发送所有所述网络数据。
2.如权利要求1所述的TCP-串口通信透传的方法,其特征在于,所述基于所述TCP-串口通信通道,将所述串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,具体包括:
基于所述TCP-串口通信通道,定期监测所述串口设备的串口数据接收情况,以及分别检测所述TCP客户端的通信套接字和所述串口设备的通信句柄的状态;
在所述串口设备在当前周期内接收到至少一个所述串口数据,且所述TCP客户端的通信套接字和所述串口设备的通信句柄均处于正常状态时,将所述串口设备在当前周期内接收的所有所述串口数据保存至所述TCP客户端发送缓存队列。
3.如权利要求2所述的TCP-串口通信透传的方法,其特征在于,所述将所述串口设备在当前周期内接收的所有所述串口数据保存至所述TCP客户端发送缓存队列,具体包括:
遍历所述串口设备在当前周期内接收的每一所述串口数据,判断当前串口数据的数据长度是否小于等于所述TCP客户端发送缓存队列中可存储数据的总数据长度;
在所述当前串口数据的数据长度小于等于所述TCP客户端发送缓存队列中可存储数据的总数据长度时,将所述当前串口数据作为一帧数据,更新所述TCP客户端发送缓存队列中已存储数据的总数据帧数;
判断所述TCP客户端发送缓存队列中已存储数据的总数据帧数是否小于所述TCP客户端发送缓存队列的最大数据帧数;
在所述TCP客户端发送缓存队列中已存储数据的总数据帧数小于所述TCP客户端发送缓存队列的最大数据帧数时,将所述当前串口数据作为一帧数据保存至所述TCP客户端发送缓存队列,更新所述TCP客户端发送缓存队列中可存储数据的总数据长度。
4.如权利要求1所述的TCP-串口通信透传的方法,其特征在于,所述使所述TCP客户端逐帧发送所有所述串口数据,具体包括:
通过所述TCP客户端,检测所述TCP客户端的通信套接字的状态;
通过所述TCP客户端,在所述TCP客户端的通信套接字处于正常状态时,将所述TCP客户端发送缓存队列中的每一所述串口数据均作为一帧数据,逐帧发送所有所述串口数据。
5.如权利要求4所述的TCP-串口通信透传的方法,其特征在于,所述使所述TCP客户端逐帧发送所有所述串口数据,具体包括:
在所述TCP客户端发送任一所述串口数据后,监测所述TCP客户端是否成功发送所述串口数据;
在所述TCP客户端未成功发送所述串口数据时,销毁所述TCP客户端的通信套接字,生成TCP发送失败记录。
6.如权利要求1所述的TCP-串口通信透传的方法,其特征在于,所述基于所述TCP-TCP通信通道,将所述TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列,具体包括:
基于所述TCP-TCP通信通道,定期监测所述TCP客户端的网络数据接收情况,以及分别检测所述TCP服务端的通信套接字和所述TCP客户端的通信句柄的状态;
在所述TCP客户端在当前周期内接收到至少一个所述网络数据,且所述TCP服务端的通信套接字和所述TCP客户端的通信句柄均处于正常状态时,将所述TCP客户端在当前周期内接收的所有所述网络数据保存至所述TCP客户端接收缓存队列。
7.如权利要求6所述的TCP-串口通信透传的方法,其特征在于,所述将所述TCP客户端在当前周期内接收的所有所述网络数据保存至所述TCP客户端接收缓存队列,具体包括:
遍历所述TCP客户端在当前周期内接收的每一所述网络数据,判断当前网络数据的数据长度是否小于等于所述TCP客户端接收缓存队列中可存储数据的总数据长度;
在所述当前网络数据的数据长度小于等于所述TCP客户端接收缓存队列中可存储数据的总数据长度时,将所述当前网络数据作为一帧数据,更新所述TCP客户端接收缓存队列中已存储数据的总数据帧数;
判断所述TCP客户端接收缓存队列中已存储数据的总数据帧数是否小于所述TCP客户端接收缓存队列的最大数据帧数;
在所述TCP客户端接收缓存队列中已存储数据的总数据帧数小于所述TCP客户端接收缓存队列的最大数据帧数时,将所述当前网络数据作为一帧数据保存至所述TCP客户端接收缓存队列,更新所述TCP客户端接收缓存队列中可存储数据的总数据长度。
8.如权利要求1所述的TCP-串口通信透传的方法,其特征在于,所述使所述串口设备逐帧发送所有所述网络数据,具体包括:
通过所述串口设备,检测所述串口设备的通信句柄的状态;
通过所述串口设备,在所述串口设备的通信句柄处于正常状态时,将所述TCP客户端接收缓存队列中的每一所述网络数据均作为一帧数据,逐帧发送所有所述网络数据。
9.如权利要求8所述的TCP-串口通信透传的方法,其特征在于,所述使所述串口设备逐帧发送所有所述网络数据,具体包括:
在所述串口设备发送任一所述网络数据后,监测所述串口设备是否成功发送所述网络数据;
在所述串口设备未成功发送所述网络数据时,销毁所述串口设备的通信句柄,生成串口发送失败记录。
10.一种TCP-串口通信透传的装置,其特征在于,包括:
TCP-串口通信通道建立模块,用于根据TCP客户端的通信套接字和串口设备的通信句柄,建立所述TCP客户端和所述串口设备的通信通道,得到TCP-串口通信通道;
串口数据传输模块,用于基于所述TCP-串口通信通道,将所述串口设备接收的所有串口数据保存至TCP客户端发送缓存队列,使所述TCP客户端逐帧发送所有所述串口数据;
TCP-TCP通信通道建立模块,用于根据TCP服务端的通信套接字和所述TCP客户端的通信句柄,建立所述TCP服务端和所述TCP客户端的通信通道,得到TCP-TCP通信通道;
网络数据接收模块,用于基于所述TCP-TCP通信通道,将所述TCP服务端下发的所有网络数据保存至TCP客户端接收缓存队列;
网络数据传输模块,用于基于所述TCP-串口通信通道,将所述TCP客户端接收缓存队列中的所有所述网络数据发送至所述串口设备,使所述串口设备逐帧发送所有所述网络数据。
CN202211743533.XA 2022-12-30 2022-12-30 一种tcp-串口通信透传的方法及装置 Pending CN116112536A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211743533.XA CN116112536A (zh) 2022-12-30 2022-12-30 一种tcp-串口通信透传的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211743533.XA CN116112536A (zh) 2022-12-30 2022-12-30 一种tcp-串口通信透传的方法及装置

Publications (1)

Publication Number Publication Date
CN116112536A true CN116112536A (zh) 2023-05-12

Family

ID=86255559

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211743533.XA Pending CN116112536A (zh) 2022-12-30 2022-12-30 一种tcp-串口通信透传的方法及装置

Country Status (1)

Country Link
CN (1) CN116112536A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117544609A (zh) * 2024-01-09 2024-02-09 广州美凯信息技术股份有限公司 一种基于kvm控制的串口透传系统的数据透传方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101800652A (zh) * 2010-02-04 2010-08-11 深圳市金宏威实业发展有限公司 串口与以太网方式转换的方法、系统及工业以太网交换机
CN103078871A (zh) * 2013-01-18 2013-05-01 武汉迈威实达软件有限公司 一种串口以太网协议转换方法
CN103095703A (zh) * 2013-01-11 2013-05-08 瑞斯康达科技发展股份有限公司 一种实现网络与串口数据交互的方法、设备及系统
CN110677277A (zh) * 2019-09-02 2020-01-10 深圳中兴网信科技有限公司 数据处理方法、装置、服务器和计算机可读存储介质
CN114237937A (zh) * 2021-12-17 2022-03-25 威创集团股份有限公司 一种多线程的数据传输方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101800652A (zh) * 2010-02-04 2010-08-11 深圳市金宏威实业发展有限公司 串口与以太网方式转换的方法、系统及工业以太网交换机
CN103095703A (zh) * 2013-01-11 2013-05-08 瑞斯康达科技发展股份有限公司 一种实现网络与串口数据交互的方法、设备及系统
CN103078871A (zh) * 2013-01-18 2013-05-01 武汉迈威实达软件有限公司 一种串口以太网协议转换方法
CN110677277A (zh) * 2019-09-02 2020-01-10 深圳中兴网信科技有限公司 数据处理方法、装置、服务器和计算机可读存储介质
CN114237937A (zh) * 2021-12-17 2022-03-25 威创集团股份有限公司 一种多线程的数据传输方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张会铭;雷志华;: "基于Windows服务的网口与串口通信软件设计", 微计算机信息, no. 12 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117544609A (zh) * 2024-01-09 2024-02-09 广州美凯信息技术股份有限公司 一种基于kvm控制的串口透传系统的数据透传方法
CN117544609B (zh) * 2024-01-09 2024-04-02 广州美凯信息技术股份有限公司 一种基于kvm控制的串口透传系统的数据透传方法

Similar Documents

Publication Publication Date Title
CN108449239B (zh) 心跳包检测方法、装置、设备和存储介质
US6304905B1 (en) Detecting an active network node using an invalid protocol option
US7532577B2 (en) Managing transmission control protocol (TCP) connections
CN106254179B (zh) 一种心跳包异步控制方法及装置
JP2002510412A (ja) サーバコンピュータからクライエントコンピュータへのデータダウンロードプロセス及び装置
CN110704265A (zh) 一种基于Modbus协议的预警信息主动上报方法及系统
CN111740847B (zh) 一种基于fpga的高速网络数据传输系统及方法
CN116112536A (zh) 一种tcp-串口通信透传的方法及装置
CN113489750A (zh) 数据传输方法、数据处理方法及相关设备
CN107508916B (zh) 用于智能机器人的服务器链接管理方法
CN111711680A (zh) 基于udp协议的文件断点续传方法及装置
CN103929286A (zh) 数据传输控制方法和装置
CN105407149A (zh) 消息推送方法及装置
CN113986501A (zh) 实时数据库api无中断调用方法、系统、存储介质及服务器
CN112261142B (zh) 一种rdma网络的数据重传方法、装置及fpga
CN110266446B (zh) 一种基于sack模式调整乱序时长的方法和装置
CN115604052B (zh) 车辆通讯交互方法、系统及电子设备
CN116471342A (zh) 一种多物联网设备多协议接入系统及方法
JP4882537B2 (ja) タイマ連携によるリクエスト制御方法
CN107733979B (zh) 数据推送方法、服务器及系统
CN114500243B (zh) 数据通信方法、装置、计算机可读介质及电子设备
CN114338477A (zh) 一种通信链路监控方法、装置、设备及存储介质
US20170318063A1 (en) System and method for reliable messaging between application sessions across volatile networking conditions
CN114125021A (zh) 一种基于Netty消息驱动的终端信息发布系统
CN113132477A (zh) 一种浏览器终端与设备的实时传输交互方法及系统

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230721

Address after: 510000 room 1301, No. 37, Jinlong street, Xiangjiang financial and business center, Nansha District, Guangzhou City, Guangdong Province (office only)

Applicant after: Guangzhou Tongze Kangwei Intelligent Technology Co.,Ltd.

Address before: Room 1304, No. 37, Jinlong Road, Nansha Street, Nansha District, Guangzhou, Guangdong 510000 (office only)

Applicant before: Guangzhou Tongkang Chuangzhi Software Co.,Ltd.

CB02 Change of applicant information
CB02 Change of applicant information

Address after: 510000 room 1301, No. 37, Jinlong street, Xiangjiang financial and business center, Nansha District, Guangzhou City, Guangdong Province (office only)

Applicant after: Guangzhou Tongze Kangwei Technology Co.,Ltd.

Address before: 510000 room 1301, No. 37, Jinlong street, Xiangjiang financial and business center, Nansha District, Guangzhou City, Guangdong Province (office only)

Applicant before: Guangzhou Tongze Kangwei Intelligent Technology Co.,Ltd.