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
[52568] Re:Re:Re:시리얼통신 패킷 관련 도움주실분요..
금목암 [iconms1] 1625 읽음    2008-03-06 10:39
최명권 님이 쓰신 글 :
: 금목암 님이 쓰신 글 :
: : 최명권 님이 쓰신 글 :
: : : CPort를 이용하여 간단한 시리얼 통신을 하려는데요,
: : : 일단 열구 닫는건 검포넌트의 도움으로 대충 끝냈구요,
: : : DSP와 통신하는 것만 남아있습니다.
: : :
: : : [ComPort]
: : : Port = COM1
: : : BaudRate = 9600
: : : StopBits = 1
: : : DataBits = 8
: : : Parity = None
: : : FlowControl = None
: : :
: : : 데이터는 8비트를 상위 4비트를 헤더, 4비트를 데이터로 사용하려고 합니다. 그래서
: : :
: : : #define   HEADER_A   0x01
: : : #define   HEADER_B   0x02
: : : ........
: : : 송신부쪽에는
: : : ----------------------------------------
: : : char szBuf[2];
: : :
: : : szBuf[0] = STX;
: : : ComPort->Write(szBuf, 1);
: : :
: : : szBuf[0] = HEADER_A < 4 | DATA_A ;     // DATA 는 미리 뒤쪽 4비트만 남게 처리
: : : ComPort->Write(szBuf, 1);
: : :
: : : szBuf[0] = HEADER_B < 4 | DATA_B ;
: : : ComPort->Write(szBuf, 1);
: : :
: : : szBuf[0] = ETX;
: : : ComPort->Write(szBuf, 1);
: : : ----------------------------------------
: : :
: : : 이럴경우에 STX랑 ETX는 어떤 것이 좋을까요?? 제가 맘대루 해두 되는건 알고 있는데
: : : 제가 통신이 첨이라 보통은 어케 처리하는지 궁금해서요..
: : : 저는 헤더가 1부터 시작하니깐
: : :
: : : #define   STX    0x0F
: : : #define   ETX    0x05
: : :
: : : 헤더를 0으루 하구 이렇게 생각하구 있었거든요..
: : :
: : : 고수님들 답변 부탁드립니다..
: : -----------------------------
: : 헤더는 0으로 하지마세요
: : 문자열에 넣을때 0이면 종료됩니다
: :
: : stx=f5, etx=f6으로 하는게 좋을것 같네요
: : 중간에 ascii코드를 넣으면 0~127 가 됩니다
: : 그리고 stx 다음에 패킷의 길이를 넣으세요
:
: 답변 고맙습니다..
:
: 문자열에 넣을때 0이면 종료된다는 뜻하고,
: STX 다음에 패킷의 길이를 넣으라는게 무슨 뜻인지 한번더 부탁드려두 될까요??
:
: 헤더가 0이 안된다면 STX를 1111 0000, ETX를 1111 1111로 하는게 좀 더 알아보기 쉽지 않을까요?
: 혹시 다른 문제가 있을까요??

0xff도 문제를 일으킬수있으니 쓰지마세요
길이는 패키의 길이로 256자이내면 1바이트 65535자 이내면 2바이트로 잡으세요
수신부에서 헤더 다음에 길이를 받아서 다음부터 들어오는 문자를 저장후
만약 중간 데이터중 헤더나 테일값과 같은게 잇더라도 길이내면 무시하고
헤더.테일,길이가 일치하는 패킷만 처리하게 합니다
맨끝에 체크썸을 만들면 더 좋겟죠 ..
중간에 에러가 나도 버리고 다시 요청하면 되니까

+ -

관련 글 리스트
52549 시리얼통신 패킷 관련 도움주실분요.. 최명권 1466 2008/03/05
52554     Re:시리얼통신 패킷 관련 도움주실분요.. 금목암 1738 2008/03/05
52567         Re:Re:시리얼통신 패킷 관련 도움주실분요.. 최명권 1430 2008/03/06
52568             Re:Re:Re:시리얼통신 패킷 관련 도움주실분요.. 금목암 1625 2008/03/06
52594                 Re:Re:Re:Re:시리얼통신 패킷 관련 도움주실분요.. 최명권 2515 2008/03/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.