|
이미 많은 분들이 답을 가르쳐 드렸는데....
좀더 깊이 생각해보시고 테스트를 하시면 다 해결될 정도로...
암튼 간단한 샘플 소스를 보여드리죠....
따로 설명은 하지 않겠습니다...
보시면 금방 이해하실거라 믿습니다...
참고로 아래 코드는 단지 시리얼 통신을 확인하기 위한 프로그램에서 사용하는 코드입니다.
void __fastcall TfmComm::DuoComm1Received(TObject *Sender, const int ACount)
{
char Buffer[9999];
int Bytes, p;
memset(Buffer, 0, DuoComm1->MaxInQueue);
Bytes = DuoComm1->Read(Buffer, ACount);
if(Bytes == -1) Memo1->Lines->Add("Error reading incoming data...");
else
{
for(p=0; p<Bytes; p++)
{
if(Buffer[p] == CR && !CommPro || Buffer[p] == ETX && CommPro)
{
if(LineData != "")
{
StrRxBuf = LineData;
LineData = "";
if(cbCtrlChar->Text == "STX-ETX" || cbCtrlChar->Text == "ENQ-ACK")
{
StrRxBuf += Buffer[p];
p++;
StrRxBuf += Buffer[p];
p++;
StrRxBuf += Buffer[p];
}
Memo1->Lines->Add(StrRxBuf);
}
}
else if(Buffer[p] != 0xa) LineData += Buffer[p];
}
}
Application->ProcessMessages();
}
그럼 이만...
|