Exemplo n.º 1
0
 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();
         }
     }
 }