私は、独自のプロトコルを使用して、私が構築したいくつかのカスタム ハードウェアを使用して、USB 経由で通信しています。そのハードウェアとのすべての通信/相互作用を処理する GUI と、関連するすべての USB 機能を公開する (C#) DLL があります。ハードウェアと通信するための LabVIEW ドライバ (VI) を作成する必要があります。私の考えでは、LabVIEW を使用して GUI を開き、関連するすべてのコントロールを LabVIEW に公開するためのソケットを用意しています。LabVIEWでソケットを開いてGUIと通信することはできますか? これは悪いアプローチですか、それとも、LabVIEW に DLL を起動させて、GUI の代わりにハードウェア制御を処理させるべきですか (ポーリング通信、請求/非請求コマンドなど)?
3 に答える
GUI のみを使用する理由はありますか? 時間的には、LabVIEW で適切なフロント パネルを作成し、DLL を使用してハードウェアと直接通信するだけです。GUI を追加することは、後で維持するのが難しいかもしれない複雑さのレイヤーを追加するだけですか? 可能であれば、すべてを LabVIEW で行ってみませんか?
はい、LabVIEW は TCP/IP と UDP の両方を使用するソケットをサポートしています。
TCP/IP サーバーとして継続的に動作するプログラム/サービスを作成できるはずです。コマンドを送信し、応答を文字列として受け取ることができます。データをパックする必要がある場合は、flatten to string コマンドを使用できます。
基本的に、アプリケーションは、TCP/IP サーバーを実行するループと、実際に計測器と通信する別のループとして構造化する必要があります。デバイスから TCP クライアントにデータを戻す必要がある場合は、これが変わる可能性があります。もしそうなら、生産者消費者モデル:)
開始するには、NI サンプル ファインダ ([ヘルプ] -> [サンプルを検索]) を開き、[ネットワーク] -> [TCP および UDP] -> [Simple Data Server.vi] を参照します。
誰が LabVIEW ドライバを何のために使用するかによって異なります。このハードウェアを独自のアプリケーションを作成したい人に渡す場合、GUI を使用するよりも DLL と直接対話することを好むでしょう。たとえば、LabVIEW から既存のソフトウェアを自動化して、ハードウェアでテストや反復タスクを実行することの方が重要な場合は、LabVIEW から GUI を操作する方が簡単かもしれません。