微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Visual Studio Code 调试 Azure IoT Edge 模块

如何解决使用 Visual Studio Code 调试 Azure IoT Edge 模块

我无法对在 VS Code 上运行的 IoT Edge 模块进行本地调试,但部分问题可能是我不明白我在这些步骤中在做什么。

我正在遵循 Microsoft 指南 here。当我在 VS Code 中运行命令“Azure IoT Edge:启动单个模块的 IoT Edge Hub Simulator”时,任何人都可以向我解释,为什么我需要传递“输入名称”?为什么模拟器需要知道这一点。我的边缘模块上有多个输入命令,我需要通过它的事实让我怀疑模拟器实际做了什么。我希望能够调试多个输入。

同样在同一个文档中,我看不到它如何定义我想在模拟器中运行的模块。我是否遗漏了什么或过程是否令人困惑?

解决方法

当您为单个模块启动 IoT Edge 中心模拟器时,您会生成两个 Docker 容器。一个是 edgeHub,另一个是测试实用程序。测试实用程序充当您可以向其发送 HTTP 请求的服务器,请求指定输入名称和数据。您可以使用它向模块上的各种输入发送消息。看看那个,我明白为什么向模拟器提供输入名称会令人困惑。但是当您检查 edgeHub 容器时,您会看到以下环境值被传递:

"routes__output=FROM /messages/modules/target/outputs/* INTO BrokeredEndpoint(\"/modules/input/inputs/print\")","routes__r1=FROM /messages/modules/input/outputs/input2 INTO BrokeredEndpoint(\"/modules/target/inputs/input2\")","routes__r2=FROM /messages/modules/input/outputs/foo INTO BrokeredEndpoint(\"/modules/target/inputs/foo\")","routes__r3=FROM /messages/modules/input/outputs/input1 INTO BrokeredEndpoint(\"/modules/target/inputs/input1\")"

就像在真实设备上一样,您需要路由来与您的模块对话。 edgeHub 容器使用您在模拟器启动期间提供的值注册这些路由。该输入可以是逗号分隔的列表。因此,如果您使用更多输入,请在启动模拟器时随意提供它们。在幕后,该命令运行:

iotedgehubdev start -i "input1,input2,foo"

注意:当我用最新的 VS Code 扩展测试这个时,我第一次运行它时,文本框包含:“input1,input2”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。