一种通信方法及装置的制造方法
【技术领域】
[0001] 本发明涉及通信技术领域,尤其涉及一种通信方法及装置。
【背景技术】
[0002] 基于串口的主从模式半双工广泛应用于工业控制和通信系统领域,每次通信过程 由主节点设备轮询从节点设备,被轮询的从节点设备响应主节点设备的请求。
[0003] 由于半双工串口在任意时刻只能处于发送或接收状态,因此设备节点存在发送和 接收切换过程,一般情况下默认串口处于接收状态,当有数据需要发送时切换到发送状态, 发送完毕后切换回接收状态。
[0004] 主从模式的半双工通信中,接收、发送模式的正确切换是保证可靠通信的关键,在 软件流程,当有数据需要发送时,软件会将串口配置为发送模式,这个过程一般很容易实 现。反向,当数据发送完成时需要切换到接收模式,这个切换时间点是影响通信的关键点, 如果切换时间过早,数据可能还在底层硬件上排队,并未完全发送到线路上,从而导致发送 数据不完整;如果切换时间过晚,有可能错过接收通信对端的返回数据,导致接收不完整。
[0005]针对这个问题,现有的技术方法一般采用借助硬件手段来进行判断切换时间。以 主设备发送数据给从设备为例,进行详细描述,包括步骤:
[0006] 步骤一,当主设备有数据需要发送到从设备时,主设备将与该从设备的数据传输 模式切换为发送模式,并发送数据给该从设备。
[0007]步骤二,当底层硬件接收到数据后,将返回一个发送完成标志给主设备。
[0008]步骤三,主设备接收从设备底层硬件发送的完成标识,延时一段时间,预计数据全 部到达线路,则将主设备的数据传输模式切换为接收模式,并接收该从设备返回的发送响 应。
[0009] 其中,线路是指主设备到从设备之间的物理线路,底层硬件为串口的数据写入层 或缓冲区,完成标志为底层硬件返回的中断或标志。
[0010] 然而,在实际应用中,很多底层硬件只提供了数据写入底层先进先出队列(First InputFirstOutput,FIFO)或缓冲区的标志,但这种标志只能表示数据已经到达底层硬 件,但是底层硬件何时将数据完全发送到线路上是不确定的,由于发送延时不确定导致切 换时间点不好把握,所以在接收到硬件发送的检测标志并进行延时后,才能切换到接收模 式。
[0011] 具体地,定义主设备开始发送数据时间为tl,底层硬件返回完成标志时间为t2, 数据全部到达线路时间为t3,从设备接收数据完毕时间为t4,从设备发送响应时间为t5, 从设备第一个字节到达主设备时间为t6。主设备接收到硬件返回完成标志时间至主设备切 换到接收模式的时间段为延长时长,其中延长时长用At表示。
[0012] 针对延长时长At,分为两种情况。
[0013] 参见图1,At〈(t3-t2)情况:当主设备发送的数据到底层硬件后,底层硬件将返 回一个完成标志,延长At后,主设备切换到接收模式,但此时底层硬件存储的需要发送的 数据还没有完全发送到线路,导致需要发送的数据的尾部因为主设备已经接换到接收模 式,而发送数据不完整。
[0014] 参见图2,At> (t6_t2)情况:当主设备发送的数据到底层硬件,且底层硬件将 数据完全发送到线路,从设备将接收到的数据统计计算后,返回发送响应给主设备。但此 时,主设备仍然处于发送模式,还没切换到接收模式,不能接收从设备发送的响应,从而导 致主设备接收从设备发送的数据不完整。
[0015] 因此,利用现有技术进行数据通信,需要确定接收到底层硬件返回的完成标志,并 延长一段时间后,切换数据传输模式为接收模式,其中,延长时长At需要符合(t6_t2) > At> (t3_t2),才能保证数据接收完整以及发送完整。
[0016] 综上所述,采用借助硬件手段来进行判断切换时间,会受到发送数据字节长度和 操作系统实现方式的影响,以及因为硬件不支持发送完毕标志,导致主从模式半双工串口 的收发模式切换不准确,从而造成数据发送不完整或接收不完整,降低了通信的可靠性。
【发明内容】
[0017] 本发明实施例提供了一种通信方法及装置,用以准确进行收发模式切换,避免数 据传输不完整,从而保障通信的可靠性。
[0018] 本发明实施例提供了一种通信方法,该方法包括:
[0019] 当本端的数据传输模式为发送模式时,确定需要发送的数据帧的格式,并根据所 述数据帧的格式,将该数据帧划分为多个阶段需要发送的数据,其中最后一个阶段需要发 送的数据中包括所述数据帧的结束标志;
[0020] 分别发送每一阶段需要发送的数据,当最后一个阶段需要发送的数据发送完成 时,延时预设时长后,切换本端的数据传输模式为接收模式。
[0021] 具体地,通过该方法,首先当本端的数据传输模式为发送模式时,确定需要发送的 数据帧的格式,并根据所述数据帧的格式,将该数据帧划分为多个阶段需要发送的数据,其 中最后一个阶段需要发送的数据中包括所述数据帧的结束标志,然后分别发送每一阶段需 要发送的数据,当最后一个阶段需要发送的数据发送完成时,延时预设时长后,切换本端的 数据传输模式为接收模式。从而准确进行收发模式切换,避免数据传输不完整,保障了通信 的可靠性。
[0022] 较佳地,所述数据帧中包括单字节的起始标志、单字节的结束标志以及位于起始 标志和结束标志之间的数据。
[0023] 较佳地,将该数据帧划分为多个阶段需要发送的数据,其中最后一个阶段需要发 送的数据中包括所述数据帧的结束标志,包括:
[0024] 将所述数据帧划分为两个阶段需要发送的数据,其中第一个阶段需要发送的数据 包括所述结束标志之前的所有数据,第二个阶段需要发送的数据中仅包括单字节的结束标 )'、〇
[0025] 具体地,将需要发送的数据帧划分为两个阶段发送,从而准确进行主从模式半双 工串口的收发切换。
[0026] 较佳地,分别发送每一阶段需要发送的数据,包括:
[0027] 在发送相邻两个阶段需要发送的数据之间,间隔预设时长。
[0028] 较佳地,所述预设时长大于或等于发送最后一个阶段需要发送的数据所需要的时 间。
[0029] 较佳地,在切换本端的数据传输模式为接收模式之后,该方法还包括:
[0030] 接收对端发送的所述数据帧的接收完成响应。
[0031] 本发明实施例提供了一种通信方法,该方法包括:
[0032] 当本端的数据传输模式为接收模式时,接收对端发送的数据帧,其中该数据帧是 对端分成多个阶段发送的数据,其中最后一个阶段接收到的数据中包括所述数据帧的结束 标志;
[0033]当根据所述结束标志确定所述数据帧接收完成时,切换本端的数据传输模式为发 送模式。
[0034]具体地,通过该方法,首先当本端的数据传输模式为接收模式时,接收对端发送的 数据帧,其中该数据帧是对端分成多个阶段发送的数据,其中最后一个阶段接收到的数据 中包括所述数据帧的结束标志,然后当根据所述结束标志确定所述数据帧接收完成时,切 换本端的数据传输模式为发送模式。从而准确进行收发模式切换,避免数据接收不完整,保 障了通信的可靠性。
[0035] 较佳地,所述数据帧中包括单字节的起始标志、单字节的结束标志以及位于起始 标志和结束标志之间的数据。
[0036] 较佳地,该数据帧是对端分成多个阶段发送的数据,其中最后一个阶段接收到的 数据中包括所述数据帧的结束标志,包括:
[0037] 该数据帧是对端分成两个阶段发送的数据,其中第一阶段接收到的数据包括结束 标志之前的所有数据,第二个阶段接收到的数据中仅包括单字节的结束标志。
[0038] 较佳地,在切换本端的数据传输模式为发送模式之后,该方法还包括:
[0039] 向对端发送所述数据帧的接收完成响应。
[0040] 本发明实施例提供了一种通信装置,该装置包括:
[0041] 发送单元,用于当本端的数据传输模式为发送模式时,确定需要发送的数据帧的 格式,并根据所述数据帧的格式,将该数据帧划分为多个阶段需要发送的数据,其中最后一 个阶段需要发送的数据中包括所述数据帧的结束标志;
[0042]切换单元,用于分别发送每一阶段需要发送的数据,当最后一个阶段需要发送的 数据发送完成时,延时预设时长后