|
일단 제가 지적한 부분을 잠그고 해보세요
요쿠르트 님이 쓰신 글 :
: 요쿠르트 님이 쓰신 글 :
: :
: : 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문에서 전역변수 배열을 처음부터 끝까지 검사해서 데이타를 추출해서 사용하거든요.
: : 물론 올바른 데이타를 추츨했을 경우에는 전역변수 배열을 초기화시키고요..
|