报文传输方法、装置、设备及机器可读存储介质与流程

文档序号:18251262发布日期:2019-07-24 09:45阅读:177来源:国知局
报文传输方法、装置、设备及机器可读存储介质与流程

本公开涉及通信技术领域,尤其是涉及一种报文传输方法、装置、设备及机器可读存储介质。



背景技术:

LoRa(Long Rang,超长距离)技术是一种长距离、低功耗、低速率应用下使用的无线调制技术,能够被应用在各种网络技术中,是长距离低功耗协议族的总称。在LoRa网络中,包括LoRa终端和LoRa服务器,LoRa终端和LoRa服务器之间采用LoRaWAN(LoRa Wide Area Network,LoRa广域网)协议通信。

LoRa终端支持的模式包括ClassA模式、ClassB模式和ClassC模式。当LoRa终端工作于ClassA模式时,LoRa终端每次向LoRa服务器发送上行数据之后,均会启动两个下行接收窗口,LoRa服务器在这两个下行接收窗口内向LoRa终端发送下行数据,而LoRa终端可以在这两个下行接收窗口内接收下行数据。当LoRa终端工作于ClassB模式时,则LoRa终端可以在预设时间内开放多余的下行接收窗口,LoRa终端可以在这些下行接收窗口内接收下行数据。当LoRa终端工作于ClassC模式时,则LoRa终端持续开放下行接收窗口,只在发送上行数据时关闭下行接收窗口,LoRa终端可以在下行接收窗口内接收下行数据。



技术实现要素:

本公开提供一种报文传输方法,应用于LoRa终端,所述方法包括:

在向LoRa服务器发送上行报文后,启动第一下行接收窗口;

若在所述第一下行接收窗口内接收到所述LoRa服务器针对所述上行报文返回的下行报文,则判断当前时刻是否满足第一下行接收窗口的关闭条件;

如果是,则判断是否完整接收到所述下行报文的全部内容;

若未完整接收到所述下行报文的全部内容,则禁止关闭所述第一下行接收窗口,一直到完整接收到所述下行报文的全部内容。

本公开提供一种报文传输装置,应用于LoRa终端,所述装置包括:

启动模块,用于在向LoRa服务器发送上行报文后,启动第一下行接收窗口;

判断模块,用于若在所述第一下行接收窗口内接收到所述LoRa服务器针对所述上行报文返回的下行报文,则判断当前时刻是否满足第一下行接收窗口的关闭条件;如果是,则判断是否完整接收到所述下行报文的全部内容;

处理模块,用于若未完整接收到所述下行报文的全部内容,则禁止关闭所述第一下行接收窗口,一直到完整接收到所述下行报文的全部内容。

本公开提供一种LoRa终端,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令,以实现上述的报文传输方法的步骤。

本公开提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述的报文传输方法的步骤。

基于上述技术方案,本公开实施例中,LoRa终端向LoRa服务器发送上行报文后,可以启动第一下行接收窗口;若在第一下行接收窗口内接收到LoRa服务器针对该上行报文返回的下行报文,则判断当前时刻是否满足第一下行接收窗口的关闭条件。在满足关闭条件时,不是关闭第一下行接收窗口,而是判断是否完整接收到该下行报文的全部内容。若未完整接收到该下行报文的全部内容,则禁止关闭第一下行接收窗口,一直到完整接收到该下行报文的全部内容。显然,基于上述方式,能够完整接收到下行报文的全部内容,避免下行报文的丢失,节约LoRa终端与LoRa服务器之间重传报文导致的时间开销及流量开销,节约空口资源,增加LoRa终端与LoRa服务器之间报文交互的可靠性。

附图说明

为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。

图1A是本公开一种实施方式中的ClassA模式下的报文传输示意图;

图1B是本公开一种实施方式中的ClassC模式下的报文传输示意图;

图2是本公开一种实施方式中的报文传输方法的流程图;

图3A是本公开一种实施方式中的ClassA模式下的报文传输示意图;

图3B是本公开一种实施方式中的LoRa报文的示意图;

