|
시리얼 통신에서 일반적으로 SOT(STX)를 0x02 EOT(ETX)를 0x03을 주로 사용합니다.
그리고 데이터는 일반적으로 문자를 사용합니다.
전송하고자 하는 데이터가 숫자로 123 이라면 이것을 문자열 "123" 으로 변경하여 전송하게 됩니다.
그래야 STX또는 ETX와 혼동되지 않기 때문입니다.
char sSendMsg[100];
memset(sSendMsg, '\0', sizeof(sSendMsg));
sprintf(sSendMsg, "%d%s%d", 0x02, "123", 0x03);
Send(sSendMsg);
수신 측에서는 STX와 ETX를 확인하여 데이터를 파싱하면됩니다.
가능하면 모든 데이터를 XOR 연산한 값을 맨 뒤에 붙여서 데이터가
전송중에 손상된 것인지 확인하는 신뢰성 확인 데이터를 추가하는 것도 좋다.
민이 님이 쓰신 글 :
: 안녕하세요 사회생활초짜인 청년입니다.
:
: 현재 제가 다른 사람과 연결하여 간단한 send / Read/ Recive를 할려 하는데요
:
: 아스키 코드를 이용을 할려 합니다.
:
: 상대방에서 CR_____LF 를 보내면(______ = START입니다)
: 저는 STX___EOT(____ = RUN)형식으로 보낼려 합니다.
:
: 10진수로 바꾸어서 해야 될까요??
:
: 제 생각에는 STX의 10진수 값이랑 빈칸에 있는 글자들의 값이랑 EOT의 10진수 값을 더해서 비교 할려 했지만
:
: 아닌것 같아 질문 드립니다..ㅠㅠ
:
: 간단한 예제일수도 있는데 ㅠㅠ
:
: 감이 잘 안오네요 ㅠㅠ
:
: 알려주시면 감사하겠습니다.
|