1

C#.Net 4の製造元ハードウェアDLLを使用してCOMポートにアクセスします。COMポートに接続すると、Nanotecステッピングモーター制御SMCI33があります。

製造元は、ハードウェアステッピングモーターの移動が完了したときにステータスバイトを送信するためのフラグ「SetSendStatusWhenCompleted」を提供しています。残念ながら、このステータスバイトをリッスンする機能はありません。この機能を追加したいと思います。

目標:ハードウェアドライバーを使用して移動コマンドを送信します。待機:次の移動コマンドを送信する前に、応答「ステータスバイト」をリッスンします。

using System.IO; using System.IO.Ports;
(... access same com Port via driver of hardware manufacturer. ...)
sp = new SerialPort();
    sp.PortName = "COM4";
    sp.BaudRate = 115200;
    sp.DataBits = 8;
    sp.StopBits = System.IO.Ports.StopBits.One;
    sp.Parity = System.IO.Ports.Parity.None;
    sp.Handshake = System.IO.Ports.Handshake.None;
sp.Open();

コードがドライバーを起動し、同じCOMポートにアクセスしようとするため、明らかにUnauthorizedAccessExceptionが発生します。同様のSO質問は、別のプログラムからのCOMアクセスを扱います。ポートスニファ(Portmon)がソリューションです。しかし、私の質問には単純なコードが必要です。

ハードウェアドライバを停止できました。現在の問題は、時間のかかる再初期化です。以前のハードウェアドライバーをシャットダウンする以外に、COMポートをリッスンする方法はありますか?

4

2 に答える 2

1

監視ツールを使用して、他のアプリケーションが実際に何を実行し、何がネットワークに接続されているかをよりよく理解する必要があります。さらに、 2つの仮想comポートを設定して、1台のマシンで(同じアプリケーション内でも)読み取りと書き込みをテストし、どのデータがいつ送信されるかをより適切に制御できます。

于 2012-11-23T12:39:28.653 に答える
0

Nullmodem com0comプロジェクトのhub4comは、要求された多重化を提供します。Hub4comは多重化を実装し、comポートで要求を管理します。これにより、a)ドライバーとb)OPのコードの両方が同じCOMポートにアクセスできるようになります。

于 2021-11-01T09:12:16.073 に答える