图3C是本公开一种实施方式中的ClassC模式下的报文传输示意图;

图3D是本公开一种实施方式中的ClassC模式下的报文传输示意图;

图4是本公开一种实施方式中的报文传输装置的结构图;

图5是本公开一种实施方式中的LoRa终端的硬件结构图。

具体实施方式

在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开。本公开和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

LoRa网络包括LoRa终端和LoRa服务器,LoRa终端和LoRa服务器之间采用LoRaWAN协议通信,LoRa终端支持的模式包括ClassA模式、ClassB模式和ClassC模式,本实施例中,以ClassA模式和ClassC模式为例进行说明。

参见图1A所示,为ClassA模式下的报文传输示意图。LoRa终端向LoRa服务器发送上行报文,在上行报文发送成功后,等待预设第一时间(如DELAY1)后,开启第一类型窗口RX1。在开启第一类型窗口RX1后,LoRa终端可以在第一类型窗口RX1内接收LoRa服务器针对上行报文返回的下行报文。第一类型窗口RX1的窗口持续时间可以小于1秒,在到达第一类型窗口RX1的关闭条件(如到达窗口持续时间的终止时间)时,则可以关闭第一类型窗口RX1。

此外,在上行报文发送成功后,等待预设第二时间(如DELAY2)后,LoRa终端开启第二类型窗口RX2。在开启第二类型窗口RX2后,LoRa终端可以在第二类型窗口RX2内接收LoRa服务器针对上行报文返回的下行报文。第二类型窗口RX2的窗口持续时间可以小于1秒,在到达第二类型窗口RX2的关闭条件(如到达窗口持续时间的终止时间)时,则可以关闭第二类型窗口RX2。

其中,预设第一时间和预设第二时间均可以根据经验配置,对此预设第一时间和预设第二时间的取值均不做限制。参见图1A所示,预设第二时间可以大于预设第一时间,例如,预设第二时间可以为预设第一时间与1秒之和。

其中,第一类型窗口RX1的窗口持续时间与第二类型窗口RX2的窗口持续时间,二者可以相同,也可以不同,对此不做限制。例如,第一类型窗口RX1的窗口持续时间小于1秒,第二类型窗口RX2的窗口持续时间小于1秒。

其中,LoRa终端在第一类型窗口RX1的参数(如报文接收速率)与LoRa终端在第二类型窗口RX2的参数(如报文接收速率),二者可以不同。

例如,在第一类型窗口RX1内,LoRa终端可以通过第一报文接收速率接收下行报文;在第二类型窗口RX2内,LoRa终端可以通过第二报文接收速率接收下行报文,且第一报文接收速率与第二报文接收速率不同。当然,上述参数并不局限于报文接收速率,还可以为其它类型的参数,对此不做限制。

参见图1B所示,为ClassC模式下的报文传输示意图。LoRa终端向LoRa服务器发送上行报文,在上行报文发送成功后,开启第二类型窗口RX2。在开启第二类型窗口RX2后,LoRa终端可以在第二类型窗口RX2内接收LoRa服务器针对上行报文返回的下行报文。为了与ClassA模式兼容,第二类型窗口RX2的窗口持续时间可以为预设第一时间,在到达第二类型窗口RX2的关闭条件(如到达窗口持续时间的终止时间,这个第二类型窗口RX2的关闭条件,也就是第一类型窗口RX1的开启条件)时,则可以关闭第二类型窗口RX2。

在上行报文发送成功,且等待预设第一时间(如DELAY1)后,开启第一类型窗口RX1,即在关闭第二类型窗口RX2后,开启第一类型窗口RX1。在开启第一类型窗口RX1后,LoRa终端可以在第一类型窗口RX1内接收LoRa服务器针对上行报文返回的下行报文。第一类型窗口RX1的窗口持续时间可以小于1秒,在到达第一类型窗口RX1的关闭条件(如到达窗口持续时间的终止时间,即第二类型窗口RX2的开启条件)时,则可以关闭第一类型窗口RX1。

