Компонент 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 (как я написал выше).