首页 文章

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

提问于
浏览
3

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

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

So first part of my question - VirtualBox:

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

Enter image description here

在图片中你可以看到使用了COM6,但我使用的是COM1和COM2 . 我得到了相同的结果 .

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

Second part of my question - Simulink:

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

Enter image description here

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

Last part - MATLAB:

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

>> 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() - 命令打开我的一个端口,我会收到以下消息:

使用serial / fopen时出错打开失败:端口:COM1不可用 . 没有端口可用 . 使用INSTRFIND确定是否有其他仪器对象连接到所请求的设备 . 使用“INSTRFIND”表示所有端口都已关闭 .

1 回答

  • 4

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

    要在Windows上创建虚拟COM端口,我将使用Faking an RS232 Serial Port来自Faking an RS232 Serial Port . 您可以使用任何您喜欢的软件 .

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

    Enter image description here

    现在点击申请 . 现在你将 COM9COM10 桥接(它就像 COM9COM10 在内部连接) .

    接下来,我们需要将 COM9 port in Host 连接到 COM1 port in Guest OS ,以打开 Oracle VM VirtualBox Manager 并打开所需虚拟机的设置 . 现在,选择如下所示的串行端口和设置,然后单击确定 .

    Enter image description here

    注意:Windows仅为COM端口1到9提供旧名称 . 对于所有其他COM端口,您必须使用Windows下的完整设备命名约定 . 因此,如果您决定使用COM10而不是COM9,则在路径/地址处使用COM10将不起作用 . 相反,你必须使用\ . \ COM10 .

    现在启动虚拟机,端口就绪 . 现在,端口将显示在Simulink中并连接到此方案中的 COM10 ,在虚拟机中,将 QGroundControl station 连接到 COM1 .

    Simulink < - > COM10(主机)COM10(主机)< - > COM9(主机)>>使用com0com连接COM9(主机)< - > COM1(访客)>>通过Oracle VM VirtualBox连接COM1(访客) < - > QGroundControl站

相关问题