アプリケーションに必要なシリアルポート機能を処理するシリアルポートライブラリを作成するように依頼されました。ライブラリのメソッド openComportToTuneSuite ()がメインのWindowsフォームから呼び出され、 comport.DataReceived時に「 portMessageReceivedFromTuneSuite」メソッドを割り当てるなど、通信用にシリアルポートが設定されます。イベントが発生します。すべてがうまく機能しているようです。ただし、DataReceivedメソッド(以下のコード内の「_response」)から返されたデータをメインのウィンドウフォームに表示する方法を解決できません。このメソッドは、ライブラリ内にEventHandlerを設定した結果として呼び出され、メインのWindowsフォームからの特定のメソッド呼び出し(応答を返すことができる)の結果ではないため、_responseが返送される機会はありません。アプリケーションに。
誰かが、サポートライブラリからメインウィンドウフォームに呼び出されたDataReceivedメソッドから受信したデータを表示する方法について正しい方向に私を導いてくれませんか?
ライブラリメソッド
public string openComportToTuneSuite()
{
_tuneSuiteComport.BaudRate = 19200;
_tuneSuiteComport.DataBits = 8;
_tuneSuiteComport.StopBits = StopBits.One;
_tuneSuiteComport.Parity = Parity.None;
_tuneSuiteComport.PortName = "COM11";
_tuneSuiteComport.Handshake = Handshake.None;
_tuneSuiteComport.RtsEnable = true;
_tuneSuiteComport.Open();
_tuneSuiteComport.DataReceived += portMessageReceivedFromTuneSuite;
}
private void portMessageReceivedFromTuneSuite(object sender, SerialDataReceivedEventArgs e)
{
string _response = "";
var responseFromChronos = _tuneSuiteComport.ReadExisting();
var responseArray = responseFromChronos.Split('\r');
foreach (var response in responseArray)
{
_response = _response + response.ToString() + Environment.NewLine;
}
//return _response;
return;
}