2011-08-09 2 views
2

다음 링크와 비슷한 문제가 있습니다. How to change baud rate without closing the connection?. 하지만 자바 대신 C#을 사용합니다. 나는 보오율 300으로 시작하고있다. 그리고 나서 손 흔들기 후에 나는 내 보오율을 4800으로 바꿔야한다. 나는 이것을하기 위해 장치에 명령을 보낸다. 그리고 시리얼 포트의 전송 속도를 변경합니다. 그 후 나는 장치와의 통신을 계속할 수 없다. (300 보오에 머물러 300 보로 장치에 명령을 보내면 통신을 계속할 수 있습니다.)연결을 닫지 않고 C#에서 전송 속도를 변경하십시오.

이 장치에서도 읽는 타사 소프트웨어가 있습니다. 해당 소프트웨어가 실행 중일 때 포트를 듣고 있습니다. 그것은 장치에 보내는 것과 동일한 명령을 보냅니다. 장치에 4800 보오를 설정하라는 명령을 보내고 장치로부터 응답을 얻을 수 있습니다. 보드 변경 중에는 포트를 닫거나 다시 열지 않습니다. 나는 똑같은 일을해야한다. 하지만 4800 보로 변경 명령을 보낼 때 나는 장치에서 응답을 얻지 못합니다.

답변을 기다리고 있습니다. 이 포트는 프로세스 "ReadY.vshost.exe"열 직렬 포트 모니터링 프로그램으로부터 출력된다 FERDA

감사 (PID : 2,608)

01 42 30 03 71 .B0.q

응답 : 09.08.2011 10 : 55 : 40.81864 (+0.2656 초)

06.

요청 : 09.08.2011 10 : 55 : 41.06864 (1.2500 초)

2F 3F 31 31 39 39 39 30 30 34 21 0 D 0A/11,999,004 ...

않음?! 09.08. 2,011 10 : 55 : 41.58464 (0.5156 초)

층 53 54 52 34 42 53 4D 5F 31 33 31 0D 0A/STR4_BSM131 ..

요청 : 09.08.2011 10 : 55 : 42.31864 (0.2969 초)

06 30 34 31 0D 0A .041 ..

+1

보내려는 명령을 우리에게 보여 주면 도움이 될 것입니다. – Kaos

+0

패킷 추적기를 사용하여 차이점을 확인 하시겠습니까? – Polity

+0

'SerialPort.DiscardInBuffer'를 사용해 보셨나요? 제발 당신이 사용하는 코드를 게시하십시오 – V4Vendetta

답변

2

저의 경험에 따르면 시리얼 포트 하드웨어를 닫고 다시 열어야합니다. 저는 이것을 시도 할 것을 제안합니다. 전송 속도 전환 명령을 전송 한 다음 포트를 닫고 전송 속도를 설정 한 다음 포트를 다시 엽니 다. 포트 열기/닫기는 반대쪽 장치에 투명해야합니다 (CTS/RTS/DTR/DSR 회선을 사용하지 않는 경우).

+0

안녕하세요 Femi, 설정 속도를 닫고 이미 다시 열어 보았습니다. 초기 보오율은 300 보오입니다. 내가 300 보오 (이미 300 일 때) 스위치 명령을 보내면 나는 그 장치로부터 대답을 얻을 수있다. 하지만 4800으로 전환하라는 명령을 보낼 때 나는 그럴 수 없다. –

+0

안녕하세요, 다시 Femi, 내 문제를 해결할 다른 아이디어가 있습니까? 고맙습니다 –

1

장치의 전송 속도를 변경하려면 다음 단계를 수행하십시오. 예 : 장치의 확인을받지 1200

  • 의 전송 속도를 변경하기위한 1200

    1. 보내기 데이터 명령의 전송 속도와의 통신을 시작합니다.
    2. ACK가 적절하면 Port.BaudRate=1200을 설정하십시오.

    다음 당신은 다음, 4800 전송 속도를 변경 장치에서 승인을 수신 4800

  • 의 전송 속도를 변경하기위한 다음 단계

    1. 보내기 데이터 명령을 따르십시오.
    2. ACK가 적절하면 Port.BaudRate=4800을 설정하십시오.

    참고 : 컨트롤러 장치에서 ACK를 수신 한 후 Port.BaudRate를 변경하십시오. 통신은 이전에 설정된 BaudRate로 시작됩니다.

  • 관련 문제