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
[54456] Re:버그좀 잡아주세요..
utime.김성하 [utime] 1352 읽음    2008-09-01 17:14
자세히는 보질 못했지만

sizeof("korea\n\r")

이 부분이 조금 눈에 거슬리네요~

sizeof(char) * strlen("korea\n\r")

이렇게 해야 하는거 아닌가요? 별 차이는 없지만 나중에 NULL 문자가...

아니면 편하게 strcpy 함수를 사용하시는 것도 방법이겠네요.


그리고 serial_number 변수 값 for  실행 하기 전에 초기화 시켜 주시구요

데이터 받는 부분과 UI에 반영 하는 부분과는 분리 해서 작업 하는 습관을 들이세요~

UI는 UI일 뿐~ UI에 데이터를 받고 처리하는 로직이 들어가면 나중에 유지보수 관리하기 힘들어 집니다.

데이터 처리 부분은 별도 클래스를 두고 관리하세요~

그럼 수고하세요~ *^^*



번외편 님이 쓰신 글 :
: 시리얼 데이터 통신을 아래와 같이 쓰고 있는데 문제가 있는지...
: 많이 버벅이고 조금씩 오동작을 하는거 같습니다.
: 놓치고 있는부분이나 잘못하고 있는부분좀 잡아주세요
: 하루종일 디버깅을 해봐도 잘 안되네요
:
:
:         int i,j,k;
:         char Buff[100];
:         static char data[1000];
:         static unsigned int serial_number;
:         char serial_data[1000];
:
:         String *Str_Data = new String;
:
:         Comm1->Read(serial_data,Count);
:
:         RzMemo1->Lines->BeginUpdate() ;
:         //if( Count< 200)
:         //{
:                 for(i=0;i<Count;i++)
:                 {
:
:                         data[serial_number] =   serial_data[i] ;
:
:                         if( data[serial_number] == 0x0d )
:                         {
:                                 if( (data[0] != 0x1b) && (data[1] != 0x1b) )
:                                 {
:                                         *Str_Data = (char)data[0];
:                                         for(j=1;j<serial_number;j++)
:                                         {
:                                                 *Str_Data = *Str_Data + (char)(data[j]);
:                                         }
:
:
:                                         RzMemo1->Lines->Add(*Str_Data )  ;
:                                         RzMemo1->Perform(WM_VSCROLL, SB_BOTTOM, 0);
:
:                                         //while(RzMemo1->Lines->Count>40)
:                                         //RzMemo1->Lines->Delete(0);
:                                         //RzMemo1->Perform(EM_LINESCROLL,0,RzMemo1->Lines->Count-1);
:
:                                         //RzMemo1->SelStart=RzMemo1->Text.Length()-2;
:                                         //RzMemo1->SelLength=1;
:
:
:                                 }
:
:                                 if(strstr(data,"Hello")!=NULL)
:                                 {
:
:                                                 memset(ok,0,100);
:                                                 memcpy(ok,&data[17],20);
:                                                 Form6->RzStatusPane3->Caption = ok;
:
:                                                 //memset(data,0,100);
:                                 }
:
:                                 else if(strstr(data,"NAME")!=NULL)
:                                 {
:
:                                                 memset(NAME,0,100);
:                                                 memcpy(NAME,&data[22],20);
:                                                 Form6->RzStatusPane1->Caption = NAME;
:
:                                                //memset(data,0,100);
:                                 }
:
:                                 else if(strstr(data,"PASS")!=NULL)
:                                 {
:                                         UDP_Connect=0;
:                                         RzMemo3->Lines->Add(DateTimeToStr(Now()) + ' ' +"        자동끊김");
:                                         Timer4->Enabled=true;
:                                 }
:
:                                 memset(data,0,serial_number +10);
:                                 serial_number = 0;
:                         }
:
:                         else if(strstr(data,"Enter user name: ")!=NULL)
:                         {
:                                 memset(Buff,0,100);
:
:                                         memcpy(Buff, "korea\n\r",sizeof("korea\n\r"));
:                                         com = Comm1->Write(Buff,sizeof("korea\n\r"));
:                                         Label6->Caption = "name ok";
:
:                                 memset(data,0,100);
:                         }
:
:                         else if(strstr(data,"Enter login password: ")!=NULL)
:                         {
:                                 memset(Buff,0,100);
:
:                                         memcpy(Buff, "Time\n\r",sizeof("Time\n\r"));
:                                         com = Comm1->Write(Buff,sizeof("Time\n\r"));
:                                         Label7->Caption = "pass ok";
:
:                                 memset(data,0,100);
:                         }
:
:                         else
:                         {
:                                 serial_number++ ;
:                         }
:
:                         //if( serial_number > 100) serial_number = 0 ;
:                 }
:         //}
:         RzMemo1->Lines->EndUpdate() ;

+ -

관련 글 리스트
54449 버그좀 잡아주세요.. 번외편 1410 2008/08/29
54456     Re:버그좀 잡아주세요.. utime.김성하 1352 2008/09/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.