/// <summary> /// 重写的数据接收方法,需要连续接收,直到CRC校验成功或是超时,接收时间会比较久 /// </summary> /// <param name="sender">串口对象</param> /// <param name="e">串口的数据对象</param> protected override void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e) { while (true) { Thread.Sleep(40); try { if (SP_ReadData.BytesToRead < 1) { continue; } // 继续接收数据 receiveCount += SP_ReadData.Read(buffer, receiveCount, SP_ReadData.BytesToRead); // CRC校验成功及退出 byte[] data = new byte[receiveCount]; Array.Copy(buffer, 0, data, 0, receiveCount); if (SoftCRC16.CheckCRC16(data)) { break; } } catch (Exception ex) { isComError = true; ComErrorMsg = ex.Message; break; } } resetEvent.Set( ); }
/// <summary> /// 串口数据接收的回调方法 /// </summary> /// <param name="sender">数据发送</param> /// <param name="e">消息</param> protected virtual void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e) { while (true) { Thread.Sleep(20); if (SP_ReadData.BytesToRead < 1) { break; } // 继续接收数据 receiveCount += SP_ReadData.Read(buffer, receiveCount, SP_ReadData.BytesToRead); } resetEvent.Set( ); }
private void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e) { while (true) { Thread.Sleep(20); int countRece = SP_ReadData.Read(buffer, receiveCount, SP_ReadData.BytesToRead); receiveCount += countRece; if (countRece == 0) { break; } } resetEvent.Set( ); }
/// <summary> /// 串口数据接收的回调方法 /// </summary> /// <param name="sender">数据发送</param> /// <param name="e">消息</param> protected virtual void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e) { while (true) { Thread.Sleep(20); try { if (SP_ReadData.BytesToRead < 1) { break; } // 继续接收数据 receiveCount += SP_ReadData.Read(buffer, receiveCount, SP_ReadData.BytesToRead); } catch (Exception ex) { isComError = true; ComErrorMsg = ex.Message; break; } } resetEvent.Set( ); }
private void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e) { Thread.Sleep(20); receiveCount = SP_ReadData.Read(buffer, 0, SP_ReadData.BytesToRead); resetEvent.Set( ); }