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ポートをリッスンする方法はありますか?