2011-09-20 3 views
-1

직렬 설정으로 들어가면 직렬 연결이 닫힙니다. 내가 애플 리케이션에서 오는 시리얼에 대한 잘못된 보오율을 선택하고 여전히 작동하기 때문에 나는 어떤 디버그도 얻을 수 없지만 그것이 무엇을하는지 확신 할 수 없다.잘못된 전송 속도를 선택한 경우 앱이 멈 춥니 다. C#

궁극적으로 내 질문은 선택한 보오율이 올바른지 확인하고 시리얼이 애플리케이션을 정지시키지 않는지 확인하는 방법입니다.

+0

http://stackoverflow.com/questions/6749681/freeze-on-serialport-open-deviceiocontrol-getcommstate-with-usbser-sys 이것은 결함이있는 운전자가 해결하는 데 도움이 될 수 있습니다. – MStp

+0

+1 나는 왜이 질문이 내려지고 있는지 모른다. 나는 원격으로 유용한 해결책이 없으므로 같은 문제에 부딪쳤다. 그것은 잘못된 운전자와 아무런 관련이 없으며 그 링크는 쓸모가 없습니다. – KMC

답변

1

마침내 오류가 발생했습니다. sp.ReadLine() 호출하려고 할 때; ReadLine()이 시간 초과되었습니다. 난 그냥 사용 500

에서 시간 제한이 있습니다

try { 
    data = sp.Readline(); 
} 
catch (TimeoutException errorEvent) 
{ 
    //Write to console the errorEvent (This operation has timed out) 
    //Message to user to pick correct baud 
    tbConsole.AppendText(Environment.NewLine); 
    tbConsole.AppendText("Incorrect Baud Rate: Please select a new baud rate"); 
    tbConsole.AppendText(Environment.NewLine); 
    tbConsole.AppendText(errorEvent.Message); 
    tbConsole.ScrollToEnd(); 
    //Show baud rate settings dialog 
} 
+0

나는 시간 초과 예외를 잡아 내지 만 잘못된 보드 율로 계속 충돌합니다. 새로운 해결책을 찾았습니까? – KMC

0

불행히도 잘못된 Baudrate를 선택하는 것은 PEBKAC입니다. 왜냐하면 사용자가 잘못된 Baudrate를 선택하도록 허용 한 경우 사용자가 잘못된 행동을하지 못하도록 막을 수 없기 때문입니다.

정확한 보오율을 선택하는 유일한 방법은 하드웨어를 제어 할 수 있도록 선택하고, 사용중인 하드웨어를 선택하고 전송 속도를 구성하는 것입니다. dts, xon 등을 지정해야합니다.

정확히 기억한다면 SerialPort은 다른 스레드에서 실행되고 이벤트를 사용자의 UI에 게시합니다. 따라서 전송 속도가 정확하지 않으면이 때문에 잘못된 데이터가 표시 될 수 있습니다.

관련 문제