|
시리얼 통신에 어떤 컴포넌트를 사용했는지 알수 없지만 소스만 봐서는 시리얼 포트로 데이타가 들어오면
수신 이벤트가 발생하고 그 이벤트 함수에서 데이타를 처리 하는 방식을 사용하지 않았나 생각 됩니다.
void __fastcall TForm1::RS232_Read( char *datain, int data_Buff) <-- 수신 이벤트 함수로 판단되는데
첫번째 파라메타는 수신된 데이타가 저장된 버퍼일테고
두번째 파라메타는 수신된 데이타의 길이가 될거 같습니다.
이 경우 소스처럼 굳이 일일이 for 문을 돌릴 필요는 없습니다.
들어오는 데이타의 프로토콜이 늘 동일하다면 STX, ETX 만 확인합니다.
if(datain[0] == STX && datain[9] == ETX)
{
data=0x0f & idatain[3];
strTemp = Format("%2x", ARRAYOFCONST((data)));
Memo1->Text=Memo1->Text+(strTemp);
strTemp = Format("%.2x", ARRAYOFCONST((idatain[4])));
Memo1->Text=Memo1->Text+(strTemp);
}
|