gpt4 book ai didi

matlab - VirtualBox 中主机和 guest 之间通过 COM 端口连接

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:21 24 4
gpt4 key购买 nike

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

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

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

在VirtualBox中,我开启了串口,并选择了端口模式的host pipe,如图:

Enter image description here

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

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

我的问题的第二部分 - Simulink:

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

Enter image description here

我需要在 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() 命令打开我的端口之一,我会收到此消息:

Error using serial/fopen
Open failed: Port: COM1 is not available. No ports are available.
Use INSTRFIND to determine if other instrument objects are connected to the requested device.
Using "INSTRFIND" shows that all ports are closed.

最佳答案

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

为了在 Windows 上创建虚拟 COM 端口,我将使用 com0com Faking an RS232 Serial Port 。您可以使用任何您喜欢的软件。

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

Enter image description here

现在点击应用。现在你将拥有 COM9COM10桥接(就像 COM9COM10 是内部连接的)。

接下来我们需要连接COM9 port in HostCOM1 port in Guest OS对于那个开放Oracle VM VirtualBox Manager并打开所需虚拟机的设置。现在,选择Serial Ports 并如下所示进行设置,然后单击“确定”。

Enter image description here

NOTE: Windows provides legacy names only for COM ports 1 through to 9. For all other COM ports you must use the full device naming convention under Windows. So if you decide to use COM10 instead of COM9, using COM10 at Path/Address won't work. Instead you have to use \\.\COM10.

现在启动您的虚拟机,您的端口已准备就绪。现在端口将显示在 Simulink 中并连接到 COM10在这种情况下,在虚拟机中,连接您的 QGroundControl stationCOM1 .

Simulink <--> COM10 (Host)

COM10 (Host) <--> COM9 (Host) >> Connected using com0com

COM9 (Host) <--> COM1 (Guest) >> Connected by Oracle VM VirtualBox

COM1 (Guest) <--> QGroundControl station

关于matlab - VirtualBox 中主机和 guest 之间通过 COM 端口连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37728628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com