VaComm 组件通过 COM 端口封装与外部设备的通信。我的程序正在使用以下代码与测量设备进行通信:
void Form::OnButton_Click()
{
VaComm1->PortNum = param.serialComm.port;
VaComm1->Open();
VaComm1->WriteText("bla bla\r\n");
Sleep(3000);
VaComm1->WriteText("another bla bla");
}
我设置了 OnRxChar 事件处理程序(通过表单设计器),如下所示:
void __fastcall TForm_Main::VaComm1RxChar(TObject *Sender, int Count)
{
AnsiString str = VaComm1->ReadText();
if (!str.IsEmpty())
{
// process received data
}
}
问题是即使接收到数据也不会触发此事件(可以通过在无限循环中调用 TVaComm::ReadText 方法来检查)。向连接的设备发送两个命令也成功(可以在设备显示屏上看到)。当输入缓冲区中有一些数据时,除了打开 COM 端口来接收 OnRxChar 事件之外还需要什么?我也不明白兄弟组件 TVaBuffer 的目的是什么?目前我没有使用它,并且可以通过方法 ReadText 接收数据(如我上面所写)。