|
안녕하세요.
현재 MFC로 시리얼 통신 프로그램을 짜서 ATMEGA128이라는 마이크로프로세서와 통신을 하는 중입니다.
시리얼 통신에 관한 클래스는 인터넷에 많이 쓰이는 걸로 찾아서 만들었습니다.
통신이 잘 되는 지 확인하려고 시리얼 RS-232 포트의 Rx와 Tx를 서로 연결하고 MFC에서 문자열을 보내고, 다시 되돌아온 문자열을 화면에 출력했습니다.
8바이트까지는 잘 보내지고 받아와지는데, 보내는 바이트 수가 8바이트를 넘어가면 잘려나가네요.
포트 설정이 잘못된 것 같지는 않습니다. 속도나 패리티 같은 걸 바꿔바도 똑같은 현상이 발생합니다.
포트에 내보내는 건 CommTread.cpp에 있는 WriteComm 함수를 이용하여 WriteComm("abcdef",6); 처럼
문자열과 문자열의 길이로 보냅니다. "1234567890" 이렇게 10문자를 보내면 화면에는 "90"만 출력됩니다.
앞에 "12345678" 8바이트는 어디로 버려졌는지 알 수가 없네요...
통신이 잘 된다면 보낸 바이트 수만큼 되돌아와야 하는데, 어째서 8바이트로 잘라지는 걸까요...
[추가내용]
CommThread.cpp에서 ThreadWatchComm 메소드 내에서 Sleep(700); 처럼 값을 크게 주면 많이 보내도 읽어오네요.
Sleep을 대체할 수 있는 방법은 없을까요? Timeout을 조정해야 하나요...
|