首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问WS2016坞容器内的虚拟com端口

访问WS2016坞容器内的虚拟com端口
EN

Stack Overflow用户
提问于 2016-09-27 11:19:20
回答 1查看 656关注 0票数 1

运行在Win7(主机)和Virtual上的Windows 2016 TP5(来宾vm)。在WS2016上,我使用用于容器的windowsservercore基映像来运行docker。

我正在尝试一种车队管理系统,在这种系统中,我试图在独立的码头图像中启动多辆模拟车辆。

这些车辆模拟器使用模拟gps向虚拟com端口发送数据,由模拟车辆从中读取数据。

在windows /7/Server 2016中,我成功地使用了com0com(2.2.2.0签名)来创建虚拟com端口。

我的问题是如何将虚拟com端口安装在对接器容器中,或者将它们作为主机上的设备访问。

我的第一次尝试是在坞内运行com0com,使用静默模式安装驱动程序很好,但是当使用已安装的应用程序创建虚拟com端口对时会遇到问题。该命令停止运行,如果我查看Application日志,每次尝试运行该命令时,我都可以看到这种类型的几行。

代码语言:javascript
复制
<date> <time> Information Windows Error Rep. .. 1001 Fault bucket , type 0 

相反,当尝试在主机中创建设备并传递设备时,我似乎无法访问它们。

使用com0com --列出容器中的,我可以看到设备,但与主机中的名称不同。

在关联的Dockerfile中,我使用com0com setupc.exe将它们重命名为与主机上标识的名称相同的名称

在主机上发出的模式命令正确地列出了端口,使用了容器执行的模式命令,但没有列出端口,只显示了一个项: CON

然后,我尝试使用--device=//./COM128://./COM128参数将它们传递给docker运行。

注意:这是到达设备的正确“路径”吗?

值得注意的结果是零,com0com setupc命令提供相同的结果,与模式相同。

奇怪的是,当我运行powershell并列出序列化端口时,我会得到主机上可用的预期的comport,并给出正确的名称,但是尝试打开其中的一个会导致异常。

代码语言:javascript
复制
PS C:\sims\com0com> [System.IO.Ports.SerialPort]::getportnames()
COM128
COM129
PS C:\sims\com0com> $comports=[System.IO.Ports.SerialPort]::getportnames()
PS C:\sims\com0com> $port= new-Object System.IO.Ports.SerialPort $comports[0],9600,None,8,one
PS C:\sims\com0com> $port.open()
Exception calling "Open" with "0" argument(s): "The port 'COM128' does not exist."

最后,使用另一个虚拟com端口软件(Eltima),在主机中设置它们,尝试在容器中使用ps打开端口时,最终结果与com0com配置的端口相同。

更新:

尝试了一种新的方法,在超级v中运行容器,使用-isolation标志进行对接运行,考虑到您可以在超级v容器中安装com0com驱动程序,而不必尝试从主机共享它们。

在超级v中运行迫使我们改变为运行纳米服务器的基本映像,而不是窗口服务器核心的基本映像。

目前,由于安装程序(基于NSIS的)是32位应用程序,纳秒服务器只能运行64位应用程序,因此无法在纳秒服务器中运行com0com安装工具。

快速浏览表明,新版本(3.0)的NSIS可以与包含在com0com回购中的NSIS脚本一起使用。

所有关于如何前进的想法都是欢迎的!

P.S: msdn容器论坛上的同一个问题已发布

EN

回答 1

Stack Overflow用户

发布于 2016-10-25 11:17:15

更改为使用命名管道使其工作,因为似乎没有其他人使用的窗口与串口对接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39723302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档