com0com を使用して仮想ポート comA/comB の一部を作成し、ハイパーターミナルから comA に入力を入力し、wpf アプリケーションで comB をリッスンしています。次のコードを (トリガーしてConnect
) 実行すると、アプリケーションは正常に接続し、comA からデータを取得できますが、実行するとハングしますDisconnect
。
public void Connect()
{
readPort = new SerialPort("COMB");
readPort.WriteTimeout = 500;
readPort.Handshake = Handshake.None;
readPort.Open();
readThread = new Thread(Read);
readRunning = true;
readThread.Start();
System.Diagnostics.Debug.Print("connected");
}
public void Disconnect()
{
if (!readRunning)
{
readPort.Close();
}
else
{
readRunning = false;
readThread.Join();
readPort.Close();
}
System.Diagnostics.Debug.Print("disconnected");
}
public void Read()
{
while (readRunning)
{
try
{
int readData = 0;
readData = readPort.ReadByte();
System.Diagnostics.Debug.Print("message: " + readData.ToString());
}
catch (TimeoutException)
{
}
}
}
を使用して読み取り関数を書き込みに変更してみました
byte[] writeData = { 1, 2, 3 };
readPort.Write(writeData, 0, 3);
の代わりにport.readbyte
、切断すると完全に機能し始めます。readbyte
フリーズを引き起こした可能性のある何かが違うかどうかは誰にも分かりますか? それとも、com0com に関連している可能性がありますか?