private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { if ((serialPort1.BytesToRead >= 27) && espera_dadoscont) { serialPort1.Read(dados_cont, 0, 27); this.BeginInvoke((Action)(() => AtualizaControlador())); serialPort1.DiscardInBuffer(); serialPort1.ReceivedBytesThreshold = 6; espera_dadoscont = false; } if ((serialPort1.BytesToRead > 6) && !espera_dadoscont) { serialPort1.DiscardInBuffer(); } if ((serialPort1.BytesToRead == 6) && !espera_dadoscont) { byte[] dados_bytes = new byte[6]; serialPort1.Read(dados_bytes, 0, 6); if ((dados_bytes[0] == 84) && ((dados_bytes[1] ^ dados_bytes[2] ^ dados_bytes[3] ^ dados_bytes[4] ^ dados_bytes[5]) == 0)) { espera_dadoscont = true; serialPort1.ReceivedBytesThreshold = 27; } if ((dados_bytes[0] >= 80) & (dados_bytes[0] <= 83)) { this.BeginInvoke((Action)(() => { if ((dados_bytes[1] ^ dados_bytes[2] ^ dados_bytes[3] ^ dados_bytes[4] ^ dados_bytes[5]) == 0) { PV = ((double)(BitConverter.ToInt16(dados_bytes, 1)) / 100); MV = ((double)(BitConverter.ToInt16(dados_bytes, 3)) / 100); if (dados_bytes[0] != status_cfginfb) { ConfigInFb(dados_bytes[0]); } label12.Text = PV.ToString("0.00"); textBox1.Text = label12.Text; label10.Text = MV.ToString("0.00"); if (status_cfginfb <= 81) { SP = PV; } label9.Text = SP.ToString("0.00"); if (grafico.Series[0].Points.Count > 1000) { grafico.Series[0].Points.RemoveAt(0); grafico.Series[1].Points.RemoveAt(0); grafico.Series[2].Points.RemoveAt(0); } if (!pause_graph) { grafico.Series[0].Points.Add(SP); grafico.Series[1].Points.Add(MV); grafico.Series[2].Points.Add(PV); } if (!rec_dadoscont) { byte[] recdadoscont = { 76, 1, 1 }; serialPort1.Write(recdadoscont, 0, 3); } grafico.ResetAutoValues(); } })); } else { serialPort1.DiscardInBuffer(); } } }