シミュレーターを MATLAB に接続しようとしています。シミュレーター プログラムは、COM オブジェクト インターフェイスを公開します。
次のコマンドで COM オブジェクトに接続し、ほとんどのメソッドを実行できます。
h=actxserver(ProgID)
Variant*
ただし、一部のメソッドでは、型を出力として渡す必要があります。
「invoke」メソッドで示されるメソッドの 1 つのシグネチャを次に示します。
ReadOutputImage=Variant(Pointer) ReadOutputImage(handle, int32, int32, `ImageDataTypeConstants, Variant(Pointer))`
いくつかの構文でこのメソッドを呼び出しましたが、どれも機能しません:
a=uint8([0]) %means unsigned integer array with 1 member
h.ReadOutputImage(0,1,2,a) % 0 ,1 ,2 are contants pointing to the position, number of elements to read and size of elemnts while 2 shows Byte element (VT_UI2 COM type).
私が試した他の構文は次のとおりです。次のすべてに、、、、をuint16
使用uint32
しint8
ます。int16
int32
logical types (like a=[false]),
cell arrays (like a={uint8([0])} )
empty cell array {}
empty array []
empty sring ''
私もlibpointerを使用しました:
a=libpointer;
also a=libpointer('uint8Ptr',0)
also a=libpointer('bool',false)
also a=libpointer('bool',[0])
問題は、次の項目についてよくわからないことです。
- MATLAB の " Variant(Pointer) " の類似型は何ですか?
- MATLAB で変数を出力として COM メソッドに渡す方法は何ですか?
- COMオブジェクトメソッドの結果から値をMATLABのポインターとして取得することさえ可能ですか?
データが他のクライアントでどのように表示されるかを確認するために、同じ dll ファイルを Delphi にインポートしました。上記のメソッドのタイプ ライブラリのシグネチャは次のようになります。
procedure ReadOutputImage(StartIndex: Integer; ElementsToRead: Integer;
DataType: ImageDataTypeConstants; var pData: OleVariant);
はい、シーメンスはこのcomサーバー(prosim)のガイドを提供しており、そのようなドキュメントに基づいて、その方法のほとんどを接続して実行しました。しかし、I/o データを読み取るメソッドは機能していません。ドキュメントでは、メソッドのシグネチャは次のように指定されています: (VB の場合)
STDMETHOD(CS7Prosim::ReadOutputImage)(long startindex,long elementstoread, imagedatatypeconstants DtaType, VARIANT* pData)
あなたのアプリケーションはどうですか、それは機能していましたか? 戻り引数としてバリアント ポインターが含まれていましたか? そのアプリケーションで同様の方法がありましたか?
ありがとうございました