在关闭第一类型窗口RX1后,开启第二类型窗口RX2。在开启第二类型窗口RX2后,LoRa终端可以在第二类型窗口RX2内接收LoRa服务器针对上行报文返回的下行报文。ClassC模式下的第二类型窗口RX2是长期打开的,一直到LoRa终端需要向LoRa服务器发送上行报文,则关闭第二类型窗口RX2。

在关闭第二类型窗口RX2后,LoRa终端可以向LoRa服务器发送上行报文,在上行报文发送成功后,开启第二类型窗口RX2。在上行报文发送成功,且等待预设第一时间后,关闭第二类型窗口RX2,并开启第一类型窗口RX1。在到达第一类型窗口RX1的关闭条件时,则关闭第一类型窗口RX1,并开启第二类型窗口RX2,一直到再次需要向LoRa服务器发送上行报文,以此类推。

在上述实施例中,LoRa终端在第一类型窗口RX1的参数(如报文接收速率)与LoRa终端在第二类型窗口RX2的参数(如报文接收速率),二者可以不同。

例如,在第一类型窗口RX1内,LoRa终端可以通过第一报文接收速率接收下行报文;在第二类型窗口RX2内,LoRa终端可以通过第二报文接收速率接收下行报文,而且,所述第一报文接收速率与所述第二报文接收速率不同。

参见图1A所示,当LoRa终端工作于ClassA模式时,LoRa终端可以在第一类型窗口RX1内接收LoRa服务器针对上行报文返回的下行报文。但是,若需要关闭第一类型窗口RX1时,还没有完整接收到下行报文的全部内容,即LoRa终端在第一类型窗口RX1内正在接收下行报文,那么,也需要关闭第一类型窗口RX1,从而导致正在接收的下行报文无法完整接收,即下行报文传输失败。这样,LoRa服务器需要重新向LoRa终端发送下行报文,浪费了空口资源。

参见图1B所示,当LoRa终端工作于ClassC模式时,LoRa终端可以在第二类型窗口RX2(即图1B中的第一个第二类型窗口RX2)内接收LoRa服务器针对上行报文返回的下行报文。但是,若需要关闭第二类型窗口RX2时,还没有完整接收到下行报文的全部内容,即LoRa终端在第二类型窗口RX2内正在接收下行报文,那么,也需要关闭第二类型窗口RX2,从而导致正在接收的下行报文无法完整接收,即下行报文传输失败。这样,LoRa服务器需要重新向LoRa终端发送下行报文,浪费了空口资源,下行报文传输的可靠性比较差。

参见图1B所示,当LoRa终端工作于ClassC模式时,LoRa终端可以在第一类型窗口RX1内接收LoRa服务器针对上行报文返回的下行报文。但是,若需要关闭第一类型窗口RX1时,还没有完整接收到下行报文的全部内容,即LoRa终端在第一类型窗口RX1内正在接收下行报文,那么,也需要关闭第一类型窗口RX1,从而导致正在接收的下行报文无法完整接收,即下行报文传输失败。这样,LoRa服务器需要重新向LoRa终端发送下行报文,浪费了空口资源。

针对上述问题,本公开提出一种报文传输方法,该方法可以应用于包括LoRa终端和LoRa服务器的网络(如LoRa网络)中,LoRa终端向LoRa服务器发送的报文称为上行报文,LoRa服务器向LoRa终端发送的报文称为下行报文。

通常情况下,LoRa终端主动向LoRa服务器发送上行报文,LoRa服务器在接收到上行报文后,可以向LoRa终端发送下行报文(即上行报文的响应报文)。

例如,LoRa终端可以为部署在停车场的车位传感器,当LoRa终端检测到汽车进入指定位置时,则向LoRa服务器发送上行报文,该上行报文包括车牌号和进入时间等信息。LoRa服务器在接收到该上行报文后,向LoRa终端发送下行报文,该下行报文包括LoRa服务器已经收到上行报文的信息。当LoRa终端检测到汽车离开指定位置时,则向LoRa服务器发送上行报文,该上行报文包括车牌号和离开时间等信息。LoRa服务器在接收到该上行报文后,向LoRa终端发送下行报文,该下行报文包括LoRa服务器已经收到上行报文的信息。综上所述,LoRa服务器可以利用车牌号、进入时间、离开时间等信息进行计费。

