|
금목암 님이 쓰신 글 :
: 최명권 님이 쓰신 글 :
: : 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로 하는게 좀 더 알아보기 쉽지 않을까요?
혹시 다른 문제가 있을까요??
|