我在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中的可用端口,但显然我的所有端口都已关闭:
>> 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”表示所有端口都已关闭。
答案 0 :(得分:6)
首先,VirtualBox不会为您的主机创建串行端口。因此,您必须使用其他软件在主机上创建两个虚拟COM端口,并虚拟地桥接这两个端口。然后使用一个端口连接到Simulink,其他端口必须以VM COM端口使用此端口的方式设置。
要在Windows上创建虚拟COM端口,我将使用com0com
Faking an RS232 Serial Port 的。您可以使用任何您喜欢的软件。
安装com0com后,从setuppg.exe
打开C:\Program Files (x86)\com0com
。
现在点击“申请”。现在,您将COM9
和COM10
桥接(就像COM9
和COM10
内部连接)。
接下来,我们需要为该开放COM9 port in Host
连接COM1 port in Guest OS
到Oracle VM VirtualBox Manager
,然后打开所需虚拟机的设置。现在,选择 Serial Ports 并进行如下所示的设置,然后单击OK。
注意:Windows仅为COM端口1到9提供旧名称。对于所有其他COM端口,您必须使用Windows下的完整设备命名约定。因此,如果您决定使用
COM10
而不是COM9
,则在COM10
使用Path/Address
将无效。相反,您必须使用\\.\COM10
。
现在启动虚拟机,端口就绪。现在,端口将在Simulink中显示并连接到此方案中的COM10
,并在虚拟机中将QGroundControl station
连接到COM1
。
Simulink< - > COM10(主持人)
COM10(主持人)< - > COM9(主机)>>使用com0com连接
COM9(主持人)< - > COM1(访客)>>由Oracle VM VirtualBox连接
COM1(访客)< - > QGroundControl站