私の C# デスクトップ クラス ライブラリは、COM シリアル ポートと通信します。
comは実際のcomではなく、別のコンピューターのUSB to COMに接続されたUSB to COMケーブルであり、他のコンピューターはシミュレーターを使用してデータを送信します。
このソリューションは正常に機能し、ポートは正常に開きます。
serialPort.Open();
if (serialPort.IsOpen)
{
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
var length = serialPort.BytesToRead;
byte[] buffer = new byte[length];
serialPort.Read(buffer, 0, length);
for (int i = 0; i < buffer.Length; i++)
{
System.IO.File.AppendAllText(@"c:\TestLogging.txt", string.Format("[Time = {0}] Data was received from serial port !", DateTime.Now)); }
}
シミュレーターは常にデータを送信し、クラスでデータを受信しますが、常に受信するわけではありません.30秒ごとに1行の印刷が表示されます-常に印刷するはずですが!
奇妙なこと - 行 var length = .. にブレークポイントを配置すると、ブレークで停止していた時間のプリントが表示されます..転送されたデータは「キャッシュ」されているようで、「再生」を押すとデータを受け取りますが、プロセスを一時停止している間だけです。