MATLABでできてsimulinkでできないことはないよな。ってことで試してみた。
検証環境は
前回同様以下の通り。
直接simulinkからDLLを呼出すことはできそうになかったので、MATLABを経由して呼出すことにした。
前回パスは通しているので、いきなりモデルを作成。ちなみにモデルのパスも登録が必要だ。

FunctionではなくEmbedded MATLAB Functionを配置して編集。
dx_openの中身は以下の通り。
function ret = dx_open()
eml.extrinsic ('dxopen');
ret = 0;
ret = dxopen();
MATLABで宣言したdxopenを呼出しているだけ。 当然dxopenはmファイルだ。
function ret = dxopen()
if exists('dxlib2.h','file') ~= 2;
disp('Not found');
devid = 0;
else
if ~libisloaded('dxlib2'); loadlibrary('dxlib2.dll','dxlib2.h'); end
devid = calllib('dxlib2','DX_OpenPort','\\.\COM4',1000000);
if devid ==0; unloadlibrary('dxlib2'); end
disp('call DX_OpenPort');
end
ret = devid;
disp('start end');
mファイルは
前回使用したものを分割して戻り値を返すようにしただけなので、他のmファイルは割愛。
結果は次の通り。
まぁsimulinkから呼出せているからこれで良しとする。