当然,上述车位传感器的应用场景只是示例,对此应用场景不做限制。

在上述应用场景下,参见图2所示,为本公开提出的报文传输方法的流程示意图,该方法可以应用于LoRa终端,该方法可以包括以下步骤:

步骤201,在向LoRa服务器发送上行报文后,启动第一下行接收窗口。

参见图1A所示,当LoRa终端工作于ClassA模式时,LoRa终端向LoRa服务器发送上行报文,且上行报文发送成功后,LoRa终端在等待预设第一时间后,开启第一类型窗口RX1,即第一下行接收窗口为第一类型窗口RX1。

参见图1B所示,当LoRa终端工作于ClassC模式时,LoRa终端向LoRa服务器发送上行报文,且上行报文发送成功后,LoRa终端开启第二类型窗口RX2,即第一下行接收窗口为第二类型窗口RX2。或者,LoRa终端向LoRa服务器发送上行报文,且上行报文发送成功后,LoRa终端在等待预设第一时间后,开启第一类型窗口RX1,即第一下行接收窗口为第一类型窗口RX1。

步骤202,若在第一下行接收窗口内接收到LoRa服务器针对该上行报文返回的下行报文,则判断当前时刻是否满足第一下行接收窗口的关闭条件。

如果是,则LoRa终端可以执行步骤203。如果否,则LoRa终端可以等到下一时刻,继续判断当前时刻是否满足第一下行接收窗口的关闭条件,以此类推,一直到当前时刻满足第一下行接收窗口的关闭条件,并执行步骤203。

其中,LoRa终端在启动第一下行接收窗口后,可以在每个时刻(如间隔1毫秒的每个时刻),均判断当前时刻是否满足第一下行接收窗口的关闭条件。

参见图1A所示,第一下行接收窗口为第一类型窗口RX1,第一下行接收窗口的关闭条件为第一类型窗口RX1的关闭条件。例如,假设第一类型窗口RX1的窗口持续时间为800毫秒,则从启动第一类型窗口RX1开始计时,在第800毫秒,确定当前时刻满足第一类型窗口RX1的关闭条件。或者,从启动第一类型窗口RX1开始计时,则在第1000毫秒(即预设第二时间与预设第一时间之差),确定当前时刻满足第一类型窗口RX1的关闭条件。具体的,由于第1000毫秒需要启动第二类型窗口RX2,且在启动第二类型窗口RX2之前,需要关闭第一类型窗口RX1,因此,确定第1000毫秒满足第一类型窗口RX1的关闭条件。

参见图1B所示,若第一下行接收窗口为第二类型窗口RX2(即图1B中的第一个第二类型窗口RX2),第一下行接收窗口的关闭条件为第二类型窗口RX2的关闭条件。例如,假设预设第一时间为1200毫秒,则从启动第二类型窗口RX2开始计时,在第1200毫秒,确定当前时刻满足第二类型窗口RX2的关闭条件。

参见图1B所示,若第一下行接收窗口为第一类型窗口RX1,则第一下行接收窗口的关闭条件可以为第一类型窗口RX1的关闭条件。例如,假设第一类型窗口RX1的窗口持续时间为800毫秒,则从启动第一类型窗口RX1开始计时,在第800毫秒,可以确定当前时刻满足第一类型窗口RX1的关闭条件。

在一个例子中,LoRa终端在第一下行接收窗口内接收到下行报文后,可以从该下行报文中获取前导码;若根据该前导码确定该下行报文的报文类型是LoRa类型,则判断该下行报文中是否包括本LoRa终端的地址。如果该下行报文中包括本LoRa终端的地址,则LoRa终端确定该下行报文是LoRa服务器针对上行报文返回的下行报文。进一步的,LoRa终端在每个时刻,均判断当前时刻是否满足第一下行接收窗口的关闭条件,如果是,则执行步骤203。

