CN110798518A - 一种数据传输方法及装置、终端设备、存储介质 - Google Patents
一种数据传输方法及装置、终端设备、存储介质 Download PDFInfo
- Publication number
- CN110798518A CN110798518A CN201911023474.7A CN201911023474A CN110798518A CN 110798518 A CN110798518 A CN 110798518A CN 201911023474 A CN201911023474 A CN 201911023474A CN 110798518 A CN110798518 A CN 110798518A
- Authority
- CN
- China
- Prior art keywords
- data
- packet
- length
- target
- target data
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种数据传输方法及装置、终端设备、存储介质,包括:确定第一数据缓冲区中与预设字符串一致的数据为目标数据包的起始标识;根据第一数据缓冲区中目标数据包的起始标识的数据位置以及起始标识的数据位置与目标数据包的包长度的数据位置的预设位置关系确定包长度的数据位置;根据包长度的数据位置读取目标数据包的包长度,进而根据包长度确定目标数据包的数据总长度;若第一数据缓冲区中的数据长度大于等于目标数据包的数据总长度,则根据目标数据包的起始标识和数据总长度提取目标数据包;将目标数据包发送给第一设备端。采用本申请,有效解决数据传输过程中数据存在的粘包、拆包问题,确保数据在整个传输过程中的完整性。
Description
技术领域
本申请涉及通信领域,尤其涉及一种数据传输方法及装置、终端设备、存储介质。
背景技术
数据传输过程一般为发送方发一帧请求指令,之后接收一帧回复数据,但当发送流控帧后,默认是按顺序收多条回复数据。由于指令一般是短小帧,而通信过程中TCP协议(传输控制协议)默认发送大包数据,因此数据在网络传输过程中存在粘包、拆包的可能性,从而导致接收方无法识别该指令,造成回复数据错误或者数据传输断线。
目前,对于发送方导致的粘包、拆包现象,可以通过编程时采用TCP提供的强制数据立即传送的操作指令push来避免等待发送缓冲区中数据满了后再将数据发送出去;对于接收方导致的粘包、拆包现象,可以由接收方将一包数据按结构字段,人为控制分多次接收,最后合并来避免粘包、拆包。虽然现有技术可以避免远程诊断过程中数据粘包、拆包情况的发生,但是并不能100%保证发送给接收方的指令的完整性。
发明内容
本申请实施例提供一种数据传输方法及装置、服务器、存储介质,以期确保每次发送给车载设备端和技师操作端的数据都是完整指令,达到正确远程诊断的目的。
第一方面,为本申请实施例提供了一种数据传输方法,包括:
遍历第一数据缓冲区的数据,判断所述第一数据缓冲区的数据中是否存在预设字符串,若所述第一数据缓冲区的数据中存在所述预设字符串,则确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识;
根据所述第一数据缓冲区中所述目标数据包的起始标识的数据位置以及所述目标数据包的起始标识的数据位置与所述目标数据包的包长度的数据位置的预设位置关系确定所述目标数据包的包长度的数据位置;
根据所述目标数据包的包长度的数据位置读取所述目标数据包的包长度,进而根据所述目标数据包的包长度确定所述目标数据包的数据总长度;
判断所述第一数据缓冲区中的数据长度是否大于等于所述目标数据包的数据总长度,若所述第一数据缓冲区中的数据长度大于等于所述目标数据包的数据总长度,则根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包;
将所述目标数据包发送给第一设备端。
可选的,所述遍历第一数据缓冲区之前,包括:
接收第二设备端发送的数据,并将所述第二设备端发送的数据存储在第二数据缓冲区;
将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
可选的,所述遍历第一数据缓冲区的数据之前,包括:
判断所述第一数据缓冲区中数据长度是否大于等于第一预设长度阈值,若所述第一数据缓冲区中数据长度大于等于所述第一预设长度阈值,则遍历所述第一数据缓冲区的数据。
可选的,所述根据所述目标数据包的包长度确定所述目标数据包的数据总长度,包括:
计算所述包长度与第二预设长度值的和,得到所述目标数据包的数据总长度。
可选的,所述将所述目标数据包发送给第一设备端之后,包括:
将所述目标数据包在所述第一数据缓冲区中对应的数据从所述第一数据缓冲区中清除。
可选的,所述接收第二设备端发送的数据,包括:
根据套接字socket参数建立通信连接后,通过所述socket通信连接接收所述第二设备端发送的数据,并在所述socket通信连接结束后,将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
可选的,所述第一数据缓冲区的数据为诊断端发送的诊断数据,所述诊断数据包括诊断请求指令或者操作控制指令,所述诊断请求指令用于请求用户端允许所述诊断端获取第一设备端故障数据,所述操作控制指令用于控制第一设备端控制单元执行相应的操作。
可选的,所述第一数据缓冲区的数据为用户端发送的故障数据,所述故障数据包括故障码,所述故障码被所述第一设备端用于分析形成操作控制指令。
第二方面,为本申请实施例提供了一种数据传输装置,包括:
第一确定单元,用于遍历第一数据缓冲区的数据,判断所述第一数据缓冲区的数据中是否存在预设字符串,若所述第一数据缓冲区的数据中存在所述预设字符串,则确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识;
第二确定单元,用于根据所述第一数据缓冲区中所述目标数据包的起始标识的数据位置以及所述目标数据包的起始标识的数据位置与所述目标数据包的包长度的数据位置的预设位置关系确定所述目标数据包的包长度的数据位置;
第三确定单元,用于根据所述目标数据包的包长度的数据位置读取所述目标数据包的包长度,进而根据所述目标数据包的包长度确定所述目标数据包的数据总长度;
判断提取单元,用于判断所述第一数据缓冲区中的数据长度是否大于等于所述目标数据包的数据总长度,若所述第一数据缓冲区中的数据长度大于等于所述目标数据包的数据总长度,则根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包;
发送单元,用于将所述目标数据包发送给第一设备端。
其中,所述第一数据缓冲区的数据为诊断端发送的诊断数据,所述诊断数据包括诊断请求指令或者操作控制指令,所述诊断请求指令用于请求用户端允许所述诊断端获取第一设备端故障数据,所述操作控制指令用于控制第一设备端控制单元执行相应的操作。
其中,所述第一数据缓冲区的数据为用户端发送的故障数据,所述故障数据包括故障码,所述故障码被所述第一设备端用于生成操作控制指令。
可选的,所述装置还包括:
存储拷贝单元,用于接收第二设备端发送的数据,并将所述第二设备端发送的数据存储在第二数据缓冲区;
存储拷贝单元,用于将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
可选的,所述装置还包括:
判断单元,用于判断所述第一数据缓冲区中数据长度是否大于等于第一预设长度阈值,若所述第一数据缓冲区中数据长度大于等于所述第一预设长度阈值,则遍历所述第一数据缓冲区的数据。
可选的,所述第三确定单元,具体用于计算所述包长度与第二预设长度值的和,得到所述目标数据包的数据总长度。
可选的,所述装置还包括:
清除单元,用于将所述目标数据包在所述第一数据缓冲区中对应的数据从所述第一数据缓冲区中清除。
可选的,所述存储拷贝单元,具体用于根据套接字socket参数建立通信连接后,通过所述socket通信连接接收所述第二设备端发送的数据,并在所述socket通信连接结束后,将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
第三方面,为本申请实施例提供了一种终端设备,包括处理器、存储器和收发器,所述处理器、所述存储器和所述收发器相互连接,其中,所述存储器用于存储支持所述电子设备执行上述网络数据处理方法的计算机程序,所述计算机程序包括程序指令;所述处理器被配置用于调用所述程序指令,执行如上述本申请实施例一方面中所述的数据传输方法。
第四方面,为本申请实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令;所述程序指令当被处理器执行时使所述处理器执行如本申请实施例一方面中所述的数据传输方法。
在本申请实施例中,终端设备遍历第一数据缓冲区的数据,判断第一数据缓冲区的数据中是否存在预设字符串,若第一数据缓冲区的数据中存在预设字符串,则确定第一数据缓冲区中与预设字符串一致的数据为目标数据包的起始标识;根据第一数据缓冲区中目标数据包的起始标识的数据位置以及目标数据包的起始标识的数据位置与目标数据包的包长度的数据位置的预设位置关系确定目标数据包的包长度的数据位置;根据目标数据包的包长度的数据位置读取目标数据包的包长度,进而根据目标数据包的包长度确定目标数据包的数据总长度;判断第一数据缓冲区中的数据长度是否大于等于目标数据包的数据总长度,若第一数据缓冲区中的数据长度大于等于目标数据包的数据总长度,则根据目标数据包的起始标识和目标数据包的数据总长度提取得到目标数据包;将目标数据包发送给第一设备端。由于本申请中终端设备发送的目标数据包是完整指令,因此可以有效解决数据传输过程中数据存在的粘包、拆包问题,保证发给第一设备端的指令的完整性,避免第一设备端无法识别指令造成回复数据错误或者数据传输断线的情况,确保数据在整个传输过程中的完整性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据传输方法的场景示意图;
图2是本申请实施例提供的一种数据传输方法的流程示意图;
图3是本申请实施例提供的另一种数据传输方法的场景示意图;
图4是本申请实施例提供的另一种数据传输方法的流程示意图;
图5是本申请实施例提供的一种数据传输装置的结构示意图;
图6是本申请实施例提供的一种终端设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,是本申请实施例提供的一种数据传输方法的场景示意图。如图1所示,在车辆出现故障后,诊断端101向用户端102发送诊断请求指令,用于向用户端102请求获取车载设备端104的故障数据,用户端102通过诊断接头103获取车载设备端104的传感器数据(如喷油器压力值、发动机转速等),并通过故障分析算法对传感器数据进行分析得到故障码,之后将故障码发送给诊断端101,诊断端101将故障码解析为相应的故障描述文字,之后由诊断接头105将故障描述文字发送给技师操作端106,技师人员通过技师操作端106显示的故障描述文字输入相应的故障解决方案,技师操作端106将故障解决方案通过诊断接头105发送给诊断端101,诊断端101将故障解决方案解析为操作控制指令,并将操作控制指令发送给用户端102,之后再经过诊断接头103将操作控制指令发送给车载设备端控制单元,以使车载设备端控制单元执行相应的操作控制指令。其中,图1中的103和105均为同一功能的诊断接头,用于收发数据。由于整个远程车辆诊断过程中用户端102发送给诊断端101的故障数据(故障码)以及诊断端101发送给用户端102的诊断数据(诊断请求指令或者操作控制指令)均是完整指令,从而避免远程诊断过程中由于指令的不完整性(数据在网络过程中出现粘包、拆包情况)导致出现回复数据错误或者诊断断线的情况,提高远程诊断的准确度。
本申请涉及的车载设备端控制单元可以包括喷油器、点火线圈、汽油泵、冷却风扇电机、空调系统、故障报警灯中的一项或者多项。
本申请涉及的用户端、诊断端或技师操作端可以包括手持终端、笔记本电脑、个人数字助理(personal digital assistant,PDA)电脑、平板型电脑、膝上型电脑(laptopcomputer)、机器类型通信(machine type communication,MTC)终端或是其他设备。
本发明申请中的方法实施例均以终端设备为执行主体进行介绍。
请参见图2,是本申请实施例针对上述图1所示的场景示意图提供的一种网络数据处理方法的流程示意图。如图2所示,该方法实施例包括如下步骤:
S101,遍历第一数据缓冲区的数据,若所述第一数据缓冲区的数据中存在预设字符串,则确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识。
在可选的实施例中,终端设备遍历第一数据缓冲区的数据,判断所述第一数据缓冲区的数据中是否存在预设字符串,若所述第一数据缓冲区的数据中存在所述预设字符串,则确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识。
其中,终端设备可以为用户端或者诊断端。第一数据缓冲区的数据格式可以包括:起始标识+目标地址+源地址+包长度+计数器+命令字+数据区+包检验,起始标识表示一条完整指令的起始位置,如0x55 0xAA;目标地址表示数据发送后需要到达的网络中的唯一地址,如0xF0;源地址表示数据发送设备在网络中的唯一地址,如0xF8;包长度可以包括数据格式中计数器、命令字和数据区三部分对应的数据长度之和;计数器用于统计通讯循环次数,计数器的起始数据为0;命令字可以包括主功能命令字+子功能命令字,本申请实施例中主功能命令字可以为0x2D;数据区可以包括通信参数;包检验用于异或检验,防止数据被篡改。预设字符串为人为预先设置的目标数据包中起始标识中的数据,如0x55 0xAA。
具体的,终端设备按照第一数据缓冲区中数据接收的时间顺序首先将第一数据缓冲区中第一个接收的数据与预设字符串进行对比,若第一数据缓冲区中第一个接收的数据与预设字符串一致,则确定第一数据缓冲区中第一个接收的数据为目标数据包的起始标识;若第一数据缓冲区中第一个接收的数据与预设字符串不一致,则继续查找第一数据缓冲区中与预设字符串一致的数据,直到在第一数据缓冲区找到与预设字符串一致的数据。
举例来说,用户端按照第一数据缓冲区中数据接收的时间顺序首先将第一数据缓冲区中第一个接收的数据与预设字符串“0x55 0xAA”进行对比,若第一数据缓冲区中第一个接收的数据与预设字符串“0x55 0xAA”一致,则确定第一数据缓冲区中第一个接收的数据为目标数据包的起始标识。之后执行步骤S102。
在可选的实施例中,终端设备遍历第一数据缓冲区之前,包括:
接收第二设备端发送的数据,并将第二设备端发送的数据按照接收时间顺序存储在第一数据缓冲区。
其中,第二设备端可以为用户端或者诊断端,并且第二设备端与终端设备一一对应,即若终端设备为用户端,则第二设备端为诊断端;若终端设备为诊断端,则第二设备端为用户端。
举例来说,用户端接收诊断端发送的数据,并将诊断端发送的数据按照接收时间顺序存储在第一数据缓冲区。
在可选的实施例中,终端设备接收第二设备端发送的数据,包括:
根据套接字socket参数建立通信连接后,通过所述socket通信连接接收所述第二设备端发送的数据,并在所述socket通信连接结束后,停止接收所述第二设备端发送的数据。
其中,socket通信使用的TCP(Transmission Control Protocol,传输控制协议)协议,第一数据缓冲区由用户端或者诊断端定义,第一数据缓冲区用于接收、存储和拼接第二设备端发送的数据。
举例来说,用户端通过安装的远程交互软件设置socket参数(诊断端的IP地址、端口号等信息)与诊断端建立通信连接,之后接收诊断端发送的数据,并在通信连接结束后将不再接收诊断端发送的数据。
可选的实施例中,终端设备遍历第一数据缓冲区的数据之前,包括:
判断所述第一数据缓冲区中数据长度是否大于等于第一预设长度阈值,若所述第一数据缓冲区中数据长度大于等于所述第一预设长度阈值,则遍历所述第一数据缓冲区的数据。
其中,第一预设长度阈值为数据格式中的数据区中不存在数据时,数据格式中除数据区之外的其他部分对应的数据长度的总和。
可以理解为若第一数据缓冲区中数据长度大于等于第一预设长度阈值,则终端设备执行步骤S101,否则终端设备接收第二设备端发送的数据。
S102,根据所述第一数据缓冲区中所述目标数据包的起始标识的数据位置以及所述目标数据包的起始标识的数据位置与所述目标数据包的包长度的数据位置的预设位置关系确定所述目标数据包的包长度的数据位置。
举例来说,若数据格式为起始标识+目标地址+源地址+包长度+计数器+命令字+数据区+包检验,数据接收缓冲区中数据为“55 AA F0 F8 00 15 00 0E 2D 05 01 64 BE 0100 00 07 E0 08 03 22 11 00 00 00 00 00 36 55 AA F0 F8”,且步骤S201中确定第一数据缓冲区中第一个字节和第二个字节“0x55 0xAA”为目标数据的起始标识,则用户端可以根据第一数据缓冲区中目标数据包的起始标识的数据位置即第一数据缓冲区中第一个字节和第二个字节所在位置以及目标数据包的起始标识的数据位置与包长度的数据位置之间隔着目标地址与源长度两部分,由于目标地址与源长度两部分对应的字节长度均为1,因此可以确定第一数据缓冲区中第五个字节所在位置为目标数据包的包长度的数据位置。
S103,根据目标数据包的包长度的数据位置读取所述目标数据包的包长度,进而根据所述目标数据包的包长度确定所述目标数据包的数据总长度。
具体的,终端设备根据目标数据包的包长度的数据位置以及包长度的数据长度读取目标数据包的包长度,进而通过计算包长度与第二预设长度值的和,得到目标数据包的数据总长度。其中,第二预设长度值可以包括数据格式中起始标识、目标标识、源地址、包长度与包检验每部分对应的数据长度之和。
举例来说,用户端根据步骤S102中得到的目标数据包的包长度的数据位置即第一数据缓冲区中第五个字节所在位置以及包长度的数据长度2个字节长度确定第一数据缓冲区中数据“55 AA F0 F8 00 15 00 0E 2D 05 01 64 BE 01 00 00 07 E0 08 03 22 11 0000 00 00 00 36 55 AA F0 F8”中第五个字节和第六个字节所在位置的数据“0x00 0x15”为目标数据包的包长度,包长度为21,之后计算包长度21与第二预设长度7之和,得到目标数据包的数据总长度为28个字节长度。
S104,若所述第一数据缓冲区中的数据长度大于等于所述目标数据包的数据总长度,则根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包。
在可选的实施例中,终端设备判断所述第一数据缓冲区中的数据长度是否大于等于所述目标数据包的数据总长度,若所述第一数据缓冲区中的数据长度大于等于所述目标数据包的数据总长度,则根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包。
举例来说,用户端判断第一数据缓冲区中数据“55 AA F0 F8 00 15 00 0E 2D 0501 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00 00 00 36 55 AA F0 F8”的数据长度32个字节长度是否大于等于步骤S103中得到的目标数据包的数据总长度28个字节长度,显然,此时第一数据缓冲区中数据长度32个字节长度大于目标数据包的数据总长度28个字节长度,则网络数据处理装置根据步骤S202中得到的目标数据包的起始标识的数据位置即在第一数据缓冲区中第一个字节和第二个字节所在位置以及目标数据包的数据总长度28个字节长度,从第一数据缓冲区中第一个字节所在位置开始向后数28个字节长度,得到目标数据包“55 AA F0 F8 00 15 00 0E 2D 05 01 64 BE 01 00 00 07 E0 08 03 22 11 0000 00 00 00 36”。
S105,将所述目标数据包发送给第一设备端。
具体的,终端设备将得到的目标数据包发送给第一设备端,之后将目标数据包在第一数据缓冲区中对应的数据从第一数据缓冲区中清除,并将第一数据缓冲区中剩余的数据保存在第一数据缓冲区中的起始位置,之后判断第一数据缓冲区中数据长度是否大于等于第一预设长度阈值,若第一数据缓冲区中数据长度大于等于第一预设长度阈值,则执行步骤S101,否则接收第二设备端发送的数据。
其中,第一设备端可以为车载设备端或者技师操作端。若第一设备端为车载设备端,则本方法实施例的执行主体终端设备为用户端;若第一设备端为技师操作端,则本方法实施例的执行主体终端设备为诊断端。
一种可能的实现方式中,所述第一数据缓冲区的数据为诊断端发送的诊断数据,所述诊断数据包括诊断请求指令或者操作控制指令,所述诊断请求指令用于请求用户端允许所述诊断端获取第一设备端故障数据,所述操作控制指令用于控制第一设备端控制单元执行相应的操作。
举例来说,用户端将步骤S104中得到的目标数据包“55 AA F0 F8 00 15 00 0E2D 05 01 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00 00 00 36”发送给车载设备端的控制单元,这里的目标数据包可以为诊断端发送的诊断数据中的诊断请求指令,车载设备端在接收到诊断请求指令后将车载设备端的传感器数据(如喷油器压力值、发动机转速等)发送给诊断接头,同时,用户端将上述目标数据包在第一数据缓冲区中对应的数据从第一数据缓冲区中的数据“55 AA F0 F8 00 15 00 0E 2D 05 01 64 BE 01 00 00 07 E0 0803 22 11 00 00 00 00 00 36 55 AA F0 F8”中清除,并将第一数据缓冲区中剩余的数据“55 AA F0 F8”保存在第一数据缓冲区中的起始位置,则第一数据缓冲区中的数据为“55AA F0 F8”,之后判断第一数据缓冲区中数据“55 AA F0 F8”的数据长度4个字节长度是否大于等于第一预设长度阈值11个字节长度,显然,第一数据缓冲区的数据长度4个字节长度小于第一预设长度阈值11个字节长度,则用户端接收诊断端发送的数据。
又举例来说,用户端将步骤S104中得到的目标数据包“55 AA F0 F8 00 15 00 0E2D 05 01 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00 00 00 36”发送给车载设备端的控制单元,这里的目标数据包可以为数据中转服务器转发的诊断端发送的诊断数据中的操作控制指令,车载设备端的控制单元在接收到操作控制指令后根据该指令执行相应的操作,例如,汽车喷油器接收操作控制指令后针对汽车出现排气管冒白烟的故障增大喷油器压力,同时,用户端将上述目标数据包在第一数据缓冲区中对应的数据从第一数据缓冲区中的数据“55 AA F0 F8 00 15 00 0E 2D 05 01 64 BE 01 00 00 07 E0 08 03 22 11 0000 00 00 00 36 55 AA F0 F8 00 10 00 0F 2D 05 12 10 E0 00 01 03 64 BE 00 00 0000 36”中清除,并将第一数据缓冲区中剩余的数据“55 AA F0 F8 00 10 00 0F 2D 05 1210 E0 00 01 03 64 BE 00 00 00 00 36”保存在第一数据缓冲区中的起始位置,则第一数据缓冲区中的数据为“55 AA F0 F8 00 10 00 0F 2D 05 12 10 E0 00 01 03 64 BE 0000 00 00 36”,之后判断第一数据缓冲区中数据“55 AA F0 F8 00 10 00 0F 2D 05 12 10E0 00 01 03 64 BE 00 00 00 00 36”的数据长度23个字节长度是否大于等于第一预设长度阈值11个字节长度,显然,第一数据缓冲区的数据长度23个字节长度大于第一预设长度阈值11个字节长度,则用户端执行步骤S101。。
由于本申请中向车载设备端的控制单元和技师操作端发送的数据包均是完整指令,因此可以有效解决远程诊断过程中数据存在的粘包、拆包问题,保证发给车载设备端的控制单元以及技师操作端的指令的完整性,避免车载设备端的控制单元或者技师操作端无法识别指令造成回复数据错误或者诊断断线的情况,提高远程诊断的准确度。
请参见图3,是本申请实施例提供的另一种网数据传输方法的场景示意图。如图3所示,在车辆出现故障后,诊断端301通过数据中转服务器302向用户端303发送诊断请求指令,用于向用户端303请求获取车载设备端305的故障数据,用户端303通过诊断接头304获取车载设备端305的传感器数据(如喷油器压力值、发动机转速等),并通过故障分析算法对传感器数据进行分析得到故障码,之后将故障码通过数据中转服务器302发送给诊断端301,诊断端301将故障码解析为相应的故障描述文字,之后由诊断接头306将故障描述文字发送给技师操作端306,技师人员通过技师操作端306显示的故障描述文字输入相应的故障解决方案,技师操作端306将故障解决方案通过诊断接头306发送给诊断端301,诊断端301将故障解决方案解析为操作控制指令,并将操作控制指令发送给用户端303,之后再经过诊断接头304将操作控制指令发送给车载设备端控制单元,以使车载设备端控制单元执行相应的操作控制指令。其中,图3中的304和306均为同一功能的诊断接头,用于收发数据。由于整个远程车辆诊断过程中用户端303发送给诊断端301的故障数据(故障码)以及诊断端301发送给用户端303的诊断数据(诊断请求指令或者操作控制指令)均是完整指令,从而避免远程诊断过程中由于指令的不完整性(数据在网络过程中出现粘包、拆包情况)导致出现回复数据错误或者诊断断线的情况,提高远程诊断的准确度。
请参见图4,是本申请实施例针对上述图3所示的场景示意图提供的另一种数据传输方法的流程示意图。如图4所示,该方法实施例包括如下步骤:
S201,接收第二设备端发送的数据,并将所述第二设备端发送的数据存储在第二数据缓冲区,将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到第一数据缓冲区。
其中,第二设备端可以包括数据中转服务器,数据中转服务器作为用户端和诊断端数据传输过程中的中转站,用于转发用户端或者诊断端发送的数据。第一数据缓冲区和第二数据缓冲区均由用户端或者诊断端定义,第一数据缓冲区用于存储和拼接第二数据缓冲区中的数据,第二数据缓冲区用于不断接收数据中转服务器发送的数据。
其中,终端设备接收第二设备端发送的数据,包括:
根据socket参数建立通信连接后,通过所述socket通信连接接收所述第二设备端发送的数据,并在所述socket通信连接结束后,将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
其中,终端设备可以为用户端或者诊断端。
举例来说,诊断端通过安装的远程交互软件设置socket参数(数据中转服务器的IP地址、端口号等信息)与数据中转服务器建立通信连接,之后接收数据中转服务器转发的用户端发送的数据,并在通信连接结束后将该数据存储在第二数据缓冲区中,之后将第二数据缓冲区中的数据按照数据接收时间从早到晚依次拷贝到第一数据缓冲区中,并且不覆盖第一数据缓冲区中的原有数据。
S202,判断所述第一数据缓冲区中数据长度是否大于等于第一预设阈值。
具体的,终端设备判断所述第一数据缓冲区中数据长度是否大于等于第一预设长度阈值,若所述第一数据缓冲区中数据长度大于等于所述第一预设长度阈值,则遍历所述第一数据缓冲区的数据。
其中,第一预设长度阈值为数据格式中的数据区中不存在数据时,数据格式中除数据区之外的其他部分对应的数据长度的总和。
举例来说,若数据格式为起始标识+目标地址+源地址+包长度+计数器+命令字+数据区+包检验,起始标识、目标地址、源地址、包长度、计数器、命令字以及包检验每部分对应的数据长度分别为2个字节长度、1个字节长度、1个字节长度、2个字节长度、2个字节长度、2个字节长度和1个字节长度,则第一预设长度阈值为11个字节长度。
例如,若第一数据缓冲区中数据长度(第一数据缓冲区中包含字节的个数)为12个字节长度,显然第一数据缓冲区中数据长度(12个字节长度)大于第一预设长度阈值(11个字节长度),则诊断端执行步骤S203。
又如,若第一数据缓冲区中数据长度(第一数据缓冲区中包含字节的个数)为10个字节,显然第一数据缓冲区中数据长度(10个字节长度)小于第一预设长度阈值(11个字节长度),则诊断端执行步骤S201。
可以理解为若第一数据缓冲区中数据长度大于等于第一预设长度阈值,则终端设备执行步骤S203,否则终端设备执行步骤S201。
S203,判断所述第一数据缓冲区的数据中是否存在预设字符串。
具体的,终端设备遍历第一数据缓冲区的数据,判断所述第一数据缓冲区的数据中是否存在预设字符串。
其中,预设字符串为人为预先设置的目标数据包中起始标识中的数据,如0x550xAA。
具体的,终端设备按照第一数据缓冲区中数据接收的时间顺序首先将第一数据缓冲区中第一个接收的数据与预设字符串进行对比,若第一数据缓冲区中第一个接收的数据与预设字符串一致,则执行步骤S204;若第一数据缓冲区中第一个接收的数据与预设字符串不一致,则继续查找第一数据缓冲区中与预设字符串一致的数据,直到在第一数据缓冲区找到与预设字符串一致的数据。若网络数据处理装置遍历完第一数据缓冲区中的所有数据仍未找到与预设字符串一致的数据,则执行步骤S201。
举例来说,诊断端按照第一数据缓冲区中数据接收的时间顺序首先将第一数据缓冲区中第一个接收的数据与预设字符串“0x55 0xAA”进行对比,若第一数据缓冲区中第一个接收的数据与预设字符串“0x55 0xAA”一致,则执行步骤S204。
S204,确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识。
其中,第一数据缓冲区的数据格式可以包括:起始标识+目标地址+源地址+包长度+计数器+命令字+数据区+包检验,起始标识表示一条完整指令的起始位置,如0x55 0xAA;目标地址表示数据发送后需要到达的网络中的唯一地址,如0xF0;源地址表示数据发送设备在网络中的唯一地址,如0xF8;包长度可以包括数据格式中计数器、命令字和数据区三部分对应的数据长度之和;计数器用于统计通讯循环次数,计数器的起始数据为0;命令字可以包括主功能命令字+子功能命令字,本申请实施例中主功能命令字可以为0x2D;数据区可以包括通信参数;包检验用于异或检验,防止数据被篡改。预设字符串为人为预先设置的目标数据包中起始标识中的数据,如0x55 0xAA。
举例来说,诊断端根据步骤S203得到第一数据缓冲区中第一个字节和第二个字节所在位置的“0x55 0xAA”与预设字符串“0x55 0xAA”一致,则将第一数据缓冲区中第一个字节和第二个字节所在位置的“0x55 0xAA”确定为目标数据包的起始标识。之后执行步骤S205。
S205,根据所述第一数据缓冲区中所述目标数据包的起始标识的数据位置以及所述目标数据包的起始标识的数据位置与所述目标数据包的包长度的数据位置的预设位置关系确定所述目标数据包的包长度的数据位置。
S206,根据目标数据包的包长度的数据位置读取所述目标数据包的包长度,进而根据所述目标数据包的包长度确定所述目标数据包的数据总长度。
这里,步骤S205-S206的具体实现方式可参考图2对应的实施例中步骤S102-S103的描述,此处不再赘述。
S207,判断所述第一数据缓冲区中的数据长度是否大于等于所述目标数据包的数据总长度。
举例来说,诊断端判断第一数据缓冲区中数据“55 AA F0 F8 00 15 00 0E 2D 0501 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00 00 00 36 55 AA F0 F8”的数据长度32个字节长度是否大于等于步骤S206中得到的目标数据包的数据总长度28个字节长度,显然,此时第一数据缓冲区中数据长度32个字节长度大于目标数据包的数据总长度28个字节长度,则执行步骤S208。
又举例来说,诊断端判断第一数据缓冲区中数据“55 AA F0 F8 00 15 00 0E 2D05 01 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00”的数据长度25个字节长度是否大于等于步骤S206中得到的目标数据包的数据总长度28个字节长度,显然,此时第一数据缓冲区中数据长度26个字节长度小于目标数据包的数据总长度28个字节长度,则执行步骤S201。
可以理解为,若第一数据缓冲区中的数据长度大于等于目标数据包的数据总长度,则终端设备执行步骤S208,否则终端设备执行步骤S201。
S208,根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包。
举例来说,根据步骤S207得到第一数据缓冲区中数据“55 AA F0 F8 00 15 00 0E2D 05 01 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00 00 00 36 55 AA F0 F8”的数据长度32个字节长度大于步骤S206中得到的目标数据包的数据总长度28个字节长度,则诊断端根据步骤S205中得到的目标数据包的起始标识的数据位置即在第一数据缓冲区中第一个字节和第二个字节所在位置以及目标数据包的数据总长度28个字节长度,从第一数据缓冲区中第一个字节所在位置开始向后数28个字节长度,得到目标数据包“55 AA F0 F800 15 00 0E 2D 05 01 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00 00 00 36”。之后执行步骤S209。
S209,将所述目标数据包发送给第一设备端。
具体的,终端设备将得到的目标数据包发送给第一设备端,之后将目标数据包在第一数据缓冲区中对应的数据从第一数据缓冲区中清除,并将第一数据缓冲区中剩余的数据保存在第一数据缓冲区中的起始位置,之后执行步骤S202。
其中,第一设备端可以为车载设备端或者技师操作端。若第一设备端为车载设备端,则本方法实施例的执行主体终端设备为用户端;若第一设备端为技师操作端,则本方法实施例的执行主体终端设备为诊断端。
一种可能的实现方式中,所述第一数据缓冲区的数据为所述用户端发送的故障数据,所述故障数据包括故障码,所述故障码被所述第一设备端用于生成操作控制指令。
举例来说,诊断端将步骤S208中得到的目标数据包“55 AA F0 F8 00 15 00 0E2D 05 01 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00 00 00 36”发送给技师操作端,这里目标数据包为数据中转服务器转发的用户端发送的故障数据,技师人员根据技师操作端屏幕显示的故障数据中的故障码向技师操作端输入车辆故障解决方案,技师操作端根据输入的车辆故障解决方案解析生成操作控制指令,同时,诊断端将上述目标数据包在第一数据缓冲区中对应的数据从第一数据缓冲区中的数据“55 AA F0 F8 00 15 00 0E 2D 0501 64 BE 01 00 00 07 E0 08 03 22 11 00 00 00 00 00 36 55 AA F0 F8 00 10 00 0F2D 05 12 10 E0 00 01 03 64 BE 00 00 00 00 36”中清除,并将第一数据缓冲区中剩余的数据“55 AA F0 F8 00 10 00 0F 2D 05 12 10 E0 00 01 03 64 BE 00 00 00 00 36”保存在第一数据缓冲区中的起始位置,则第一数据缓冲区中的数据为“55 AA F0 F8 00 1000 0F 2D 05 12 10 E0 00 01 03 64 BE 00 00 00 00 36”,之后执行步骤S202。
由于本申请中向车载设备端的控制单元和技师操作端发送的数据包均是完整指令,因此可以有效解决远程诊断过程中数据存在的粘包、拆包问题,保证发给车载设备端的控制单元以及技师操作端的指令的完整性,避免车载设备端的控制单元或者技师操作端无法识别指令造成回复数据错误或者诊断断线的情况,提高远程诊断的准确度。
请参见图5,是本申请实施例提供了一种数据传输装置的结构示意图。如图5所示,该数据传输装置包括第一确定单元501、第二确定单元502、第三确定单元503、判断提取单元504、发送单元505、存储拷贝单元506、判断单元507和清除单元508。
第一确定单元501,用于遍历第一数据缓冲区的数据,判断所述第一数据缓冲区的数据中是否存在预设字符串,若所述第一数据缓冲区的数据中存在所述预设字符串,则确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识;
第二确定单元502,用于根据所述第一数据缓冲区中所述目标数据包的起始标识的数据位置以及所述目标数据包的起始标识的数据位置与所述目标数据包的包长度的数据位置的预设位置关系确定所述目标数据包的包长度的数据位置;
第三确定单元503,用于根据所述目标数据包的包长度的数据位置读取所述目标数据包的包长度,进而根据所述目标数据包的包长度确定所述目标数据包的数据总长度;
判断提取单元504,用于判断所述第一数据缓冲区中的数据长度是否大于等于所述目标数据包的数据总长度,若所述第一数据缓冲区中的数据长度大于等于所述目标数据包的数据总长度,则根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包;
发送单元505,用于将所述目标数据包发送给第一设备端。
其中,所述第一数据缓冲区的数据为诊断端发送的诊断数据,所述诊断数据包括诊断请求指令或者操作控制指令,所述诊断请求指令用于请求用户端允许所述诊断端获取第一设备端故障数据,所述操作控制指令用于控制第一设备端控制单元执行相应的操作。所述第一数据缓冲区的数据为用户端发送的故障数据,所述故障数据包括故障码,所述故障码被所述第一设备端用于生成操作控制指令。
可选的,所述装置还包括:
存储拷贝单元506,用于接收第二设备端发送的数据,并将所述第二设备端发送的数据存储在第二数据缓冲区;
存储拷贝单元506,用于将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
可选的,所述装置还包括:
判断单元507,用于判断所述第一数据缓冲区中数据长度是否大于等于第一预设长度阈值,若所述第一数据缓冲区中数据长度大于等于所述第一预设长度阈值,则遍历所述第一数据缓冲区的数据。
可选的,所述第三确定单元503,具体用于计算所述包长度与第二预设长度值的和,得到所述目标数据包的数据总长度。
可选的,所述装置还包括:
清除单元508,用于将所述目标数据包在所述第一数据缓冲区中对应的数据从所述第一数据缓冲区中清除。
可选的,所述存储拷贝单元506,具体用于根据socket参数建立通信连接后,通过所述socket通信连接接收所述数据中转服务器发送的数据,并在所述socket通信连接结束后,将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
可以理解的,该数据传输装置500用于实现图2和图4实施例中的步骤。关于图5的数据传输装置500包括的功能块的具体实现方式及相应的有益效果,可参考前述图2和图4的实施例的具体介绍,这里不赘述。
上述图5所示实施例中的数据传输装置500可以以图6所示的终端设备600来实现。请参见图6,为本发明实施例提供了一种终端设备的结构示意图。如图6所示,上述终端设备600可以包括:一个或多个处理器601、存储器602和收发器603。上述处理器601、存储器602和收发器603通过总线604连接。其中,上述收发器603用于接收第二设备端发送的数据,上述存储器602用于存储计算机程序,该计算机程序包括程序指令;处理器601用于执行存储器602存储的程序指令,执行如下操作:
遍历第一数据缓冲区的数据,判断所述第一数据缓冲区的数据中是否存在预设字符串,若所述第一数据缓冲区的数据中存在所述预设字符串,则确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识;
根据所述第一数据缓冲区中所述目标数据包的起始标识的数据位置以及所述目标数据包的起始标识的数据位置与所述目标数据包的包长度的数据位置的预设位置关系确定所述目标数据包的包长度的数据位置;
根据所述目标数据包的包长度的数据位置读取所述目标数据包的包长度,进而根据所述目标数据包的包长度确定所述目标数据包的数据总长度;
判断所述第一数据缓冲区中的数据长度是否大于等于所述目标数据包的数据总长度,若所述第一数据缓冲区中的数据长度大于等于所述目标数据包的数据总长度,则根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包;
将所述目标数据包发送给第一设备端。
可选的,上述处理器601遍历第一数据缓冲区之前,具体执行以下操作:
接收第二设备端发送的数据,并将所述第二设备端发送的数据存储在第二数据缓冲区;
将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
可选的,上述处理器601遍历第一数据缓冲区的数据之前,具体执行以下步骤:
判断所述第一数据缓冲区中数据长度是否大于等于第一预设长度阈值,若所述第一数据缓冲区中数据长度大于等于所述第一预设长度阈值,则遍历所述第一数据缓冲区的数据。
可选的,上述处理器601根据所述目标数据包的包长度确定所述目标数据包的数据总长度,具体执行以下操作:
计算所述包长度与第二预设长度值的和,得到所述目标数据包的数据总长度。
可选的,上述处理器601将所述目标数据包发送给第一设备端之后,具体执行以下操作:
将所述目标数据包在所述第一数据缓冲区中对应的数据从所述第一数据缓冲区中清除。
可选的,上述处理器601接收第二设备端发送的数据,具体执行以下操作:
根据套接字socket参数建立通信连接后,通过所述socket通信连接接收所述数据中转服务器发送的数据,并在所述socket通信连接结束后,将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。所述第一数据缓冲区的数据为诊断端发送的诊断数据,所述诊断数据包括诊断请求指令或者操作控制指令,所述诊断请求指令用于请求所述用户端允许所述诊断端获取第一设备端故障数据,所述操作控制指令用于控制第一设备端控制单元执行相应的操作。所述第一数据缓冲区的数据为用户端发送的故障数据,所述故障数据包括故障码,所述故障码被所述第一设备端用于生成操作控制指令。
在本申请实施例中还提供了一种计算机存储介质,可以用于存储图5所示实施例中上述网络数据处理装置所用的计算机软件指令,其包含用于执行上述实施例中为数据传输装置所设计的程序。该存储介质包括但不限于快闪存储器、硬盘、固态硬盘。
在本申请实施例中还提供了一种计算机程序产品,该计算机产品被计算设备运行时,可以执行上述图5所示实施例中为所设计的数据传输装置。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括没有列出的步骤或单元,或可选的还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请中,“A和/或B”是指下述情况之一:A,B,A和B。“……中至少一个”是指所列出的各项或者任意数量的所列出的各项的任意组合方式,例如,“A、B和C中至少一个”是指下述情况之一:A,B,C,A和B,B和C,A和C,A、B和C这七种情况中的任一种。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种数据传输方法,其特征在于,应用于终端设备,包括:
遍历第一数据缓冲区的数据,判断所述第一数据缓冲区的数据中是否存在预设字符串,若所述第一数据缓冲区的数据中存在所述预设字符串,则确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识;
根据所述第一数据缓冲区中所述目标数据包的起始标识的数据位置以及所述目标数据包的起始标识的数据位置与所述目标数据包的包长度的数据位置的预设位置关系确定所述目标数据包的包长度的数据位置;
根据所述目标数据包的包长度的数据位置读取所述目标数据包的包长度,进而根据所述目标数据包的包长度确定所述目标数据包的数据总长度;
判断所述第一数据缓冲区中的数据长度是否大于等于所述目标数据包的数据总长度,若所述第一数据缓冲区中的数据长度大于等于所述目标数据包的数据总长度,则根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包;
将所述目标数据包发送给第一设备端。
2.根据权利要求1所述的方法,其特征在于,所述遍历第一数据缓冲区之前,包括:
接收第二设备端发送的数据,并将所述第二设备端发送的数据存储在第二数据缓冲区;
将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
3.根据权利要求1所述的方法,其特征在于,所述遍历第一数据缓冲区的数据之前,包括:
判断所述第一数据缓冲区中数据长度是否大于等于第一预设长度阈值,若所述第一数据缓冲区中数据长度大于等于所述第一预设长度阈值,则遍历所述第一数据缓冲区的数据。
4.根据权利要求1所述的方法,其特征在于,所述根据所述目标数据包的包长度确定所述目标数据包的数据总长度,包括:
计算所述包长度与第二预设长度值的和,得到所述目标数据包的数据总长度。
5.根据权利要求1所述的方法,其特征在于,所述将所述目标数据包发送给第一设备端之后,包括:
将所述目标数据包在所述第一数据缓冲区中对应的数据从所述第一数据缓冲区中清除。
6.根据权利要求2所述的方法,其特征在于,所述接收第二设备端发送的数据,包括:
根据套接字socket参数建立通信连接后,通过所述socket通信连接接收所述第二设备端发送的数据,并在所述socket通信连接结束后,将存储在所述第二数据缓冲区中的数据按照接收时间顺序拷贝到所述第一数据缓冲区。
7.根据权利要求1所述的方法,其特征在于,所述第一数据缓冲区的数据为诊断端发送的诊断数据,所述诊断数据包括诊断请求指令或者操作控制指令,所述诊断请求指令用于请求用户端允许所述诊断端获取第一设备端故障数据,所述操作控制指令用于控制第一设备端控制单元执行相应的操作。
8.根据权利要求1所述的方法,其特征在于,所述第一数据缓冲区的数据为用户端发送的故障数据,所述故障数据包括故障码,所述故障码被所述第一设备端用于生成操作控制指令。
9.一种数据传输装置,其特征在于,包括:
第一确定单元,用于遍历第一数据缓冲区的数据,判断所述第一数据缓冲区的数据中是否存在预设字符串,若所述第一数据缓冲区的数据中存在所述预设字符串,则确定所述第一数据缓冲区中与所述预设字符串一致的数据为目标数据包的起始标识;
第二确定单元,用于根据所述第一数据缓冲区中所述目标数据包的起始标识的数据位置以及所述目标数据包的起始标识的数据位置与所述目标数据包的包长度的数据位置的预设位置关系确定所述目标数据包的包长度的数据位置;
第三确定单元,用于根据所述目标数据包的包长度的数据位置读取所述目标数据包的包长度,进而根据所述目标数据包的包长度确定所述目标数据包的数据总长度;
判断提取单元,用于判断所述第一数据缓冲区中的数据长度是否大于等于所述目标数据包的数据总长度,若所述第一数据缓冲区中的数据长度大于等于所述目标数据包的数据总长度,则根据所述目标数据包的起始标识和所述目标数据包的数据总长度提取得到所述目标数据包;
发送单元,用于将所述目标数据包发送给第一设备端。
10.一种终端设备,其特征在于,包括处理器、存储器和收发器,所述处理器、存储器和收发器相互连接,其中,所述收发器用于接收或发送数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,执行如权利要求1-8任一项所述的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911023474.7A CN110798518A (zh) | 2019-10-25 | 2019-10-25 | 一种数据传输方法及装置、终端设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911023474.7A CN110798518A (zh) | 2019-10-25 | 2019-10-25 | 一种数据传输方法及装置、终端设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110798518A true CN110798518A (zh) | 2020-02-14 |
Family
ID=69441237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911023474.7A Pending CN110798518A (zh) | 2019-10-25 | 2019-10-25 | 一种数据传输方法及装置、终端设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110798518A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113301121A (zh) * | 2021-04-30 | 2021-08-24 | 北京邮电大学 | 一种机器人遥操作中指令的传输方法及系统 |
CN115032973A (zh) * | 2022-08-11 | 2022-09-09 | 深圳市星卡软件技术开发有限公司 | 一种数据传输系统、方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0201728D0 (en) * | 2002-01-25 | 2002-03-13 | Actix Ltd | Data transmission systems |
CN103532668A (zh) * | 2013-10-12 | 2014-01-22 | 成都阜特科技股份有限公司 | 一种确保tcp通信数据完整及正确的方法 |
CN104410613A (zh) * | 2014-11-20 | 2015-03-11 | 广西大学 | 一种处理传输控制协议粘包方法及装置 |
CN107040549A (zh) * | 2017-06-08 | 2017-08-11 | 山大鲁能信息科技有限公司 | 一种tcp粘包处理方法、服务器及系统 |
CN109918545A (zh) * | 2019-03-26 | 2019-06-21 | 珠海格力智能装备有限公司 | 传感器数据的提取方法及装置 |
-
2019
- 2019-10-25 CN CN201911023474.7A patent/CN110798518A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0201728D0 (en) * | 2002-01-25 | 2002-03-13 | Actix Ltd | Data transmission systems |
CN103532668A (zh) * | 2013-10-12 | 2014-01-22 | 成都阜特科技股份有限公司 | 一种确保tcp通信数据完整及正确的方法 |
CN104410613A (zh) * | 2014-11-20 | 2015-03-11 | 广西大学 | 一种处理传输控制协议粘包方法及装置 |
CN107040549A (zh) * | 2017-06-08 | 2017-08-11 | 山大鲁能信息科技有限公司 | 一种tcp粘包处理方法、服务器及系统 |
CN109918545A (zh) * | 2019-03-26 | 2019-06-21 | 珠海格力智能装备有限公司 | 传感器数据的提取方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113301121A (zh) * | 2021-04-30 | 2021-08-24 | 北京邮电大学 | 一种机器人遥操作中指令的传输方法及系统 |
CN113301121B (zh) * | 2021-04-30 | 2022-05-17 | 北京邮电大学 | 一种机器人遥操作中指令的传输方法及系统 |
CN115032973A (zh) * | 2022-08-11 | 2022-09-09 | 深圳市星卡软件技术开发有限公司 | 一种数据传输系统、方法、装置、设备及介质 |
CN115032973B (zh) * | 2022-08-11 | 2022-11-15 | 深圳市星卡软件技术开发有限公司 | 一种数据传输系统、方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111224839B (zh) | 一种带内网络遥测功能的验证方法、装置、存储介质及电子设备 | |
CN106294102B (zh) | 应用程序的测试方法、客户端、服务器及系统 | |
CN110351281B (zh) | 一种通用数据帧解析方法、装置及设备 | |
CN107426770B (zh) | 基于数据链路层的数据通讯方法、数据终端及系统 | |
CN106155734B (zh) | 一种软件版本的下载方法及装置 | |
CN105897461A (zh) | 多系统ota升级方法和多系统设备 | |
CN110798518A (zh) | 一种数据传输方法及装置、终端设备、存储介质 | |
CN110545376B (zh) | 通信方法及装置、电子设备和存储介质 | |
CN111277602B (zh) | 网络数据包的识别处理方法、装置、电子设备及存储介质 | |
CN111506047A (zh) | 车辆诊断方法、装置及存储介质 | |
CN112134893A (zh) | 物联网安全防护方法、装置、电子设备及存储介质 | |
CN110647490A (zh) | 数据传输方法、装置、设备以及计算机存储介质 | |
WO2021134418A1 (zh) | 一种数据校验方法及装置 | |
CN108270783A (zh) | 一种数据处理方法及装置 | |
CN114567552A (zh) | 车载v2x设备升级方法、装置、计算机设备及存储介质 | |
CN112235244B (zh) | 异常报文的构造方法以及工控网络设备的检测方法、装置和介质 | |
CN109800202B (zh) | 一种基于pcie的数据传输系统、方法及装置 | |
CN101197959B (zh) | 一种终端的控制方法、系统和设备 | |
CN114500508B (zh) | 一种燃气表升级方法、装置及电子设备 | |
CN116009908A (zh) | 设备升级方法、装置、计算机设备及计算机可读存储介质 | |
CN109634643A (zh) | 人防指挥所的三防自动化设备固件升级系统 | |
CN109376597A (zh) | 一种检测信息获取方法及相关装置 | |
CN115071734A (zh) | 接入控制方法、装置、电子设备和自动驾驶车辆 | |
CN106302364A (zh) | 代理方法、辅助代理方法与设备 | |
CN115052003A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200214 |
|
RJ01 | Rejection of invention patent application after publication |