シリアル経由でマイクロコントローラーと通信するC#アプリケーションを作成しています。受信したメッセージの処理方法についていくつか質問があります。以下は私が現在使用しているコードです。メッセージは完全に正常に受信されましたが、フォームを更新したり、このメソッド以外の場所にデータを保存したりすることはできません(別のスレッドにあるため)。
com.DataReceived += new SerialDataReceivedEventHandler(OnReceived);
public void OnReceived(object sender, SerialDataReceivedEventArgs c) // This is started in another thread...
{
com.DiscardOutBuffer();
try
{
test = com.ReadExisting();
MessageBox.Show(test);
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}
フォームを変更しようとしたり、ここから別のメソッドを呼び出したりすると、「CrossThead操作が無効です」というエラーメッセージが表示されます。
情報を他の場所に表示したり、さらに良い方法で配列に配置して、後でファイルとして保存したりできるようにしたいと思います。これを行う方法はありますか?
再度、感謝します!