1

無効なパリティ ビットを受信することがわかっている COM ポートがあり、次のプログラムを使用していますが、ドキュメント126に記載されている末尾のバイトを取得していないようです。

次のプログラムでは、コンソールに多くの!!!!!が表示されますが、表示されないの?????はなぜですか?

また、無効なパリティ ビットを含むバイトがまだストリームに含まれていると想定していますか?

using (var serialPort = new SerialPort())
{
    serialPort.PortName      = "COM2";
    serialPort.BaudRate      = 562500;
    serialPort.Parity        = Parity.Space;
    serialPort.DataBits      = 8;
    serialPort.StopBits      = StopBits.One;

    serialPort.ErrorReceived += (s, e) => Console.WriteLine("!!!!!");

    serialPort.Open();

    var thread = new Thread(() =>
    {
        while (isRunning)
        {
            var b = serialPort.ReadByte();

            if (b == 126)
                Console.WriteLine("?????");
        }
    });

    thread.Start();

    Console.WriteLine("");
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey(true);

    isRunning = false;
    thread.Join();
} 
4

1 に答える 1

1

これはドキュメントのバグです。実際の置換文字は「?」、ASCII コード 63 です。

于 2013-03-27T21:23:44.793 に答える