首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VirtualBox中主机和来宾之间通过COM端口连接

在VirtualBox中主机和来宾之间通过COM端口连接
EN

Stack Overflow用户
提问于 2016-06-09 14:20:45
回答 1查看 30.8K关注 0票数 9

我在VirtualBox的Ubuntu (16.04)上运行了一个应用程序,而VirtualBox运行在Windows 10(主机)上。

在Simulink (运行在我的主机上),我有一个模拟,在最后阶段,我收集一些价值。我希望以一定的波特率通过串行连接将这些值输出到运行在VirtualBox (即QGroundControl站点)上的应用程序。

所以我问题的第一部分- VirtualBox:

在VirtualBox中,我启用了串口并选择了端口模式下的主机管道,如下所示:

在图片中,您可以看到使用了COM6,但我使用了COM1和COM2。我得到的结果都是一样的。

我不太习惯使用VirtualBox,所以我不知道这是否意味着我现在已经在我的主机和来宾之间创建了一个连接,还是我仍然需要以任何方式激活或连接它们?

我问题的第二部分- Simulink:

在Simulink中,我想使用串行发送输出我的值(因为我认为这是最简单的方法?)如果有更好的方法,请告诉我),但是如果我想选择一个端口,就不会显示端口,正如您可以看到的:

我需要在VirtualBox/Simulink中做什么/更改才能显示我的COM端口?

最后一部分- MATLAB:

因为在Simulink中,没有显示COM端口。我想在MATLAB中检查可用的端口,但显然我的所有端口都关闭了:

代码语言:javascript
复制
>> info = instrhwinfo('serial')

info =

  HardwareInfo with properties:

     AvailableSerialPorts: {0x1 cell}
           JarFileVersion: 'Version 3.8'
    ObjectConstructorName: {0x1 cell}
              SerialPorts: {0x1 cell}

Access to your hardware may be provided by a support package. Go to the Support Package Installer to learn more.

如果我试图使用fopen()-command打开我的一个端口,就会得到以下消息:

使用串行/fopen错误 打开失败:端口: COM1不可用。没有端口可用。 使用INSTRFIND确定其他仪器对象是否连接到所请求的设备。 使用"INSTRFIND“显示所有端口都关闭。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-10 09:10:19

首先,VirtualBox不会为您的主机创建串行端口。因此,您必须使用其他软件在主机上创建两个虚拟COM端口,并将这两个端口连接起来。然后使用一个端口连接到Simulink,另一个端口必须设置为VM端口使用此端口的方式。

为了在Windows上创建虚拟COM端口,我将使用来自https://stackoverflow.com/questions/1605721/faking-an-rs232-serial-porthttps://stackoverflow.com/questions/1605721/faking-an-rs232-serial-port。你可以使用任何你喜欢的软件。

安装com0com后,从C:\Program Files (x86)\com0com打开setuppg.exe

现在单击apply。现在,您将对COM9COM10进行桥接(类似于COM9COM10在内部连接)。

接下来,我们需要将COM9 port in Host连接到COM1 port in Guest OS,以便打开Oracle VM VirtualBox Manager,并打开所需虚拟机的设置。现在,选择串口和安装程序,如下所示,然后单击OK。

注意: Windows只为COM端口1到9提供遗留名称。对于所有其他COM端口,必须在Windows下使用完整的设备命名约定。因此,如果您决定使用COM10而不是COM9,那么使用COM10 at Path/Address是行不通的。相反,您必须使用\\.\COM10

现在启动虚拟机,您的端口就准备好了。现在将在Simulink中显示端口,并在这个场景中连接到COM10,在虚拟机中,将您的QGroundControl station连接到COM1

Simulink <-> COM10 (主机) COM10 (主机)<->使用com0com连接的COM9 (主机) >> COM9 (主机)<-> COM1 (来宾) >>由Oracle连接 COM1 (客人)<-> QGroundControl站

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

https://stackoverflow.com/questions/37728628

复制
相关文章

相似问题

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