2012-07-23 2 views
2

간단한 질문입니다. - 캐리어의 상태는 포트의 라인을 감지 가져옵니다SerialPort 클래스에 RIHolding 속성이없는 이유는 무엇입니까?

  • CDHolding : 닷넷 SerialPort 클래스는 직렬 입력 라인을 얻기 위해 다음과 같은 속성이 있습니다.
  • CtsHolding - Clear to Send 라인의 상태를 가져옵니다.
  • DsrHolding - 데이터 세트 준비 (DSR) 신호의 상태를 가져옵니다.

참고 RIHolding가 없습니다.

또한 PinChanged 이벤트가 있습니다. 그 다음 멤버를 갖는 SerialPinChange ENUM 값을 제공하고, 링 하나 포함 않습니다

  • CtsChanged - 전송하도록 클리어 (CTS) 신호 상태 ...
  • DsrChanged -THE 데이터 변경 ... 준비 (DSR) 신호가 상태를 변경
  • CDChanged 설정 - 캐리어 검출 (CD) 신호가 상태를 변경 ...
  • Ring
  • 이 - 링 표시가 검출되었다.
  • Break - 입력에 끊어짐이 감지되었습니다.

제 질문은 왜 RIHolding 속성이 없습니까? 우리가 내부 SerialStream 클래스를 보면


, 우리는 CDHolding, CtsHoldingDsrHolding 모두는 Win32 GetCommModemStatus 함수를 호출에 의해 구현되는 것을 알 수있다.

  • MS_CTS_ON0x0010 CTS (송신 가능) 신호가있다 : 그의 lpModemStat 출력 값은 다음 중 하나이다.
  • MS_DSR_ON0x0020 DSR (데이터 세트 준비 완료) 신호가 켜져 있습니다.
  • MS_RING_ON0x0040 링 표시기 신호가 켜져 있습니다.
  • MS_RLSD_ON0x0080 RLSD (receive-line-signal-detect) 신호가 켜져 있습니다. (이 CDHolding에 매핑)

그래서,이 탈락 한 이유는 단지 비트 6에서 보이는 RIHolding 속성을 추가 할 사소한했을 것 같다?

답변

3

사실상 링 신호 케이던스 때문에 일시적인 신호입니다. 계속 켜져 있다면 아주 오랫동안 머 무르지 않을 것입니다. 미국에서는 2 초, 예를 들어 영국에서는 400 밀리 초입니다.신호의 상태가 그다지 의미가있는 것은 아니며 타이밍에 따라 다르며 더 나쁜 경우에는 실제로 불행했을 때 항상 관찰하게됩니다. 따라서 PinChanged가 그것을보고하면 켜는 것이 좋을 것입니다.

+0

그러나 예를 들어 GUI에서 표시하려고하는 경우 400 ms는 충분한 시간입니다. –

+0

* 이유에 대한 설명을 해 주셔서 감사합니다. 그래도 그것에 대해 더 행복하게하지는 않습니다 :-) –

+0

많은 구현에서 RI 신호는 하드웨어 인터럽트를 생성하므로 폴링 프로세스가 필요 없습니다. –

관련 문제