예제 #1
0
        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());
                }
            }
        }
예제 #2
0
        /// <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();
                }
            }
        }