|
시리얼 데이터 통신을 아래와 같이 쓰고 있는데 문제가 있는지...
많이 버벅이고 조금씩 오동작을 하는거 같습니다.
놓치고 있는부분이나 잘못하고 있는부분좀 잡아주세요
하루종일 디버깅을 해봐도 잘 안되네요
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() ;
|