若LoRa终端确定下行报文不是LoRa服务器针对上行报文返回的下行报文(即下行报文是干扰报文),则采用传统流程进行处理。例如,若根据前导码确定下行报文的报文类型不是LoRa类型,或者,下行报文中不包括本LoRa终端的地址,则确定下行报文不是LoRa服务器针对上行报文返回的下行报文。

步骤203,在当前时刻满足第一下行接收窗口的关闭条件时,则判断是否完整接收到该下行报文的全部内容。如果否,则可以执行步骤204。

其中,LoRa服务器向LoRa终端发送下行报文时,该下行报文可以包括大量内容,可以将这些内容称为数据A,假设数据A包括子数据A1、子数据A2和子数据A3。LoRa服务器在发送下行报文时,先发送携带子数据A1的下行报文,然后发送携带子数据A2的下行报文,然后发送携带子数据A3的下行报文。

在当前时刻满足第一下行接收窗口的关闭条件时,若LoRa终端在当前时刻已经接收到携带子数据A1、子数据A2和子数据A3的下行报文,确定完整接收到下行报文的全部内容。若LoRa终端在当前时刻未接收到携带子数据A1、子数据A2或子数据A3的下行报文,确定未完整接收到下行报文的全部内容。

步骤204,若未完整接收到该下行报文的全部内容,则禁止关闭该第一下行接收窗口,一直到完整接收到该下行报文的全部内容,即下行报文成功传输。

其中,若未完整接收到该下行报文的全部内容,虽然当前时刻满足第一下行接收窗口的关闭条件,LoRa终端也不关闭该第一下行接收窗口,从而继续接收该下行报文的剩余内容,一直到完整接收到该下行报文的全部内容。

可选的,在一个例子中,当LoRa终端工作于ClassA模式时,第一下行接收窗口可以为第一类型窗口RX1,第二下行接收窗口可以为第二类型窗口RX2。基于此,在完整接收到该下行报文的全部内容后,还可以关闭第一下行接收窗口,并禁止启动第二下行接收窗口,也就是说,不再启动第二下行接收窗口。

可选的,在一个例子中,当LoRa终端工作于ClassC模式时,第一下行接收窗口可以为第一类型窗口RX1,第二下行接收窗口可以为第二类型窗口RX2。基于此,在完整接收到该下行报文的全部内容后,还可以关闭第一下行接收窗口,并启动第二下行接收窗口,也就是说,需要启动第二下行接收窗口。

可选的,在一个例子中,当LoRa终端工作于ClassC模式时,第一下行接收窗口可以为第二类型窗口RX2,第二下行接收窗口可以为第一类型窗口RX1。基于此,在完整接收到该下行报文的全部内容后,还可以保持第一下行接收窗口,并禁止启动第二下行接收窗口,也就是说,不需要关闭第一下行接收窗口,保持第一下行接收窗口处于开启状态,而且,也不再启动第二下行接收窗口。

在一个例子中,针对步骤203,在判断是否完整接收到该下行报文的全部内容后,若完整接收到该下行报文的全部内容,则关闭第一下行接收窗口,并启动第二下行接收窗口。例如,当LoRa终端工作于ClassA模式时,第一下行接收窗口可以为第一类型窗口RX1,第二下行接收窗口可以为第二类型窗口RX2。又例如,当LoRa终端工作于ClassC模式时,第一下行接收窗口可以为第一类型窗口RX1,第二下行接收窗口可以为第二类型窗口RX2;或者,第一下行接收窗口可以为第二类型窗口RX2,第二下行接收窗口可以为第一类型窗口RX1。

基于上述技术方案,本公开实施例中,能够完整接收到下行报文的全部内容,避免下行报文的丢失,节约LoRa终端与LoRa服务器之间重传报文导致的时间开销及流量开销,节约空口资源,增加LoRa终端与LoRa服务器之间报文交互的可靠性。规避LoRa终端无法接收下行报文的问题,解决丢包问题,减少下行报文的丢包率,减少下行报文丢失导致的重传流量,提高通信可靠性。

