|
요쿠르트 님이 쓰신 글 :
:
: void __fastcall TForm1::ComPort2RxChar(TObject *Sender, int Count)
: {
: len = ComPort2->ReadStr(Str, Count);
:
: memset(imsi, 0, 4097);
: for(i=1; i<=len; i++) imsi[i-1] = Str[i];
:
: strncat(tcpTmpBuf, imsi, StrLen(imsi));
:
: for(a=0, index=0, start=0; a<StrLen(tcpTmpBuf); a++)
: {
: if(tcpTmpBuf[a] == 0x02 && start==0)
: {
: start = 1;
: memset(TempBuf, 0, 4096);
: index = 0;
: }
:
: if(start==1)
: {
: TempBuf[index] = tcpTmpBuf[a];
: index++;
: }
:
: if(tcpTmpBuf[a]==0x04 && start==1)
: {
: memset(tcpTmpBuf, 0, 4097);
: break;
: }
: }
: :
: :
: tcpTmpBuf, imsi, TempBuf모두 char형으로 배열을 잡았고요...
:
: memset(imsi, 0, 4097);
: for(i=1; i<=len; i++) imsi[i-1] = Str[i]; 이부분도 에러가 나진 않습니다.
:
: 제대로 한건지는 모르겠지만,,,
: 아무튼 20개까지는 들어오는 신호를 제대로 잡아줍니다.
:
: 참고로 제가 받는 신호가..
: 0x02로 시작해서 0x04로 끝나는 17바이트의 데이타거든요..
: 근데 신호가 한번에 모두 들어오는게 아니라 끊겼다가 들어곤 해서..(첨에 이걸 생각못해서 무지 애먹었죠--)
:
: 일단 Str로 받고,,
: 그걸 배열(imsi)에 하나씩 넣고,,
:
: 그 배열을 전역변수 배열에 카피해서 strncat(tcpTmpBuf, imsi, StrLen(imsi));
:
: 맨 마지막 for문에서 전역변수 배열을 처음부터 끝까지 검사해서 데이타를 추출해서 사용하거든요.
: 물론 올바른 데이타를 추츨했을 경우에는 전역변수 배열을 초기화시키고요..
|