MATLAB Answers

0

UDP Send / Receive ブロックを使用したモ​デルのスタンドアロン​実行モデルの実行時に​データの送受信ができ​ないのはなぜですか?

UDP Sendブロックでデータを送信するモデルとUDP Receiveブロックでデータを受信する別のモデルがあります。これらのモデルはSimulink上でのシミュレーションでは正常に動作しますが、Embedded Coderで生成した .EXE ファイルとして実行すると、データの受信ができません。UDP Send / Receive ブロックを削除したモデルから作成した .EXE は正常に動作します。

Tags

No tags entered yet.

1 Answer

Answer by MathWorks Support Team on 23 Apr 2019 at 4:00
 Accepted Answer

この問題は生成コードではなく、UDPブロックに依存したパスが見つからないことによる問題です。そのためUDPブロックを削除した場合は正常に動作します。

問題の DLL は「networkdevice.dll」で、64-bit Windows の場合(32-bit Windows の場合は \win32)、$MATLABROOT\bin\win64 に存在します。$MATLABROOTはMATLABインストールフォルダーで、コマンドウィンドウ上で次のコマンドを実行すると確認できます。

matlabroot 

この問題を回避するために、下記いずれかの方法を実行してください。

1. ! を使用してEXEファイルをMATLAB上で実行する

!test_code.exe

MATLAB は DLL を正しく動作させる自身のパスを持つので、これは追加のパス設定等を行わなくても動作します。

2. MATLABの外部で実行可能ファイルを動作させるには、下記手順でDLLのフォルダーをシステムのパスに追加する必要があります。

2-1. 「コンピューター」を右クリックして「プロパティ」を選択します。

2-2. 「システムの詳細設定」→「環境変数」をクリックします。

2-3. 「システム環境変数」に次のパスを追加します。(64-bit Windowsの場合)

 $MATLABROOT\bin\win64 

  0 Comments

Sign in to comment.