VaCommコンポーネントは、COMポート経由で外部デバイスとの通信をカプセル化します。私は(フォームデザイナを介して)OnRxCharイベントハンドラを設定しているVaCommコンポーネントは、OnRxCharイベントを起動しません。
void Form::OnButton_Click()
{
VaComm1->PortNum = param.serialComm.port;
VaComm1->Open();
VaComm1->WriteText("bla bla\r\n");
Sleep(3000);
VaComm1->WriteText("another bla bla");
}
次のようになります:
void __fastcall TForm_Main::VaComm1RxChar(TObject *Sender, int Count)
{
AnsiString str = VaComm1->ReadText();
if (!str.IsEmpty())
{
// process received data
}
}
問題は、このイベントでも解雇されていないことである私のプログラムは、次のコードを使用して測定装置と通信していますデータが受信されたとき(無限ループでTVaComm :: ReadTextメソッドを呼び出すことでチェックできます)。また、接続されたデバイスへの2つのコマンドの送信も成功しました(デバイスの表示で確認できます)。入力バッファにデータがあるときにOnRxCharイベントを受け取るためにCOMポートを開く以外に何が必要ですか?私はまた、コンポーネントTVaBufferの兄弟の目的は何か分かりませんか?私はそれを使用していないと私は上記のようにReadTextメソッドを介してデータを受信することができます現在。