private void btnStartMaszyny_Click(object sender, EventArgs e) { /** * Uruchomienie programu * 1. Sprawdzam czy formularz został wypełniony * 2. Użytkownik wybiera stan początkowy * 3. Uruchamiam arduino * 4. Startuję licznik */ // Uruchamiam formularz inicjujący if (ValidujFormularz()) { // ustawienia nasłuchiwania try { DanePrzezbrojeniaForm nowyProdukt = new DanePrzezbrojeniaForm(); DialogResult wynik = nowyProdukt.ShowDialog(); if (wynik == DialogResult.OK) { this.ObecnieProdukowanyProdukt = nowyProdukt.ObecnyProdukt; this.ObecnieProdukowanyKolor = nowyProdukt.ObecnyKolor; } SprawdzPolaczenieZArduino(); CzasTrwania = 0; ObecnyStan = db.TypZdarzenia.Where(t => t.TypZdarzeniaId == (int)cmbStan.SelectedValue).FirstOrDefault(); CzasUruchomienia = DateTime.Now; UpdateStateLabels(ObecnyStan.NazwaZdarzenia, CzasUruchomienia, CzasTrwania); // udostępniam narzędzia do zmiany stanu cmbStan.Enabled = true; cmbStan.SelectedIndex = -1; //Wyłączam przycisk start btnStartMaszyny.Enabled = false; timer1.Start(); } catch (System.IO.IOException) { MessageBox.Show("Brak połączenia z czujnikiem:\n1. Odłącz kabel usb.\n2. Podłącz go ponownie.\n\nJeżeli powyższe kroki nie rozwiążą problemu, skontaktuj się z autorem programu.", "Brak połączenia z arduino!", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show("Nie można uruchomić programu\nSkontaktuj się z autorem programu. " + ex.ToString()); } } }
/// <summary> /// Ustawia stan obecny maszyny /// </summary> /// <param name="stan">Nowy stan maszyny</param> private async void UstawStan(TypZdarzenia nowyStan) { //Zapisz obecny stan switch (nowyStan.NazwaZdarzenia) { case "Przezbrojenie": DanePrzezbrojeniaForm nowePrzezbrojenieForm = new DanePrzezbrojeniaForm(); DialogResult wynik = nowePrzezbrojenieForm.ShowDialog(); if (wynik == DialogResult.OK) { this.ObecnieProdukowanyProdukt = nowePrzezbrojenieForm.ObecnyProdukt; this.ObecnieProdukowanyKolor = nowePrzezbrojenieForm.ObecnyKolor; Przezbrojenie nowePrzezbrojenie = new Przezbrojenie { GodzinaUruchomienia = CzasUruchomienia, CzasTrwania = this.CzasTrwania, TypZdarzenia = ObecnyStan, Brygada = this.Brygada, LiniaProdukcyjna = this.LiniaProdukcyjna, Produkt = this.ObecnieProdukowanyProdukt, Kolor = this.ObecnieProdukowanyKolor }; db.Przezbrojenia.Add(nowePrzezbrojenie); await db.SaveChangesAsync(); ObecnyStan = nowyStan; } break; case "Awaria": break; default: break; } if (ObecnyStan != null) { if (ObecnyStan.NazwaZdarzenia == "Nieokreślony" && nowyStan.NazwaZdarzenia != "Produkcja") { // jeżeli ObecnyStan to "Nieokreślony" a nowyStan to nie "Produkcja" zmieniamy Obecny stan bez zapisywania w bazie. ObecnyStan = nowyStan; UpdateStateLabels(ObecnyStan.NazwaZdarzenia, CzasUruchomienia, CzasTrwania); cmbStan.SelectedIndex = -1; btnZmienStan.Enabled = false; } else if (ObecnyStan.NazwaZdarzenia == "Awaria") { // typ ObecnyStan do zapisania to awaria zapisujemy obiekt awarii Awaria nowaAwaria = new Awaria { GodzinaUruchomienia = CzasUruchomienia, CzasTrwania = this.CzasTrwania, TypZdarzenia = ObecnyStan, Brygada = this.Brygada, LiniaProdukcyjna = this.LiniaProdukcyjna, Produkt = this.ObecnieProdukowanyProdukt, Kolor = this.ObecnieProdukowanyKolor }; // ustawiam nowy stan obecny DateTime godz = DateTime.Now; ObecnyStan = nowyStan; CzasUruchomienia = DateTime.Now; UpdateStateLabels(ObecnyStan.NazwaZdarzenia, CzasUruchomienia, CzasTrwania); // zerowanie stanu formularza CzasTrwania = 0; cmbStan.SelectedIndex = -1; btnZmienStan.Enabled = false; db.Awaria.Add(nowaAwaria); await db.SaveChangesAsync(); PopulateDgvListaZdarzen(); } else if (ObecnyStan.NazwaZdarzenia == "Przezbrojenie") { // typ ObecnyStan to Przezbrojenie zapisujemy obiekt przezbrojenie Przezbrojenie nowePrzezbrojenie = new Przezbrojenie { GodzinaUruchomienia = CzasUruchomienia, CzasTrwania = this.CzasTrwania, TypZdarzenia = ObecnyStan, Brygada = this.Brygada, LiniaProdukcyjna = this.LiniaProdukcyjna, Produkt = this.ObecnieProdukowanyProdukt, Kolor = this.ObecnieProdukowanyKolor }; // ustawiam nowy stan obecny DateTime godz = DateTime.Now; ObecnyStan = nowyStan; CzasUruchomienia = DateTime.Now; UpdateStateLabels(ObecnyStan.NazwaZdarzenia, CzasUruchomienia, CzasTrwania); // zerowanie stanu formularza CzasTrwania = 0; cmbStan.SelectedIndex = -1; btnZmienStan.Enabled = false; db.Przezbrojenia.Add(nowePrzezbrojenie); await db.SaveChangesAsync(); PopulateDgvListaZdarzen(); } else { // zapisujemy stan obecny Stan stanDoZapisania = new Stan { GodzinaUruchomienia = CzasUruchomienia, CzasTrwania = this.CzasTrwania, TypZdarzenia = ObecnyStan, Brygada = this.Brygada, LiniaProdukcyjna = this.LiniaProdukcyjna }; // ustawiam nowy stan obecny ObecnyStan = nowyStan; CzasUruchomienia = DateTime.Now; UpdateStateLabels(ObecnyStan.NazwaZdarzenia, CzasUruchomienia, CzasTrwania); // zerowanie stanu formularza CzasTrwania = 0; cmbStan.SelectedIndex = -1; btnZmienStan.Enabled = false; db.Stan.Add(stanDoZapisania); await db.SaveChangesAsync(); PopulateDgvListaZdarzen(); } } }