|
AnsiString으로 하시면 안됩니다.
AnsiString은 문자열을 처리하기 위한 class입니다.
왜냐하면 문자열은 기본적으로 시작부터 0x00을 만나면 끝은로 간주합니다.
예를 들어
char buf[100];
buf[0]='a';
buf[1]=0;
buf[2]='b';
buf[3]='c';
strlen(buf) 해보세요 100 이 아닌 1이 나올겁니다. 왜냐하면 0까지만 문자열로 보기때문에...
그냥 char buf를 쓰세요
unsigned char buf[256];
buf[0]= 5 ; //Length or Count
buf[1]= iFrameType ;
buf[2]= 0;
buf[3]= 0 ;
buf[4]= ~ ( buf[0]+buf[1]+buf[2]+buf[3]);
SendBuff(buf,5) ; //이런식으로 해야하죠
checksum은 data가 길어지면 간단하지 않으므로 for문으로 만들면 되구요
그럼..
코코정 님이 쓰신 글 :
: 답변 정말 정말 감사합니다.
: 그런데여 또 한가지 질문이 있습니다.
: 제가TCP/IP통신을 하려고 하는데여 방금 테스트를 하고 왔는데 서버가 아는척 를 안하더라구여..
: AnsiString Count = 0x05;
: AnsiString Type = 0x00;
: AnsiString Data = 0x00;
: AnsiString Sum = !(Count + Type + Data);
: AnsiString Frame = Count + Type + Data + Sum;
: Sendbuff(Frame.c_str(),Frame.length()); 이렇게여....
: 이렇게 해서 버퍼로 보냈는데 제가 작성한거에 무슨 문제라도 있는건가여?
:
:
: 장성호 님이 쓰신 글 :
: : Frame = Count+FType+Data(n)+CheckSum
: :
: : * Count = 프레임 전체 길이 입니다.
: : 1+1+n+1 가 되겠네요
: : (좀 애매한데 보통 Count부분을 빼기도 합니다.)
: :
: : * FrameType은 데이타 아무거나 올것이구
: : * Data는 총 250 Byte이하 이구
: :
: : * CheckSum은?
: : Check sum – is inverted sum of all previous bytes of the a Frame.
: : 즉 체크썸 앞에까지 전체 sum해서 invert하라네요
: :
: : 예) 아래와 같은경우..
: : Count 5 + FType 1 + Data { 0x03 , 0x04 } + ChkSum
: : ChkSum= ~ (0x05 + 0x01 + 0x03 + 0x04 ) ; 이렇게 됩니다.
: :
: : 그럼..
: :
: :
: :
: :
: :
: :
: : 코코정 님이 쓰신 글 :
: : : 바로 아래질문을 하였는데 제가 읽어봐도 무슨 말 인지 이해가 되질않아서 이렇게 다시 질문합니다.
: : : 첨부한 파일이 프로토콜입니다.
: : : 해석좀 부탁 드립니다.
: : : Byte count가 무엇을 하고자 하는 놈인지 궁금하구요
: : : check sum을 계산하라고 하는데 어떻게 계산하는건지도 궁금합니다..
: : : 그리고 예를 들어 설명해 주시면 감사하겠습니다.
: : : 예)
: : : 프레임 타입은 0x00이고
: : : 데이터는 0 이니
: : : 프레임 구조는 이렇게 합니다...뭐 이런식으로요 도와주십시요...
|