간단한 시리얼(rs232) 통신 프로그램을 짜는 도중...
글쓴이: gazam / 작성시간: 수, 2007/12/26 - 4:57오후
안녕하세요.
KLDP에서 시리얼 프로그래밍 하우투를 보고
한쪽에선 write()함수로 보내고 한쪽에선 read()함수를
사용해서 읽는 프로그램을 작성하고 있습니다.
소스는 하우투 문서에서 read부분은 그대로 썼고요. canonical모드입니다.
보내는 쪽은 read함수쪽만 write를 써서 보내도록 하였고요.
그런데 싱크가 안맞는건지 버퍼가 초기화가 안되어서인지 읽는 쪽에서
aaa를 받으면 aaa를 출력하고 말아야 하는데 계속 읽네요. while문이 돌기 때문에
계속 읽게 되는데 read함수가 논블럭모드이기 때문에 오지 않으면 읽지 말아야 하는데
계속 읽네요. 아무래도 쓰레기값을 계속 읽는것 같습니다.
보낼 때 버퍼크기만큼 255바이트를 다 보내서 그런건가 해서 write를 할 때 aaa면 4바이트만 보내봤는데
그럼 읽는쪽에 반응이 없더군요. 일정 버퍼 이상 쌓여야 하는건가..?
포트설정은 다 잘 되었고요. 희안한건 보내는 쪽 콘솔에서 echo aaa > /dev/ttyS1 로 보내면
받는쪽에서 aaa를 잘 받고 출력해주고 다음 루프에서 read()에서 대기합니다. 잘 작동해요.
왜 echo로 하면 잘 되는데 직접 write를 하면 안될까요? 설정하는 부분이 있는데 봐도 잘 모르겠고
도와주세요~~
Forums:
댓글 달기