Lis*_*Lis 5 matlab virtualbox simulink communication qgroundcontrol
我在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.
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用fopen()命令打开一个端口,则会收到以下消息:
使用串行/打开错误
打开失败:端口:COM1不可用。没有可用的端口。
使用INSTRFIND确定是否将其他仪器对象连接到请求的设备。
使用“ INSTRFIND”显示所有端口均已关闭。
首先,VirtualBox不会为您的主机创建一个串行端口。因此,您必须使用某些其他软件在主机上创建两个虚拟COM端口,并以虚拟方式桥接这两个端口。然后,使用一个端口连接到Simulink,并且必须以VM COM端口使用此端口的方式进行设置。
对于在Windows上创建我一个虚拟COM端口将使用com0com
从
伪造的RS232串行端口。您可以使用任何喜欢的软件。
安装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
然后打开所需虚拟机的设置。现在,选择“ 串行端口”和设置,如下所示,然后单击“确定”。
注意:Windows仅为COM端口1至9提供旧名称。对于所有其他COM端口,必须在Windows下使用完整的设备命名约定。因此,如果您决定使用
COM10
而不是COM9
,则使用COM10
atPath/Address
无效。相反,您必须使用\\.\COM10
。
现在启动您的虚拟机,您的端口已准备就绪。现在,端口将显示在Simulink中,并COM10
在这种情况下连接到该端口,在虚拟机中,将您的端口连接QGroundControl station
到COM1
。
Simulink <-> COM10(主机)
COM10(主机)<-> COM9(主机)>>使用com0com连接
COM9(主机)<-> COM1(来宾)>>通过Oracle VM VirtualBox连接
COM1(访客)<-> QGroundControl站