Соединение через COM-порт между хостом и гостем в VirtualBox

Я запускаю определенное приложение на Ubuntu (16.04) в VirtualBox, в то время как VirtualBox работает на Windows 10 (хост).

В Simulink (работает на моем хосте) у меня есть симуляция, где на последнем этапе я собираю некоторые значения. Я хочу вывести эти значения через последовательное соединение с определенной скоростью передачи данных в приложение, работающее в VirtualBox (т.е. станция QGroundControl).

Итак, первая часть моего вопроса - VirtualBox:

В VirtualBox я включил последовательный порт и выбрал канал хоста в режиме порта, как показано на рисунке:

На рисунке вы можете видеть, что используется COM6, но вместо этого я использовал COM1 и COM2. Я получил одинаковый результат для обоих.

Я не привык работать с VirtualBox, поэтому я не знаю, означает ли это, что я создал соединение между моим хостом и гостем или мне все еще нужно активировать или подключить их каким-либо образом?

Вторая часть моего вопроса - Симулинк:

В 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" показывает, что все порты закрыты.

2 ответа

Решение

Прежде всего, VirtualBox не будет создавать последовательный порт для вашего хоста. Таким образом, вы должны создать два виртуальных COM-порта на хосте с помощью другого программного обеспечения и виртуально соединить эти два порта. Затем используйте один порт для подключения к Simulink, а другой должен быть настроен таким образом, чтобы COM-порт VM использовал этот порт.

Для создания виртуального COM-порта в Windows я буду использовать 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 и откройте настройки нужной вам виртуальной машины. Теперь выберите Serial Ports и настройте, как показано ниже, и нажмите OK.

ПРИМЕЧАНИЕ. Windows предоставляет устаревшие имена только для COM-портов с 1 по 9. Для всех остальных COM-портов необходимо использовать полное соглашение об именах устройств в Windows. Так что если вы решили использовать COM10 вместо COM9, с помощью COM10 в Path/Address не сработает Вместо этого вы должны использовать \\.\COM10,

Теперь запустите вашу виртуальную машину, и ваши порты готовы. Теперь порты будут отображаться в Simulink и подключаться к COM10 в этом сценарии и в виртуальной машине подключите QGroundControl station в COM1,

Simulink <-> COM10 (Host)

COM10 (хост) <-> COM9 (хост) >> Подключен через com0com

COM9 (хост) <-> COM1 (гость) >> подключен к Oracle VM VirtualBox

COM1 (Гость) <-> станция QGroundControl

VirtualBox существует уже более 15 лет, а Windows, конечно, гораздо дольше. Если до сих пор нет простого способа подключения через COM-порт, значит, он никогда не сработает. Мой совет, просто оставьте это. Это избавит вас от большого разочарования.

Другие вопросы по тегам