2014-07-09 2 views
1

C++/윈도우 API는직렬 포트 흐름 제어

SetCommState()를 통해 내 RS232 포트에 대한 하드웨어 흐름 제어를 지정, 나도이 CTS/DSR 신호와 흐름 제어를 시도하는 OS를 요청합니다.

1) 통신의 타단에 직렬 장치가 이미 CTS/DSR 라인 플로우 제어를 지원한다고 가정

이 구성 하는가?

2) 또는 어떻게 든 연결된 직렬 장치의 흐름 제어 기능을 얻으려고합니까?

+1

CTS/DSR은 아닙니다. RTS/CTS 또는 DTR/DSR이 있습니다. 둘 중 하나를 사용할 수도 있고 둘 다를 사용할 수도 있습니다. 양 끝이 같은 방법을 사용하고 있는지 수동으로 확인해야합니다. 자동 감지가 없습니다. 흐름 제어를 사용하지 않고 다른 쪽에서는 "항상 준비"를 설정할 수 있습니다. 그런 다음 OK를받을 수 있습니다. 다른 쪽 끝이 버퍼 용량을 가지고 있고 플래그를 낮추면 일시 중지 할 것으로 예상되면 전송이 작동하지 않을 수 있습니다. –

답변

0

이 설정은 상대방이 사용자의 CTS/DSR 신호를 보내는 것으로 가정합니다. 그렇지 않은 경우 데이터가 흐르지 않습니다.

또는 다른 끝에서 핀이 하드 와이어 된 경우 (경우에 따라 "흐름 제어 없음"을 갖게됩니다. CTS/DSR은 항상 데이터를 송수신 할 수있는 상태입니다. 실제 장치가 준비되었거나 안됩니다. "

물론, 후자가 기본값으로 구성된 장치를 가지고 있고 직렬 포트를 통해 명령/정보를 보내 "이제 CTS/DSR 핀이 데이터를 보내거나받을 수 있는지 여부를 반영하도록합니다 ".

+0

답장을 보내 주셔서 감사합니다. 나는 시리얼 장치에서 데이터를 읽는 것일 뿐이다. 초기 memset에서 모든 흐름 제어 값을 0으로 설정하고 데이터가 여전히 흐르고 있으므로 장치가 흐름 제어를 적용하지 않는다고 가정해야합니까? – cazicss

+0

다른 끝이 흐름 제어를 요구하지 않는 것처럼 보일 것입니다 ... –

+0

Mmh "필요합니다".. 재미있는 단어. 즉, 내 마지막에 하드웨어 흐름 제어 기능을 켜고 장치가 오줌을 싼지 아닌지 알아내는 것을 의미합니다 .-- 다시 한 번 감사드립니다 : 3! – cazicss