|
分類:[C#]
Visual Studio 2019 VC#でRS485のシリアルで受信処理しています。 ボーレートは38400,パリティ:偶数 ストップビット2bitで
受信イベントで以下のように作成しております。
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { if (serialPort1.IsOpen == false) { return; } try { if (serialPort1.BytesToRead > 0) { // シリアルポートからデータ受信 byte[] data = new Byte[serialPort1.BytesToRead]; serialPort1.Read(data, 0, data.GetLength(0));
//! 受信したデータを判定する Invoke(new Delegate_RcvDataHantei(RcvDataData), new Object[] { data }); } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } }
・当初8byteくらい受信できていたが、134byteのデータを受信した場合、Invoke内のRcvDataData関数内に 入りません。ただし、serialPort1_DataReceived内のどこかにブレークポイントを追加してデバッグ すると、停止します。そしてステップインで1行ずつ実施していくとInvoke内のRcvDataData関数に入ります。 なぜ、通常では、Invoke内のRcvDataData関数内の処理にいかないのか。だれか教えてください。
|