|
일단 아까 그 문제는 해결이 되었네요..
너무 어려운길을 선택했었네요 memicmp;;
strstr로 해결했습니다.
그런데 데이터가 한꺼번에 많이 들어올때 시빌더가 다운이 되는데
이게 왜이럴까요? 버퍼사이즈를 늘려줘도 버퍼를 초기화를 해줘도 다운이 되는데
처리속도가 느려서 그런걸까요? baudrate는 19200(터미널창으로 할때는 다운되지 않습니다)
구여 도중에 받는 도중에 if문이 여러개 있어서 처리하느라고 다운되는줄 알고
if문을 다 빼도 시빌더가 멈추네요.
memo 창도 따로 초기화를 해줘야 하나요?
소스 함께 올립니다. 문자열 [50]개가 쌓이기 전에 0x0d는 꼭 들어옵니다.
void __fastcall TForm1::Comm1RxChar(TObject *Sender, DWORD Count)
{
char str[500];
unsigned char buffer=0;
DWORD i,j;
char Buff[100];
int k;
static char data[500],serial_number = 0;
char serial_data[500];
String *Str_Data =new String;
Comm1->Read(serial_data,Count);
for(i=0;i<Count;i++)
{
data[serial_number] = serial_data[i] ;
if( data[serial_number] == 0x0d )
{
data[serial_number] = serial_data[i] ;
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]);
}
Memo1->Lines->Add(*Str_Data ) ;
}
serial_number = 0;
memset(data,0,500);
}
else
{
serial_number++ ;
}
}
|