2

私は大学の化学科用に、力センサー、Z 軸ナノポジショナー ステージ、XYZ 軸ピコモーター ステージの 3 つの個別のデバイスを組み込んだプログラムを書いています。これら 3 つのデバイスを 1 つのプログラムに組み込み、相互に通信させる必要があります。力センサーとZ軸ステージの組み込みに成功しました。どちらも、C# 用に既製の DLL が付属しています。私は GUI プログラムを書いていて、C# にもかなり精通しているので、これは当然の選択でした。

ただし、XYZ ステージの DLL は C++ 用に作成されています。この DLL を自分のプログラムで動作させる方法がよくわかりません。互換性がなく、DLL 内の関数を公開する付属のヘッダー ファイルが C++ 用に作成されているため、Visual Studio で参照を追加できません。

プロセスの基本的な理解があります。ldcncom.h ヘッダーには、次のように記述された関数があります。

DLLENTRY(int)  LdcnInit(char *portname, unsigned int baudrate);

C# プログラムで次のように書き直しました。

[DllImport("Ldcnlib.dll", EntryPoint = "LdcnInit")]
public static extern int LdcnInit(char[] portname, uint baudrate);

これが正しいかどうかはわかりませんが、DLL から関数を読み取ってその義務を実行できる限り、「機能しました」...他のすべての関数がまだ欠落しているため、完全には正しくありません。

しかし、私は残りをどうするかわかりません。たとえば、sio_util.h には、戻り値の型が HANDLE の関数と、戻り値の型が DWORD の関数がありますが、私はこれらに詳しくなく、C# で機能させる方法がわかりません。

相互運用、ラッパー、C++/CLI などについては聞いたことがありますが、現時点ではそれについては少し理解できません (これらすべてについてはまだ少し新しいことです)。

ありがとうございました。

4

2 に答える 2