2011-04-28 4 views
5

SerialPort 클래스를 사용하여 외부 장치와 통신하고 있습니다. 나는 초당 300 Baud로 통신을 시작하지만 초기 "핸드 셰이크"이후에 장치 (일반적으로 9600 Bps)로 지정된 전송 속도로 전환해야합니다.연결이 열려있는 동안 SerialPort의 BaudRate를 변경하십시오.

통신 속도를 높이면 통신을 계속하려는 시도가 실패했지만 그 이유는 확실하지 않습니다. 그게 내 질문에 리드 : Baud 속도를 변경하는 적절한 방법은 무엇입니까? 연결이 열려있는 동안이 작업을 수행 할 수 있습니까? 아니면 먼저 연결을 닫아야합니까? 나는 모두를 시도하고 제가 뭔가를 분명 실종해야한다는 생각하게 두 가지 방법으로 실패되었습니다

나는이 문서에서이에 대한 정보를 찾을 수 없었습니다

....

+0

정확하게 성공하지 못했다는 의미는 무엇입니까? 먼저 (가능한 경우) 터미널을 사용하여 통신을 시도 했습니까? – Groo

+0

@Groo : 귀하의 anwser 덕분에 나는 그것을 작동하도록 만들었습니다. 내가 빠뜨린 것은 ACK를 전송하고 다른 BaudRate로 포트를 다시 열 때까지 기다리는 시간이었습니다. 이제 작동합니다. –

답변

4

열려있는 동안 SerialPort.BaudRate를 변경할 수 있습니다. 그러나 @Groo의 답변에 언급 된 SerialPort.DiscardInBuffer는 좋은 팁입니다!

+0

어떻게 이것을 더 자세히 설명 할 수 있었습니까? http://stackoverflow.com/questions/8852611/changing-the-speed-on-an-open-serial-port를 참조하십시오. –

9

지금까지의 경험에서 가장 안전한 방법은 연결을 먼저 닫고 속도를 변경 한 다음 다시 열어 보는 것입니다. 속도가 변경되었는지 확인하기 위해 일부 제어 문자를 보낼 때까지 기다릴 것이므로 장치는이 점에 신경을 쓰지 않을 것입니다.

포트가 열려있는 동안 전송 속도를 변경할 수 있지만 이로 인해 버퍼에 잘못된 문자가 감지 될 수 있습니다 (장치 및 프로토콜에 따라 다름). 즉, 변경 (SerialPort.DiscardInBuffer 사용).

관련 문제