以下结合几个具体应用场景,对上述技术方案进行进一步的说明。

应用场景1:LoRa终端工作于ClassA模式,第一下行接收窗口可以为第一类型窗口RX1,第二下行接收窗口可以为第二类型窗口RX2。

参见图3A所示,LoRa终端向LoRa服务器发送上行报文,在上行报文发送成功后,等待预设第一时间(如DELAY1)后,开启第一类型窗口RX1。在开启第一类型窗口RX1后,LoRa终端可以在第一类型窗口RX1内接收下行报文。

LoRa终端在第一类型窗口RX1内接收到下行报文后,判断该下行报文是否为LoRa服务器针对该上行报文返回的下行报文。如果是,则采用本公开的技术方案,如果否,则采用传统流程,对此传统流程不做限制。为了判断该下行报文是否为LoRa服务器针对该上行报文返回的下行报文,可以采用如下方式:

参见图3B所示,为LoRa报文的示意图,LoRa报文可以包括但不限于前导码(Preamble)、Header(报文头)、Payload(有效载荷)、Payload CRC(Cyclic Redundancy Check,循环冗余校验)等字段。其中,前导码用于表示报文类型,如LoRa报文的前导码是指定标识,指定标识表示报文类型是LoRa类型。Header包括NwkSKey(用于数据校验)、AppSKey(用于数据加密)、DevAddr(表示LoRa终端的地址)等内容。Payload是真正发送的数据,Payload CRC是对Payload数据的CRC校验。当然,上述只是LoRa报文的示例,对此不做限制。

LoRa终端在第一类型窗口RX1内接收到下行报文后,先从该下行报文中获取前导码。若根据该前导码确定该下行报文的报文类型不是LoRa类型,则说明该下行报文不是LoRa服务器针对上行报文返回的下行报文,采用传统流程。

若根据该前导码确定该下行报文的报文类型是LoRa类型,则从该下行报文中获取DevAddr字段。若DevAddr字段携带的不是本LoRa终端的地址,则说明该下行报文不是LoRa服务器针对上行报文返回的下行报文,采用传统流程。

若DevAddr字段携带的是本LoRa终端的地址,则说明该下行报文是LoRa服务器针对上行报文返回的下行报文,LoRa终端采用本公开的技术方案。

LoRa终端在确定下行报文是LoRa服务器针对上行报文返回的下行报文后,LoRa终端在每个时刻,判断当前时刻是否满足第一类型窗口RX1的关闭条件。如果否,则等到下一时刻,继续判断当前时刻是否满足第一类型窗口RX1的关闭条件,以此类推,一直到当前时刻满足第一类型窗口RX1的关闭条件。

假设第一类型窗口RX1的窗口持续时间为800毫秒,则从启动第一类型窗口RX1开始计时,在第800毫秒,确定当前时刻满足第一类型窗口RX1的关闭条件。或者,从启动第一类型窗口RX1开始计时,在第1000毫秒(即预设第二时间与预设第一时间之差),确定当前时刻满足第一类型窗口RX1的关闭条件。

在当前时刻满足第一类型窗口RX1的关闭条件时,LoRa终端还可以进一步判断是否完整接收到该下行报文的全部内容。如果是,则LoRa终端关闭第一类型窗口RX1,并启动第二类型窗口RX2。如果否,则LoRa终端禁止关闭第一类型窗口RX1,一直到LoRa终端完整接收到该下行报文的全部内容。

在完整接收到该下行报文的全部内容后,参见图3A所示,LoRa终端可以关闭第一类型窗口RX1,但是,LoRa终端不再启动第二类型窗口RX2。

综上所述,本公开实施例中,LoRa终端工作于ClassA模式,可以保证LoRa终端在第一类型窗口RX1内接收到完整的下行报文,不会导致丢包的问题。通过前导码和DevAddr字段的判断,可以极大的减少干扰报文的影响。

