|
제가 질문을 잘못 이해했었군요.. ^^;
제가 예전에
rs232(COM) <-> rs232 to rs485 Convertor <-> Device
<-> Device
<-> Device
이런구조의 보드들을 컨트롤하는 프로그램을 제작한 적이 있는데요.
그당시에 제작한것은
Device별로 프로토콜을 생성하고 응답용 버퍼를 가지는 클래스를 제작했구요.
rs232를 스레드로 돌리는 클래스를 하나 제작했습니다.
그리고 필요할때 Device클래스로 프로토콜을 생성하고,응답용버퍼를 생성하여
두개를 rs232쓰레드클래스에 Add 해줬습니다.
(응답용 버퍼는 vector를 이용해서 미리 resize해서 응답받을 길이를 세팅)
그리고 rs232는 들어오는 순서대로 큐에 쌓아서 순서대로
데이타를 주고받고 했구요( 오류시 재전송 기능도 rs232클래스에서 작동했습니다 )
저는 이렇게 하고 응답용버퍼를 제가 원할때 그냥 읽었습니다 -_-;
버퍼생성시에 지정한 초기값이 들어있으면 아직 못읽은 것이고
먼가 값이 들어있으면 읽은것이겠죠.(읽는중일수도 있구요 ㅡ,.ㅡ)
다만 귀찮아서 저렇게 했지만.. 예를들어
rs232에 붙히는 명령,버퍼 등에 몇가지 데이타만 더 추가해주면
버퍼에 제대로 다 응답이 오면 메인윈도우에 사용자 정의 메세지를 날리던지..
아니면 콜백함수의 주소를 추가해서 콜백형식으로 할수도 있겠구요.
아뭏튼 전 이런식으로 해서
4가지 보드를 깔끔하게 컨트롤 할수 있었습니다.
게다가!!! 윈도우가 버벅이는 현상을 없앨수가 있었습니다.
저도 간단한건 CPort를 사용하는데. 조금 프로토콜들이 복잡해질수록
한계가 오더라구요... 그래서 전 저만의 클래스를 만들어서 사용중이랍니다. ^^;
그럼 조금이나마 도움이 되었길 바랍니다. ㅠ.ㅠ
|