从 SIM7080G 调制解调器上的 CoAP 逐块传输读取多个块

问题描述 投票:0回答:1

问题:

SIM7080G 调制解调器可以检测到服务器发出的 CoAP 响应中有多个块,但只能读取第一个块。

使用的AT命令:

AT+CCOAPINIT
AT+CCOAPURL="coap://coap.mydomain.no:5683"
AT+CCOAPPARA="CODE",1,uri-path,0,"certificate/fcd15ca1600f045/ca",token,0,"UBXTRDGZALKNPME"

Writing: AT+CCOAPACTION
Reponse: +CCOAPACTION: 0,0
OK
+CCOAPRECV: 8671,532,512    <- Package size of 532, payload size 512, This is correct for the first package

Writing: AT+CCOAPACTION=4
Response: AT+CCOAPACTION=4
+CCOAPACTION: 4,2,8671 <- 2 blocks on queue
OK
Writing: AT+CCOAPHEAD=8671,1
Response: AT+CCOAPHEAD=8671,1
+CCOAPHEAD: 1,1,0,8,2.05,8671,554258545244475A,50,,,,,0,,,,,,,,,0:1:512,,619 <- block 1
OK

Writing: AT+CCOAPREAD=8671
Response: AT+CCOAPREAD=8671
+CCOAPREAD: 512, first 512 characters of the looong string sent by the server...
OK
+CCOAPRECV: 8671,532,512

(repeat AT+CCOAPACTION=4, AT+CCOAPHEAD, and AT+CCOAPREAD for subsequent blocks)

重复命令只会读出接收队列上的第一个块。

预期回应:

调制解调器应该能够通过循环命令或指定要读取的块来从 CoAP 响应中读出所有块(本例中为 2 个)。

调查文件:

SIM7070_SIM7080_SIM7090 Series_AT Command Manual v1.04
SIM7070_SIM7080_SIM7090 Series_CoAP(S)_Application Note v1.03

问题:

使用 CoAP 时,需要哪些 AT 命令和序列来从 SIM7080G 调制解调器上的队列中读取多个或特定块(例如块 2)?

network-programming at-command rfc coap sim7600
1个回答
0
投票

需要明确的是: CoAP 同时推出了两个扩展来解决更大的负载:

  • 传统的是RFC 7959,它将通用标准请求中较大负载的传输转换为较小负载(多个请求/响应交换)。

  • 另一种,RFC 9177。

  • 您可以使用 TCP 上的 CoAP,RFC 8323

问题在于调制解调器支持什么。我想,使用 RFC 7959 你可能有最好的机会,但这可能是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.