|
02 80 A8 B1 93 FA BD B1 93 03 <-------시리얼로 들어오는 데이터 형식
i= 0 1 2 3 4 5 6 7 8 9
3번째 하위와 4번째 데이터값만을 Memo1에 쓰는데.... 가끔 엉뚱한 데이터가 나옵니다.
간혹 다음 데이터를 수신할때도 있고 그렇습니다. 어떤식으로 해결해야할까요?
ㅠㅠ 답변 간절히 기다릴께요.
//------------시리얼 수신쪽 ----------------------------------------
DWORD ReadThread (LPDWORD lpdwParam1)
{
char datain[BUFSIZ];
DWORD data_Buff;
if (!(cp.dwProvCapabilities & PCF_INTTIMEOUTS))
return 1L;
memset (&to, 0, sizeof(to));
to.ReadIntervalTimeout = MAXDWORD;
SetCommTimeouts (hComm, &to);
while (bReading) {
if (!ReadFile(hComm, inbuff, BUFSIZ, &data_Buff, NULL))
{
locProcessCommError(GetLastError ());
}
else
{
if(data_Buff)
Form1->ProcessBytes(inbuff, data_Buff);
}
}
PurgeComm(hComm, PURGE_RXCLEAR|PURGE_TXCLEAR);
return 0L;
}
//------------------------------------------------------------
void __fastcall TForm1::RS232_Read( char *datain, int data_Buff)
{
int i;
AnsiString strTemp;
BYTE data;
for( i=0; i<data_Buff; i++)
{
if(i==3)
{
data=0x0f & idatain[i];
strTemp = Format("%2x", ARRAYOFCONST((data)));
Memo1->Text=Memo1->Text+(strTemp);
}
if(i==4)
{
data=idatain[i];
strTemp = Format("%.2x", ARRAYOFCONST((data)));
Memo1->Text=Memo1->Text+(strTemp);
}
}
}
//------------------------------------------------------------
|