私は化学の博士号を取得しようとしています。そのため、顕微鏡下でのサンプルのイメージングに役立つソフトウェア アプリケーションを作成する必要があります。この顕微鏡には、xyz ナノポジショニング ステージが取り付けられています。ステージは、ハードウェア ベンダーによって VC++ で記述されたアンマネージ DLL を使用して制御されます。必要なものの詳細を提供できますが、まずはこれから始めましょう。
dll のメソッドの 1 つを使用すると、運動軸の設定を読み取ることができます。
C++ 構文:
BOOL E7XX_qSVO (int ID, const char* szAxes, BOOL* pbValueArray)
BOOL は、規則に従って int 0 または 1 です。
私のC#ラッパーには以下が含まれています:
[DllImport("E7XX_GCS_DLL.dll", EntryPoint = "E7XX_qSVO")]
public static extern int qSVO(int iId, string sAxes, int []iValArray);
これは私には正しいようです。ただし、メインアプリケーションで次のようなことを試すと(軸1、2、および3を照会するため):
Int32 [] _iValues = new Int32[3];
E7XXController.qSVO(m_iControllerID, "123", _iValues);
私は一貫して次のような配列を取得します:
{6, 0, 10} ですが、デバイス自体の表示に従って {0, 0 , 0} を取得する必要があります。補完機能:
BOOL E7XX_SVO (int ID, const char* szAxes, const BOOL* pbValueArray)
ステージに同じステータスビットを設定することもできません...
dll の他のコマンドは完全に機能します。問題なく文字列とダブルスを出し入れできますが、BOOL型は受け渡しできません...
何が悪いのか分かりますか?