河北稳控科技DLS11 网关中继器(LTE-LoRA) 数据发送机制
DLS11 是 LoRA-LTE 网关设备,专用于接收其它 LoRA 设备发来的数据包存储并在预定的时间间隔后统一发送(目前支持 VSxxx、NLM3、NLM5、NLM6 的 LoRA 数据包格式)。发送的方式有:UART、TCP、EMAIL、FTP、RF,通过设置寄存器 SEND_WAY 的值来选择。在发送数据时,还可以通过修改寄存器 DAT_PRO 来选择数据包的格式,当发送方式为 UART、TCP、RF 时建议使用 HEX 或者 STR1.0 格式,当为 EMAIL、FTP 时仅可使用 STR2.0 格式。当使用 TCP、EMAIL、FTP 方式发送数据时,使用 UDID 来区分不同的设备。UDID 是 15 个字符组成的字符串,每台设备均有唯一的 UDID。
DLS11 本身的 UDID 最后两个字符恒为“00”。DLS11 发送的是多台设备的数据,为了区分不同的设备,DLS 在读取接收到的数据包时会使用数据包中包含的发送方(某台 LoRA 设备)地址(IDn)动态的生成一个唯一 UDID,UDID 码的生成规则为:将 DLS11自身 UDID 最后两个字符替换为 IDn 的 16 进制字符串。
例如:DLS11 的 UDID 为“123456789012300”,当它读取某个接收到的数据包时,会检测数据包格式并解 析 出 其 中 的 “ 发 送 方 设 备 地 址 IDn” , 若 IDn 为 0x01 , 则 会 为 这 条 数 据 动 态 的 生 成UDID“123456789012301”,使用此 UDID 将读取到的数据发送到服务器。即:它发送的这条数据是由它代理发送的 1 号设备的数据。
TCP 数据的可靠传输
为了确保 TCP 数据包发送的可靠性,可修改寄存器 NEED_TCP_RETURN 为 1,当 DLS11 向服务器发送数据后会等待服务器返回明确的应答“KO”,若未收到服务器正确应答时,会重新尝试发送 3 次,若仍未收到服务器的应答,则标记此条数据为“未发送”,下次启动时会进行补发。数据补发时,若数据协议为 STR1.0 时,会在数据包的末尾增加“@YYYY-MM-DD HH:MM:SS”时间戳,以标识此条数据的时间信息。连续 3 次发送(补发)失败的数据,不再发送。