|
어떤 컴포넌트를 이용하든 이 문제는 원하는데로 깔끔하게 해결하기는 쉽지 않습니다.
rs232 드라이버를 새로만들면 모를까?
그러므로 일반적인 방법으로는
1. 수신되는 내용을 buffer에 계속 쌓아 두는것입니다.
2. 그리고 buffer에 쌓인 data가 일정 패킷에 맞으면
그부분을 꺼내어서 처리하고..
3. buffer에서는 방금전 처리한 부분을 삭제합니다.
buffer로는 보통 그냥 일정 크기의 메모리를 잡아서쓰기도 하지만
큐 또는 원형큐도 많이 쓰입니다.
그럼..
자갈밭 님이 쓰신 글 :
: Async Pro 4.06을 사용하여 프로그래밍을 할려고 합니다..
:
: 테스트 프로그램을 짜서 확인하고 있는데...
: 난관에 봉착했습니다...
:
: portmon으로 확인해보니 아래와 같습니다...
:
:
: 174 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
: 175 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
: 176 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
: 177 오전 9:40:58 test2.exe IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
: 178 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
: 179 오전 9:40:58 test2.exe IRP_MJ_READ Serial0 SUCCESS Length 8: FE FE 00 58 00 00 00 26
: 180 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
: 181 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
: 182 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
: 183 오전 9:40:58 test2.exe IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
: 184 오전 9:40:58 test2.exe IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
: 185 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
: 186 오전 9:40:58 test2.exe IRP_MJ_READ Serial0 SUCCESS Length 3: 45 01 FD
: 187 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
: 188 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
: 189 오전 9:40:58 test2.exe IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
: 190 오전 9:40:58 test2.exe IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
:
: 패킷이 FE FE 00 58 00 00 00 26 45 01 FD 이렇게 읽혀야 될텐데....
: 항상 FE FE 00 58 00 00 00 26 8 바이트 한번 ,
: 45 01 FD 3 바이트 이렇게 읽힙니다.
:
: 기기에 따라 START FLAG ( 0xFE 0xFE )와 END FLAG(0xFD)를 사용하는 기기도 있지만,
: Start,End Flag를 사용하지 않는 기기도 있어 고민입니다.
:
: 위에서 8 + 3 = 11 바이트를 한번에 읽히도록 할려면 어떻게 해야 하는지요?
|