|
밑에 질문 올렸었는데요.. 너무 길어질것 같아서 새로 올립니다. 양해 부탁드릴께요.
아래 빈센트님이 답변을 주셨는데요.. 흠.. 우선 하드웨어에서는.. 동적 패킷 구조를 가지고 있습니다.
마지막 바이트가 들어오고 일정시간동안 다음 바이트가 들어오지 않으면 거기까지를 패킷으로 간주하는것이지요..
그렇기때문에, ComPort->Read(buf, 12) 이런식으로 읽을 갯수를 정의하기가 곤란합니다.
OnRxChar 이벤트에서 넘어오는 Count 인자로 보면 되지 않느냐..하는분도 없지 않으실텐데..
예를들어 12바이트를 보낸다면.. 8 + 4 이런식으로 끊어져서 올라옵니다. OnRxChar 이벤트를 막고 따로 버튼을 하나 만들어서 InputCount()를 확인하면 12읽히고요..
제가 예전에 API와 Thread를 이용해서 짠 프로그램을 보면,
우선 Timeout 구조체에서 ReadInterval만 15msec 정도를 주고 나머지 인자는 모두 0으로 세팅해줍니다.
그리고 Thread에서는 ReadFile 함수에서 계속 걸려있다가 15msec동안 다른 receive가 없으면 리턴을 해주지요.
그렇게 되면 리턴되는 배열과, 받은 Byte 수를 알 수가 있습니다. 이것을 가지고 처리를 해주면 되고요..
하지만.. CPort에서는 ReadInterval로 발생하는 이벤트가 없는것 같습니다.
OnRxChar는 ReadInterval과 관련없는 이벤트로 알고있는데.. 제가 잘못 알고 있는것인지요?
오로지 ReadInterval로만 발생할 수 있는 이벤트는 CPort 컴포넌트에 없는것인지요..
답변 부탁드리겠습니다.
|