2009-04-07 2 views
0

직렬 포트 통신 C# windows 응용 프로그램을 사용하고 있습니다. 포트에서 데이터를 가져 와서 조작하고 직렬 포트를 통해 작성하는 프로그램을 작성했습니다.직렬 포트 장치와 통신 할 때 올바르게 타임 아웃하는 방법은 무엇입니까?

내 질문은 전원이 켜지지 않았거나 전원 공급이 끊어 졌거나 장시간 동안 장치가 명령에 응답하지 않는 경우에 어떻게 알 수 있습니까? 내 프로그램에서 나는 정상적인 실행 흐름을 위해 작성했다. 그러나 오랜 시간 동안 아무런 반응이없는 경우, 프로그램은 오랜 시간 동안 기다리고 있습니다. 타이머를 사용했지만 제대로 작동하지 않습니다.

아무도 도와 줄 수 있습니까?

답변

0

두 가지 옵션이있어 :

  1. 을 당신은 당신이에서 아무것도 정해진 기간 동안 수신되지 않을 경우 가정 할 수있는 데이터의 직렬 포트에서 수신 할 수있는 데이터를 생성해야하는 장치가있는 경우 오프라인 상태입니다.

  2. 직렬 포트를 통해 장치에 주기적으로 데이터를 보내십시오. 예외가 발생하면 장치가 오프라인임을 알게됩니다.

4

C#에서 "SerialPort"개체를 사용하는 경우 ReadTimeOut 및 WriteTimeOut 속성을 사용할 수 있습니다.

0

당신이 사용하고있는 케이블이 DTR/DSR 교차로 연결되어있는 경우입니다. 즉, 프로그램 시작시 DTR을 높이고 다른 장치의 DSR이 높게 표시되면 DTR이 올라갑니다. DSR이 높아집니다.

알 수없는 케이블을 사용하고 제어 할 수없는 장치와 통신하는 경우 .Timeout을 사용해야합니다.