应用场景2:LoRa终端工作于ClassC模式,第一下行接收窗口可以为第二类型窗口RX2,第二下行接收窗口可以为第一类型窗口RX1。

参见图3C所示,LoRa终端向LoRa服务器发送上行报文,在上行报文发送成功后,LoRa终端可以开启第二类型窗口RX2。在开启第二类型窗口RX2后,LoRa终端可以在第二类型窗口RX2内接收下行报文。其中,为了与ClassA模式兼容,第二类型窗口RX2的窗口持续时间可以为预设第一时间。

LoRa终端在第二类型窗口RX2内接收到下行报文后,判断下行报文是否为LoRa服务器针对该上行报文返回的下行报文。如果是,采用本公开的技术方案。具体的,从下行报文中获取前导码,若根据前导码确定下行报文的报文类型是LoRa类型,从下行报文中获取DevAddr字段。若DevAddr字段携带的是本LoRa终端的地址,说明下行报文是LoRa服务器针对上行报文返回的下行报文。

LoRa终端在确定下行报文是LoRa服务器针对上行报文返回的下行报文后,LoRa终端在每个时刻,判断当前时刻是否满足第二类型窗口RX2的关闭条件。如果否,则等到下一时刻,继续判断当前时刻是否满足第二类型窗口RX2的关闭条件,以此类推,一直到当前时刻满足第二类型窗口RX2的关闭条件。

其中,假设预设第一时间为1200毫秒,则从启动第二类型窗口RX2开始计时,在第1200毫秒,确定当前时刻满足第二类型窗口RX2的关闭条件。

在当前时刻满足第二类型窗口RX2的关闭条件时,LoRa终端还可以进一步判断是否完整接收到该下行报文的全部内容。如果是,则LoRa终端关闭第二类型窗口RX2,并启动第一类型窗口RX1。如果否,则LoRa终端禁止关闭第二类型窗口RX2,一直到LoRa终端完整接收到该下行报文的全部内容。

在完整接收到该下行报文的全部内容后,参见图3C所示,LoRa终端不关闭第二类型窗口RX2,也不启动第一类型窗口RX1,保持第二类型窗口RX2。

综上所述,本公开实施例中,LoRa终端工作于ClassC模式,可以保证LoRa终端在第二类型窗口RX2内接收到完整的下行报文,不会导致丢包的问题。通过前导码和DevAddr字段的判断,可以极大的减少干扰报文的影响。

应用场景3:LoRa终端工作于ClassC模式,第一下行接收窗口可以为第一类型窗口RX1,第二下行接收窗口可以为第二类型窗口RX2。

参见图3D所示,LoRa终端向LoRa服务器发送上行报文,在上行报文发送成功后,LoRa终端可以开启第二类型窗口RX2。在开启第二类型窗口RX2后,LoRa终端在第二类型窗口RX2内并未接收到下行报文。其中,为了与ClassA模式兼容,第二类型窗口RX2的窗口持续时间可以为预设第一时间。

在上行报文发送成功,且等待预设第一时间(如DELAY1)后,LoRa终端可以关闭第二类型窗口RX2,并开启第一类型窗口RX1。LoRa终端在开启第一类型窗口RX1后,LoRa终端可以在第一类型窗口RX1内接收下行报文。

LoRa终端在第一类型窗口RX1内接收到下行报文后,判断下行报文是否为LoRa服务器针对该上行报文返回的下行报文。如果是,采用本公开的技术方案。具体的,从下行报文中获取前导码,若根据前导码确定下行报文的报文类型是LoRa类型,从下行报文中获取DevAddr字段。若DevAddr字段携带的是本LoRa终端的地址,说明下行报文是LoRa服务器针对上行报文返回的下行报文。

LoRa终端在确定下行报文是LoRa服务器针对上行报文返回的下行报文后,LoRa终端在每个时刻,判断当前时刻是否满足第一类型窗口RX1的关闭条件。如果否,则等到下一时刻,继续判断当前时刻是否满足第一类型窗口RX1的关闭条件,以此类推,一直到当前时刻满足第一类型窗口RX1的关闭条件。

