私は通常、.NET フレームワークでプログラムを作成することはありませんが、測定機器からのデータを記録する単純な exe アプリケーションを作成するために .NET フレームワークを使用する必要がありました。このアプリケーションには、いくつかのメソッドを備えた自動化インターフェイスが必要です。Delphi/Pascal を使用する前にこれを行ったことがあり、非常に簡単でした。それ自体とメソッドを登録し、簡単にインターフェイスできる Visual Studio でクラス ライブラリを作成できますが、ComClass を Windows フォーム アプリケーションに追加することはできません。仕事、誰かが私を正しい方向に向けることができますか?
1 に答える
これはコメントとして始まりましたが、成長し続けました。うまくいけば、私は軌道に乗っていません...
dll のみを登録できます。したがって、簡単な答えは、プロジェクトにクラス ライブラリを追加し、そこに com クラスを配置することです。これにより、クラスの機能を共有できますが、そのクラスの同じインスタンスは共有できません。
あなたの問題は、Interprocess Communicationsを確立しようとしていることだと思います。私の当面の提案は、少なくとも最初はそうしないことです。
まず、データをログに記録する .net クラス ライブラリを備えた com アプリ インターフェイスを使用できます。次に、ログを表示し、定期的に更新する .net 実行可能ファイルを含む別のプロジェクトを作成できます。これで、フェンスの両側に .net コードが配置され、それらが互いに通信できるようにする方法の調査を開始できます。
難しいのは、メソッドを呼び出して値を返すことです。応答性の高いシステムが本当に必要な場合は、名前付きパイプのプロセス間通信を調査するか、2 つのシステム間のコールバックで WCF サービスを使用することができます。問題は、どちらの場合も、クラス ライブラリが .net によってホストされていないことに悩まされているため、機能が制限されている (構成ファイルがないなど) ことです。タイム ラグを許容できる場合は、単純にローカル データストアにメッセージを書き込むことから始めて、30 秒ごとに各クライアントからポーリングすることをお勧めします。たとえば、アプリは「測定値 A をください」というメッセージを作成し、毎秒ポーリングを開始します。DLL にはタイマーがあり、30 秒以内にそのメッセージを読み取り、EXE が読み取って表示する測定値を含む独自のメッセージを書き込みます。