Exemplo n.º 1
0
 public void EventHandlerWHMessungWorker(object sender, DoWorkEventArgs e)
 {
     for (int i = 0; i < Arduino.Datensatz168p.Count(); i++)
     {
         if (Arduino.Datensatz168p[i].WhMessungAn)//Messung für den Datensatz ist nicht an
         {
             Arduino.Send_Komando(PassivBMS.WhMessung(i + 1));
             System.Threading.Thread.Sleep(1000);
             if (Arduino.Datensatz168p[i].WHMessungAnzahl > 2)// Erst ab den dritten Dattensatz beginng die Messung
             {
                 if (Arduino.Datensatz168p[i].Whtime != Arduino.Datensatz168p[i].time)
                 {
                     deltT = Convert.ToDouble(Arduino.Datensatz168p[i].Whtime - Arduino.Datensatz168p[i].time);
                     Arduino.Datensatz168p[i].WhMessungErgebnis += deltT * Arduino.Datensatz168p[i].vin * Arduino.Datensatz168p[i].alast / 1000 / 60 / 60;//Umrechung in Wh
                     Arduino.Datensatz168p[i].Whtime             = Arduino.Datensatz168p[i].time;
                     Arduino.Datensatz168p[i].WhMessung.Add(Convert.ToString(deltT) + "," + Convert.ToString(Arduino.Datensatz168p[i].vin) + "," + Convert.ToString(Arduino.Datensatz168p[i].alast));
                     Arduino.Datensatz168p[i].Whtime = Arduino.Datensatz168p[i].time;
                 }
             }
             else
             {
                 Arduino.Datensatz168p[i].WhMessungMessungVinStart = Arduino.Datensatz168p[i].vin;
                 Arduino.Datensatz168p[i].Whtime = Arduino.Datensatz168p[i].time;
             }
             Arduino.Datensatz168p[i].WHMessungAnzahl++;
         }
         else
         {
             if (Arduino.Datensatz168p[i].mFet)
             {
                 Arduino.Send_Komando(PassivBMS.Mosfet(i + 1, false));
                 Arduino.Datensatz168p[i].mFet = false;
             }
         }
         if (Arduino.Datensatz168p[i].fehler)//Bricht die Messung ab da ein Fehler aufgetreten ist
         {
             Thread.Sleep(1000);
             Arduino.Send_Komando(PassivBMS.Mosfet(i + 1, false));
             Arduino.Datensatz168p[i].mFet = false;
             break;
         }
     }
 }
Exemplo n.º 2
0
 private void ButtonWHMessungStart_Click(object sender, EventArgs e)
 {
     utcDate = DateTime.UtcNow;
     utcDate = utcDate.AddHours(2.0);
     Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].mFet = true;
     Arduino.Send_Komando(PassivBMS.Mosfet(AuswahlBMS, true));
     Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungAn = true;
     Arduino.Send_Komando(PassivBMS.WhMessung(AuswahlBMS));
     Thread.Sleep(300);
     Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungStartzeit = utcDate;
     TextBoxWhMessungZeitStart.Text = Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungStartzeit.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("de-DE"));
     Thread.Sleep(100);
     TextBoxWhMessungVinStart.Text = "";
     TextBoxWhMessungZeitEnde.Text = "";
     TextBoxWhMessungVinEnde.Text  = "";
     TextBoxWhMessungAnzahl.Text   = "";
     TextBoxWhMessung.Text         = "";
     Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WHMessungAnzahl = 0;
     if (!WHMessungWorker.IsBusy)// WH messung läuft bereits und kann nicht zweimal gestartet werden Alle Messungen müssen vorher beenden werden
     {
         WHMessungWorker.RunWorkerAsync();
     }
 }