假设第一类型窗口RX1的窗口持续时间为800毫秒,则从启动第一类型窗口RX1开始计时,在第800毫秒,确定当前时刻满足第一类型窗口RX1的关闭条件。或者,从启动第一类型窗口RX1开始计时,在第1000毫秒(即预设第二时间与预设第一时间之差),确定当前时刻满足第一类型窗口RX1的关闭条件。

在当前时刻满足第一类型窗口RX1的关闭条件时,LoRa终端还可以进一步判断是否完整接收到该下行报文的全部内容。如果是,则LoRa终端关闭第一类型窗口RX1,并启动第二类型窗口RX2。如果否,则LoRa终端禁止关闭第一类型窗口RX1,一直到LoRa终端完整接收到该下行报文的全部内容。

在完整接收到该下行报文的全部内容后,参见图3D所示,LoRa终端关闭第一类型窗口RX1,并启动第二类型窗口RX2,即需要启动第二类型窗口RX2。

综上所述,本公开实施例中,LoRa终端工作于ClassC模式,可以保证LoRa终端在第一类型窗口RX1内接收到完整的下行报文,不会导致丢包的问题。通过前导码和DevAddr字段的判断,可以极大的减少干扰报文的影响。

基于与上述方法同样的构思,本公开实施例还提出一种报文传输装置,该报文传输装置可以应用于LoRa终端,参见图4所示,所述装置可以包括:

启动模块41,用于在向LoRa服务器发送上行报文后,启动第一下行接收窗口;

判断模块42,用于若在所述第一下行接收窗口内接收到所述LoRa服务器针对所述上行报文返回的下行报文,则判断当前时刻是否满足第一下行接收窗口的关闭条件;如果是,则判断是否完整接收到所述下行报文的全部内容;

处理模块43,用于若未完整接收到所述下行报文的全部内容,则禁止关闭所述第一下行接收窗口,一直到完整接收到所述下行报文的全部内容。

可选地,在一个例子中,所述报文传输装置还包括(在图4中未示出):

确定模块,用于若在所述第一下行接收窗口内接收到下行报文,则从所述下行报文中获取前导码;若根据所述前导码确定所述下行报文的报文类型是LoRa类型,则判断所述下行报文中是否包括所述LoRa终端的地址;

如果所述下行报文中包括所述LoRa终端的地址,则确定所述下行报文是所述LoRa服务器针对所述上行报文返回的下行报文。

当所述LoRa终端工作于ClassA模式时,所述处理模块43还用于:

在完整接收到所述下行报文的全部内容后,则关闭所述第一下行接收窗口,并禁止启动第二下行接收窗口;其中,所述第一下行接收窗口包括第一类型窗口RX1,所述第二下行接收窗口包括第二类型窗口RX2。

当所述LoRa终端工作于ClassC模式时,所述处理模块43还用于:

在完整接收到所述下行报文的全部内容后,则关闭所述第一下行接收窗口,并启动第二下行接收窗口;其中,所述第一下行接收窗口包括第一类型窗口RX1,所述第二下行接收窗口包括第二类型窗口RX2;或者,

在完整接收到所述下行报文的全部内容后,则保持所述第一下行接收窗口,并禁止启动第二下行接收窗口;其中,所述第一下行接收窗口包括第二类型窗口RX2,所述第二下行接收窗口包括第一类型窗口RX1。

所述处理模块43还用于:

在判断是否完整接收到所述下行报文的全部内容后,若完整接收到所述下行报文的全部内容,则关闭所述第一下行接收窗口,并启动第二下行接收窗口。

本公开实施例提供的LoRa终端,从硬件层面而言,硬件架构示意图具体可以参见图5所示,可以包括:机器可读存储介质和处理器,其中:

所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令。

所述处理器与所述机器可读存储介质通信,读取和执行所述机器可读存储介质中存储的所述机器可执行指令,以实现上述报文传输方法。

本公开实施例提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述报文传输方法。

这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本公开时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1