unetstack - 使用 JSON 远程访问 Unet 调制解调器

标签 unetstack

我正在尝试在调制解调器中使用 JsonTypeAdapter 从远程源传输一些数据。 通过调制解调器启动脚本 (JsonAdapter.enable()) 启用适配器,并建立 TCP 连接 到端口 1100 处的调制解调器。我按照 Fjåge 文档中的“Hello world”示例,将以下 JSON 发送到调制解调器:

{"action":"发送","message":{"clazz":"org.arl.unet.DatagramReq","data":{"data":{"clazz":"[ B","数据":"aGVsbG8gd29ybGQh"},"msgID":"8152310b-155d-4303-9621-c610e036b373","perf":"请求","收件人":"phy","发送者":"MyCustomInterface “}}}

我已将日志级别设置为“全部”,并且可以看到我在日志中收到了传入的 TCP 连接,但调制解调器没有传输任何数据。 我正在订阅物理代理,但在 WebShell 中没有收到任何通知(尽管使用 UnetSocket 工作正常)。

我猜测 JsonAdapter 在此 TCP 连接上未处于事件状态、JSON 字符串有错误或我的应用程序未正确发送,或者是我错过的其他内容。

最佳答案

我复制了您粘贴的任何 JSON 消息,它对我来说工作得很好。我采取的步骤:

  1. 我使用unet audio SDOAM来测试:
$ bin/unet -c audio
Modem web: http://localhost:8080/
> iface
tcp://192.168.1.8:1100 [API]
ws://192.168.1.8:8080/ws [API]
tcp:///192.168.1.8:1100//127.0.0.1.55832 [API]
unetsh: console://- [GroovyScriptEngine]
websh: ws://192.168.1.8:8080/fjage/shell/ws [GroovyScriptEngine]

192.168.1.8:1100 API 接口(interface)告诉我调制解调器正在监听哪个端口(端口 1100)。因此,我连接到它:

$ nc 192.168.1.8 1100
{"alive": true}

{"alive": true} 告诉我我已连接到正确的端口,并且调制解调器正在说“你好”:-)

现在,我复制并粘贴您的 JSON 消息:

{"action":"send","message":{"clazz":"org.arl.unet.DatagramReq","data":{"data":{"clazz":"[B","data":"aGVsbG8gd29ybGQh"},"msgID":"8152310b-155d-4303-9621-c610e036b373","perf":"REQUEST","recipient":"phy","sender":"MyCustomInterface"}}}

我收到回复:

{"action":"send","message":{"clazz":"org.arl.fjage.Message","data":{"msgID":"41b8264c-be98-4bbe-8b72-8986606513ae","perf":"AGREE","recipient":"MyCustomInterface","sender":"phy","inReplyTo":"8152310b-155d-4303-9621-c610e036b373","sentAt":1586233766542}},"relay":false}

确认消息已收到,并且正在转发到其他从属容器。紧接着是我的 SDOAM 发出的“嗡嗡”声,用于通过声卡发送帧,以及两条消息(TxFrameStartNtfTxFrameNtf),以确认传输成功完成:

{"action":"send","message":{"clazz":"org.arl.unet.phy.TxFrameStartNtf","data":{"txTime":15784016,"txDuration":1511416,"type":2,"msgID":"0a5bae1e-b16c-4bbb-8fcf-36ad55ffc64e","perf":"INFORM","recipient":"#phy__ntf","sender":"phy","inReplyTo":"8152310b-155d-4303-9621-c610e036b373","sentAt":1586233767349}},"relay":false}
{"action":"send","message":{"clazz":"org.arl.unet.phy.TxFrameNtf","data":{"txTime":15759432,"type":2,"location":{"clazz":"[D","data":""},"msgID":"f6e1dee6-ed31-4850-9d90-7b591a740971","perf":"INFORM","recipient":"MyCustomInterface","sender":"phy","inReplyTo":"8152310b-155d-4303-9621-c610e036b373","sentAt":1586233768761}},"relay":false}

关于unetstack - 使用 JSON 远程访问 Unet 调制解调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61064709/

相关文章:

groovy - 从代理访问路由表以获得下一跳

unetstack - UnetStack链路代理中maxPropagationDelay的作用

unetstack - 如何处理广播请求响应的冲突?

unetstack - 没有可用的 ADDRESS_RESOLUTION 代理

groovy - UNET 堆栈中的动态路由

unetstack - 乌内特模拟 : Is there a functionality to move a node from one coordinate to another by passing command from another node?

unetstack - 在 macOS 中安装 Unet 音频时未找到 native 库 `yoda_phy_pa_x86_64`

communication - 在 UnetStack 中实现 TDMA