VirtualBoxがWindows10(ホスト)で実行されているときに、VirtualBoxのUbuntu(16.04)で特定のアプリケーションを実行しています。
Simulink(ホスト上で実行)では、最終段階でいくつかの値を収集するシミュレーションがあります。これらの値を、VirtualBoxで実行されているアプリケーション(QGroundControlステーション)に特定のボーレートでシリアル接続を介して出力したいと思います。
それで私の質問の最初の部分-VirtualBox:
VirtualBoxで、次のように、シリアルポートを有効にし、ポートモードでホストパイプを選択しました。
写真ではCOM6が使用されていることがわかりますが、代わりにCOM1とCOM2を使用しました。どちらも同じ結果になりました。
私はVirtualBoxでの作業にそれほど慣れていないので、これがホストとゲストの間に接続を作成したことを意味するのか、それとも何らかの方法でそれらをアクティブ化または接続する必要があるのか、本当にわかりません。
私の質問の2番目の部分-Simulink:
Simulinkでは、シリアル送信を使用して値を出力したいのですが(これが最も簡単な方法だと思いますか?もっと良い方法がある場合は教えてください)、ポートを選択したい場合は、次のようにポートが表示されません。あなたはで見ることができます:
COMポートを表示するには、VirtualBox/Simulinkで何をする/変更する必要がありますか?
最後の部分-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()コマンドを使用してポートの1つを開こうとすると、次のメッセージが表示されます。
シリアル/ fopenの使用中にエラーが発生しました
オープンに失敗しました:ポート:COM1は使用できません。使用可能なポートはありません。
INSTRFINDを使用して、他の計測器オブジェクトが要求されたデバイスに接続されているかどうかを判別します。
「INSTRFIND」を使用すると、すべてのポートが閉じていることが示されます。
まず第一に、VirtualBoxはホスト用のシリアルポートを作成しません。したがって、他のソフトウェアを使用してホスト上に2つの仮想COMポートを作成し、これら2つのポートを仮想的にブリッジする必要があります。次に、1つのポートを使用してSimulinkに接続し、他のポートはVM COMポートがこのポートを使用するように設定する必要があります。
Windowsで仮想COMポートを作成するには、RS232シリアルポートの偽造から_com0com
_を使用します。好きなソフトウェアを使用できます。
Com0comをインストールした後、C:\Program Files (x86)\com0com
から_setuppg.exe
_を開きます。
次に、[適用]をクリックします。これで、_COM9
_と_COM10
_がブリッジされます(_COM9
_と_COM10
_が内部で接続されているようなものです)。
次に、_COM9 port in Host
_を_COM1 port in Guest OS
_に接続して_Oracle VM VirtualBox Manager
_を開き、必要な仮想マシンの設定を開く必要があります。次に、シリアルポートを選択し、以下のように設定して、[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ステーション