C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[27086] Re:버퍼문제는 아닌것 같은데요...?
요쿠르트 [] 881 읽음    2003-09-05 12:42

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문에서 전역변수 배열을 처음부터 끝까지 검사해서 데이타를 추출해서 사용하거든요.
물론 올바른 데이타를 추츨했을 경우에는 전역변수 배열을 초기화시키고요..

+ -

관련 글 리스트
27076 지푸라기라도 던져주세요...--; ->insufficient memory Error 요쿠르트 1463 2003/09/05
33338     Re:지푸라기라도 던져주세요...--; ->insufficient memory Error 손효철 968 2003/09/05
27086     Re:버퍼문제는 아닌것 같은데요...? 요쿠르트 881 2003/09/05
33337         Re:Re:버퍼문제는 아닌것 같은데요...? 강영준 862 2003/09/05
33336         Re:Re:버퍼문제는 아닌것 같은데요...? 손효철 838 2003/09/05
33335         Re:Re:버퍼문제는 아닌것 같은데요...? 손효철 871 2003/09/05
27089         Re:Re:버퍼문제는 아닌것 같은데요...? 요쿠르트 1043 2003/09/05
27096             Re:Re:Re:버퍼문제는 아닌것 같은데요...? 손효철 911 2003/09/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.