docker - IoT Edge 错误的 USB 串行 COM 端口访问
问题描述
我正在尝试从 docker IoT Edge 模块中的 modbus comport 中读取数据。我提供了相关的 createOptions:
{“HostConfig”:{“隔离”:“进程”,“设备”:[{“PathOnHost”:“class/86E0D1E0-8089-11D0-9CE4-08003E301F73”,“PathInContainer”:“”,“CgroupPermissions”:“ " } ], "绑定": [ "C:/Streamwise:C:/Streamwise" ] } }
这在某些 ipcs 上完美无缺,但在其他 ipcs 上却失败了
System.IO.FileNotFoundException:找不到文件“COM4”。文件名:'COM4'
当我尝试打开 serail 端口时
如果我不指定任何 createOptions,这与我收到的错误相同。因此,这些选项似乎没有被应用。知道为什么吗?
下面的代码片段
public static void Connect(string portName)
{
Console.WriteLine(portName);
// Configure serial port
SerialPort port = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);
port.Open();
master = new ModbusFactory().CreateRtuMaster(new SerialPortAdapter(port));
master.Transport.ReadTimeout = 200;
master.Transport.WriteTimeout = 200;
}
port.open() 发生错误
附加上下文:由于某种原因,在 ipcs 上,我必须在 daemon.json 中为 iotedge-moby 指定 DNS 服务器,出现此问题。不确定它们是否相关或纯属巧合。
解决方案
您很可能需要使用 PortBindings 将主机端口映射到模块端口:
例如:
"createOptions": {
"HostConfig": {
"PortBindings": {
"8080/tcp": [
{
"HostPort": "80"
}
]
}
}
}
推荐阅读
- python - 如何得出一些平均评分
- php - 在 include() 中插入变量如何正确?
- python - 如何将单个枚举用于 django 模型和 graphql 突变参数?
- java - 如何在显示键盘时禁用滚动 ViewPager?
- docker - Minikube 日志轮换
- php - 正则表达式约束路由
- swift - SwiftUI:选择列表中的项目后更新数据
- javascript - 位置重新加载设置页面
- javascript - FlatPickr - 获取日历日期范围之间的星期日(包括)
- redis - Nestjs - 使用 ClientProxy 在 2 个微服务之间进行 redis 通信