在
TComPort.OnRxChar
Count
参数,它告诉您有多少字节可用。不要读得太多。将字节缓冲到一侧,然后从该缓冲区中只读完整值。
例如:
private:
AnsiString ComPortBuffer;
void __fastcall TMyForm::ComPort1RXChar(TObject *Sender, int Count)
{
AnsiString s;
int len = ComPort1->ReadStr(s, 5);
if (len > 0)
{
if (len < 5)
s.SetLength(len);
ComPortBuffer += s;
}
while (ComPortBuffer.Length() >= 10)
{
AnsiString temp = ComPortBuffer.SubString(1, 5);
AnsiString hum = ComPortBuffer.SubString(6, 5);
ComPortBuffer.Delete(1, 10);
// use temp and hum as needed...
RichEdit1->Text = temp;
RichEdit3->Text = hum;
}
}