2013-03-27 3 views
1

유효하지 않은 패리티 비트가 수신 된 것으로 알고있는 COM 포트가 있는데 다음 프로그램을 사용하고 있습니다. documentation에 언급 된 126 바이트를 얻지 못했습니다.패리티 오류 "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(); 
} 

답변

1

설명서 버그입니다. 실제 교체 문자는 '?', ASCII 코드 63입니다.

관련 문제