|
빌더 초보 님이 쓰신 글 :
: CPort 이용해서 시리얼 통신을 하고 있습니다..
:
: 데이터를 한번에 읽지 못하고 두번에 나누어서 읽고 있습니다..
: (데이터가 길어서 8Byte 씩 읽고 있습니다.)
: STX가 들어 오면 버퍼에 저장 하기 시작 합니다.
: ETX가 올때 까지 버퍼에 저장합니다.
: ETX가 오면 DB에 저장을 하고 있습니다.
:
: 문제는,
: 처음 STX데이터는 들어 왔지만 통신 오류로 인해서 ETX가 오지 않는 경우
: 일정 시간이 지나면 ETX가 오지 않아도 버퍼를 클리어 하고 새로 통신을 하고 싶은데..
: 계속 기다리는 문제로 인해 H/W장비가 다운되는 현상이 발생 합니다.
:
: 제~~~~발 답변 부탁드립니다.
계속 기다린다는것이, 아마도 수신 read 함수에서 time out 설정이 무한대 또는 긴 시간인것 같네요.
프로토콜에 STX,ETX로 패킷의 시작과 끝이 구분이 되기 때문에, 포트로부터 8바이트씩 읽을 필요는 없습니다.
CPort를 사용해 보지는 않았지만, read time out 설정이 있을듯 한데, 대기 시간을 0 으로해서,
1byte씩 read 하여 수신 버퍼에 저장하면서 처리하면 될겁니다.
|