protected void OnFreshDataReceived(object sender, DataTransEventArgs e) { List <byte> buffer = (List <byte>)bufferByCom[e.PortName]; if (e.EventData.Length < FRESHCMDCHECKBYTELENGTH) { buffer.AddRange(e.EventData); if (buffer.Count >= FRESHCMDCHECKBYTELENGTH) { if (CompareResponseByte(buffer.ToArray())) { buffer.Clear(); m_PluggedPortName = e.PortName; m_FreshEvent.Set(); } } } else { if (CompareResponseByte(e.EventData)) { buffer.Clear(); m_PluggedPortName = e.PortName; m_FreshEvent.Set(); } } }
/// <summary> /// 处理串口传入的数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void OnDataReceived(object sender, DataTransEventArgs e) { byte[] temp = new byte[FRESHCMDCHECKBYTELENGTH]; //-32768 ~ 32767在此范围的值,当传过来的值超过32767时一定是负值,此时要异或0xFFFF后再加1补码是为负数的绝对值 // { DP D5 D4 D3 D2 D1 UNIT }\{ E R R O R 0 1 }\{ E R R O R 0 2 }\{ E R R O R 0 3 } try { m_ReadBuffer.AddRange(e.EventData); for (int iLoop = 0; iLoop < m_ReadBuffer.Count; iLoop++) { System.Diagnostics.Debug.Write(m_ReadBuffer[iLoop].ToString("X") + " "); } System.Diagnostics.Debug.WriteLine(""); PressureGaugeDataEventArgs args = Analyze(m_ReadBuffer); if (args != null && PressureGaugeDataRecerived != null) { PressureGaugeDataRecerived(this, args); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } }