C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[44461] Re:Re:Re:RS232 데이터 수신 대기
WARSHIP [warship] 1704 읽음    2006-04-12 12:08
제가 질문을 잘못 이해했었군요.. ^^;

제가 예전에

rs232(COM) <->  rs232 to rs485 Convertor <-> Device
                                                                 <-> Device
                                                                 <-> Device

이런구조의 보드들을 컨트롤하는 프로그램을 제작한 적이 있는데요.
그당시에 제작한것은

Device별로 프로토콜을 생성하고 응답용 버퍼를 가지는 클래스를 제작했구요.
rs232를 스레드로 돌리는 클래스를 하나 제작했습니다.

그리고 필요할때 Device클래스로 프로토콜을 생성하고,응답용버퍼를 생성하여
두개를 rs232쓰레드클래스에 Add 해줬습니다.
(응답용 버퍼는 vector를 이용해서 미리 resize해서 응답받을 길이를 세팅)

그리고 rs232는 들어오는 순서대로 큐에 쌓아서 순서대로
데이타를 주고받고 했구요( 오류시 재전송 기능도 rs232클래스에서 작동했습니다 )

저는 이렇게 하고 응답용버퍼를 제가 원할때 그냥 읽었습니다 -_-;
버퍼생성시에 지정한 초기값이 들어있으면 아직 못읽은 것이고
먼가 값이 들어있으면 읽은것이겠죠.(읽는중일수도 있구요 ㅡ,.ㅡ)

다만 귀찮아서 저렇게 했지만.. 예를들어
rs232에 붙히는  명령,버퍼 등에 몇가지 데이타만 더 추가해주면
버퍼에 제대로 다 응답이 오면 메인윈도우에 사용자 정의 메세지를 날리던지..
아니면 콜백함수의 주소를 추가해서 콜백형식으로 할수도 있겠구요.

아뭏튼 전 이런식으로 해서
4가지 보드를 깔끔하게 컨트롤 할수 있었습니다.
게다가!!! 윈도우가 버벅이는 현상을 없앨수가 있었습니다.

저도 간단한건 CPort를 사용하는데. 조금 프로토콜들이 복잡해질수록
한계가 오더라구요... 그래서 전 저만의 클래스를 만들어서 사용중이랍니다. ^^;

그럼 조금이나마 도움이 되었길 바랍니다. ㅠ.ㅠ

+ -

관련 글 리스트
44428 RS232 데이터 수신 대기 권기식.with☆ 1091 2006/04/10
44431     Re:RS232 데이터 수신 대기 WARSHIP 1921 2006/04/10
44450         Re:Re:RS232 데이터 수신 대기 권기식.with☆ 1865 2006/04/12
44461             Re:Re:Re:RS232 데이터 수신 대기 WARSHIP 1704 2006/04/12
44529                 감사합니다. 권기식.with☆ 1039 2006/04/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.