示例#1
0
        public StartForm()
        {
            InitializeComponent();

            Funzioni.CheckForAnotherIstance();
            Funzioni.CheckForInternetConnection();

            if (!File.Exists(Funzioni.CONFIG_FILE_NAME))
            {
                Messaggi.ShowError("Non è stato trovato il file di configurazione nella cartella dell'eseguibile." + Environment.NewLine +
                                   "E' stato creato un file con le impostazioni di default!");
                FileStream fs         = File.Create(Funzioni.CONFIG_FILE_NAME);
                string     msgToWrite = @"PANNELLO=OFF
MONTATURA=OFF
COM_MONTATURA=COM3
COM_ARDUINO=COM4
ALL_NTO=Astro-Physics
TEXT_COLOR_START_UP=R";
                fs.Write(Encoding.ASCII.GetBytes(msgToWrite), 0, msgToWrite.Length);
                fs.Close();
            }

            pannello  = false;
            montatura = false;
            button_pannello.BackColor  = Color.Red;
            button_montatura.BackColor = Color.Red;
        }
示例#2
0
        public static double P_M(double azimut, ref string azimutString)
        {
            try
            {
                azimutString = Math.Round(azimut, 2).ToString();
                azimut       = Math.PI * azimut / 180; //da gradi a radianti
                double posizioneMontatura = (180 * azimut / Math.PI) * NUMERO_PIEDINI / 360 + DOME_WIDTH_FOOT / 2 * Math.Cos(azimut / 2);

                if (currentAllignment == Allineamenti.AstroPhysics)
                {
                    posizioneMontatura += OFFSET_ASTRO_PHYSICS;
                }
                if (currentAllignment == Allineamenti.RitcheyChrétien)
                {
                    posizioneMontatura += OFFSET_RITCHEY_CHRETIEN;
                }

                return(posizioneMontatura);
            }
            catch (Exception ex)
            {
                Messaggi.ShowError("Errore in P_M: " + ex.Message);
                return(0);
            }
        }
示例#3
0
        private void Button_crossroads_Click(object sender, EventArgs e)
        {
            try
            {
                int cnt = 0;
                for (int i = 0; i < Application.OpenForms.Count; i++)
                {
                    if (Application.OpenForms[i].Name.ToUpper() == "CROSSROADFORM")
                    {
                        Application.OpenForms[i].Close();
                        cnt++;
                    }
                }

                CrossRoadForm crossRoadForm = null;
                if (cnt == 0)
                {
                    crossRoadForm = new CrossRoadForm();
                    crossRoadForm.Show();
                }
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Error Button_crossroads_Click", ex);
            }
        }
示例#4
0
        private void Timer_refresh_Tick(object sender, EventArgs e)
        {
            try
            {
                Funzioni.ControlRemoteOperations();
                Funzioni.PcStatus(richTextBox_computerStatus);

                if (evento_muovi)
                {
                    Muovi();
                    button_cupola.Text = StatoPortellone();
                }
                else if (evento_insegui)
                {
                    Insegui();
                    //label_stato_montatura.Text = StatoMontatura();
                }
                else if (evento_parcheggia)
                {
                    Parcheggia();
                }
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore in timer_refresh_Tick", ex);
                timer_refresh.Stop();
            }
        }
示例#5
0
        public FrontEnd()
        {
            try
            {
                InitializeComponent();
                Text += " " + Assembly.GetEntryAssembly().GetName().Version;

                webBrowser.Navigate(new Uri(Funzioni.cameraIP));

                foreach (string DISP in SerialPort.GetPortNames())
                {
                    ComboBox_porta_montatura.Items.Add(DISP);
                    ComboBox_porta_arduino.Items.Add(DISP);
                }

                ComboBox_porta_montatura.SelectedItem = Funzioni.GetStatus("COM_MONTATURA");
                ComboBox_porta_arduino.SelectedItem   = Funzioni.GetStatus("COM_ARDUINO");
                ComboBox_all_nto.SelectedItem         = Funzioni.GetStatus("ALL_NTO");

                FormClosing += new FormClosingEventHandler(Ti_sconnetto_alla_chiusura);

                Funzioni.ComparsaScomparsaColorazione(this);
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore al caricamento FrontEnd", ex);
            }
        }
示例#6
0
        private void Parcheggia()
        {
            try
            {
                timer_refresh.Stop();
                if (Messaggi.YesNo("ATTENZIONE!! In fase di parcheggio non è possibile agire sulla cupola e sulla montatura. Continuare?") == DialogResult.Yes)
                {
                    label_azimut.Text              = "---";
                    label_altezza.Text             = "---";
                    label_posizione_montatura.Text = "---";
                    label_posizione_cupola.Text    = "---";

                    RiceviDatiMONT(":KA#:KA#");
                    ARDU.WriteLine("Q");
                    richTextBoxCommunication.Text += Environment.NewLine + "Send Q to Arduino. N.:17";
                    Funzioni.Wait(90000, progressBar);
                    Messaggi.Show("Parcheggio avvenuto con successo");
                }
                else
                {
                    Messaggi.ShowWarning("La montatura non è parcheggiata");
                }
                timer_refresh.Start();
                evento_parcheggia = false;
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore al parcheggia", ex);
            }
        }
示例#7
0
        private string StatoPortellone()
        {
            try
            {
                switch (RiceviDatiARDU("B"))
                {
                case "M":
                    return(String.Empty);

                case "C":
                    return("Apri portellone");

                case "A":
                    return("Chiudi portellone");

                case "O":
                    return(String.Empty);

                default:
                    return(String.Empty);
                }
            }
            catch (Exception ex)
            {
                timer_refresh.Stop();
                Messaggi.ShowException("Errore in StatoPortellone", ex);
                return("---");
            }
        }
示例#8
0
 public static void CheckForAnotherIstance()
 {
     if (System.Diagnostics.Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location)).Count() > 1)
     {
         Messaggi.ShowWarning("Un altra istanza del programma è già in esecuzione");
         Application.Exit();
     }
 }
示例#9
0
        private string StatoMontatura()
        {
            try
            {
                switch (RiceviDatiMONT(":GSTAT#:GSTAT#"))
                {
                case "0":
                    return("Montatura in inseguimento");

                case "1":
                    return("Montatura ferma a causa dell'esecuzione di STOP (tasto o stringa) \n o del completamento della sequenza di homing");

                case "2":
                    return("Movimento verso la posizione di park");

                case "3":
                    return("La montatura non è parcheggiata");

                case "4":
                    return("Movimento verso la posizione di home");

                case "5":
                    return("Montatura parcheggiata");

                case "6":
                    return("Montatura in movimento");

                case "7":
                    return("Inseguimento disattivato e montatura ferma");

                case "8":
                    return("Motori inibiti a causa della bassa temperatura");

                case "9":
                    return("Inseguimento attivo ma montatura fuori dai limiti di inseguimento");

                case "10":
                    return("Inseguimento di un'orbita satellitare precalcolata");

                case "11":
                    return("Richiesta di intervento per autorizzare il movimento \n a causa di una inconsistenza nei dati");

                case "98":
                    return("Stato non noto");

                case "99":
                    return("Errore");

                default:
                    return("---");
                }
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore in stato montatura", ex);
                return("---");
            }
        }
示例#10
0
 private void Button_home_Click(object sender, EventArgs e)
 {
     try
     {
         webBrowser.Navigate(new Uri(Funzioni.cameraIP));
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al Button_home_Click", ex);
     }
 }
示例#11
0
 private void Button_accendi_pannello_Click(object sender, EventArgs e)
 {
     try
     {
         SpegniPannello();
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al Button_accendi_pannello_Click", ex);
     }
 }
示例#12
0
 private void Button_stop_Click(object sender, EventArgs e)
 {
     try
     {
         RiceviDatiMONT(":STOP#:STOP#");
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al Button_stop_click", ex);
     }
 }
示例#13
0
        private void Button_parcheggia_Click(object sender, EventArgs e)
        {
            evento_muovi      = false;
            evento_insegui    = false;
            evento_parcheggia = true;

            ARDU.WriteLine("Q");
            richTextBoxCommunication.Text += Environment.NewLine + "Send Q to Arduino. N.:5";
            Funzioni.Wait(30000, progressBar);
            Messaggi.Show("Parcheggio cupola avvenuto con successo");
        }
示例#14
0
 private void Muovi()
 {
     try
     {
         RiceviDatiMONT(":PO#:PO#");
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al Muovi", ex);
     }
 }
示例#15
0
 private void Button_accendi_Click(object sender, EventArgs e)
 {
     try
     {
         AccendiMontatura();
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al Button_accendi_Click", ex);
     }
 }
示例#16
0
        private void AccendiMontatura()
        {
            try
            {
                if (Funzioni.GetStatus("MONTATURA").Equals("OFF"))
                {
                    ARDU.WriteLine("A");
                    if (Messaggi.YesNo("Ricerca satelliti in corso, non sarà possibile agire sul programma...") == DialogResult.Yes)
                    {
                        Funzioni.Wait(90000, progressBar);
                    }
                    else
                    {
                        return;
                    }

                    Funzioni.SetStatus("MONTATURA", "ON");
                    button_accendi_pannello.Visible = false;
                    Messaggi.ShowWarning("ATTENZIONE!! Settare la porta seriale della montatura da tastierino.\n\t- Menù\n\t- Impostazioni\n\t- Porta GPS\n\t- Seriale\n\t- OK");
                    ARDU.WriteLine("VG");
                    richTextBoxCommunication.Text += Environment.NewLine + "Send VG to Arduino. N.:9";
                    button_accendi.Text            = "Spegni montatura";
                    button_accendi.BackColor       = Color.Green;

                    button_muovi.Visible      = true;
                    button_cupola.Visible     = true;
                    button_piu.Visible        = true;
                    button_insegui.Visible    = true;
                    button_meno.Visible       = true;
                    button_parcheggia.Visible = true;
                }
                else if (Funzioni.GetStatus("MONTATURA").Equals("ON"))
                {
                    if (Messaggi.YesNo("ATTENZIONE!! Settare la porta GPS della montatura da tastierino.\n\t- Menù\n\t- Impostazioni\n\t- Porta GPS\n\t- GPS\n\t- OK\n\nE' stato fatto?") == DialogResult.Yes)
                    {
                        ARDU.WriteLine("A");
                        richTextBoxCommunication.Text += Environment.NewLine + "Send A to Arduino. N.:10";
                        Messaggi.Show("Spegnimento montatura, non sarà possibile agire sul programma...");
                        Funzioni.Wait(20000, progressBar);
                        ARDU.WriteLine("g");
                        richTextBoxCommunication.Text += Environment.NewLine + "Send g to Arduino. N.:11";
                        Funzioni.SetStatus("MONTATURA", "OFF");
                        button_accendi_pannello.Visible = true;
                        button_accendi.Text             = "Accendi montatura";
                        button_accendi.BackColor        = Color.Red;
                    }
                }
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore all'accensione della montatura", ex);
            }
        }
示例#17
0
 private void Button_meno_Click(object sender, EventArgs e)
 {
     try
     {
         ARDU.WriteLine("s");
         richTextBoxCommunication.Text += Environment.NewLine + "Send s to Arduino. N.:8";
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al Button_meno_Click", ex);
     }
 }
示例#18
0
 private void ComboBox_all_nto_SelectedIndexChanged(object sender, EventArgs e)
 {
     try
     {
         if (checkBox_default_all_nto.Checked)
         {
             Funzioni.SetStatus("ALL_NTO", ComboBox_all_nto.SelectedItem.ToString());
         }
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al ComboBox_all_nto_SelectedIndexChanged", ex);
     }
 }
示例#19
0
 private void CheckBox_default_all_nto_CheckedChanged(object sender, EventArgs e)
 {
     try
     {
         if (!String.IsNullOrEmpty(ComboBox_all_nto.SelectedItem.ToString()))
         {
             Funzioni.SetStatus("ALL_NTO", ComboBox_all_nto.SelectedItem.ToString());
         }
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("CheckBox_default_all_nto_CheckedChanged", ex);
     }
 }
示例#20
0
 private void CheckBox_default_arduino_CheckedChanged(object sender, EventArgs e)
 {
     try
     {
         if (!String.IsNullOrEmpty(ComboBox_porta_arduino.SelectedItem.ToString()))
         {
             Funzioni.SetStatus("COM_ARDUINO", ComboBox_porta_arduino.SelectedItem.ToString());
         }
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al CheckBox_default_arduino_CheckedChanged", ex);
     }
 }
示例#21
0
 public static void CheckForInternetConnection()
 {
     try
     {
         Ping        myPing      = new Ping();
         String      host        = "google.com";
         byte[]      buffer      = new byte[32];
         int         timeout     = 2000;
         PingOptions pingOptions = new PingOptions();
         PingReply   reply       = myPing.Send(host, timeout, buffer, pingOptions);
         connection = reply.Status == IPStatus.Success;
     }
     catch
     {
         connection = false;
         Messaggi.ShowWarning("Connessione a internet assente");
     }
 }
示例#22
0
        private void ComboBox_porta_montatura_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (ComboBox_porta_montatura.SelectedItem.Equals(ComboBox_porta_arduino.SelectedItem))
                {
                    Messaggi.ShowWarning("Montatura e cupola settati sulla medesima porta");
                }

                if (checkBox_default_montatura.Checked)
                {
                    Funzioni.SetStatus("COM_MONTATURA", ComboBox_porta_montatura.SelectedItem.ToString());
                }
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore in ComboBox_porta_montatura_SelectedIndexChanged", ex);
            }
        }
示例#23
0
 public static string GetStatus(string keyName)
 {
     try
     {
         string[] fileLines = File.ReadAllLines(CONFIG_FILE_NAME);
         foreach (string fileLine in fileLines)
         {
             if (fileLine.Split('=')[0] == keyName)
             {
                 return(fileLine.Split('=')[1]);
             }
         }
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Eccezione al GetStatus:", ex);
     }
     return("Chiave non trovata");
 }
示例#24
0
        private void Ti_sconnetto_alla_chiusura(object sender, EventArgs e)
        {
            try
            {
                if (Funzioni.GetStatus("MONTATURA").Equals("ON"))
                {
                    if (Messaggi.YesNo("E' stata richiesta la chiusura del programma. Non è sicuro procedere se la montatura non è stata spenta correttamente. Spegnere?") == DialogResult.Yes)
                    {
                        AccendiMontatura();
                        Funzioni.SetStatus("MONTATURA", "OFF");
                    }
                }

                if (Funzioni.GetStatus("PANNELLO").Equals("ON"))
                {
                    if (Messaggi.YesNo("E' stata richiesta la chiusura del programma. Non è sicuro procedere se la montatura non è stata spenta correttamente. Spegnere?") == DialogResult.Yes)
                    {
                        SpegniPannello();
                        Funzioni.SetStatus("PANNELLO", "OFF");
                    }
                }

                if (ARDU.IsOpen)
                {
                    ARDU.WriteLine("g");
                    richTextBoxCommunication.Text += Environment.NewLine + "Send g to Arduino. N.:1";
                    ARDU.Close();
                }

                if (MONT.IsOpen)
                {
                    MONT.Close();
                }

                Application.Exit();
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore Ti_sconnetto_alla_chiusura", ex);
            }
        }
示例#25
0
        private void SpegniPannello()
        {
            string messaggioPannello = String.Empty;

            try
            {
                if (Funzioni.GetStatus("PANNELLO").Equals("ON"))
                {
                    messaggioPannello = "lo spegnimento";
                }
                else if (Funzioni.GetStatus("PANNELLO").Equals("OFF"))
                {
                    messaggioPannello = "l'accensione";
                }

                if (Messaggi.YesNo("ATTENZIONE!! Hai richiesto " + messaggioPannello + " del pannello, procedere?") == DialogResult.Yes)
                {
                    ARDU.WriteLine("x");
                    richTextBoxCommunication.Text += Environment.NewLine + "Send x to Arduino. N.:19";
                    Funzioni.Wait(5000, progressBar);

                    if (Funzioni.GetStatus("PANNELLO").Equals("ON"))
                    {
                        Funzioni.SetStatus("PANNELLO", "OFF");
                        button_accendi_pannello.Text      = "Accendi pannello";
                        button_accendi_pannello.BackColor = Color.Red;
                    }
                    else if (Funzioni.GetStatus("PANNELLO").Equals("OFF"))
                    {
                        Funzioni.SetStatus("PANNELLO", "ON");
                        button_accendi_pannello.Text      = "Spegni pannello";
                        button_accendi_pannello.BackColor = Color.Green;
                    }
                    button_accendi.Visible = true;
                }
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore in accensione pannello", ex);
            }
        }
示例#26
0
        public static void SetStatus(string keyName, string value)
        {
            try
            {
                string[] fileLines = File.ReadAllLines(CONFIG_FILE_NAME);
                int      i         = 0;
                for (i = 0; i < fileLines.Count(); i++)
                {
                    if (fileLines[i].Split('=')[0] == keyName)
                    {
                        break;
                    }
                }
                fileLines[i] = keyName + "=" + value;

                File.WriteAllLines(CONFIG_FILE_NAME, fileLines);
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore al SetStatus", ex);
            }
        }
示例#27
0
 private void Button_cupola_Click(object sender, EventArgs e)
 {
     try
     {
         if (button_cupola.Text.Equals("Apri portellone"))
         {
             ARDU.WriteLine("C");
             richTextBoxCommunication.Text += Environment.NewLine + "Send C to Arduino. N.:3";
             button_cupola.Text             = "Chiudi portellone";
         }
         else if (button_cupola.Text.Equals("Chiudi portellone"))
         {
             ARDU.WriteLine("c");
             richTextBoxCommunication.Text += Environment.NewLine + "Send c to Arduino. N.:4";
             button_cupola.Text             = "Apri portellone";
         }
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore in button_cupola_Click", ex);
     }
 }
示例#28
0
        private string RiceviDatiARDU(string invio_dati)
        {
            string dati_ricevuti = String.Empty;

            ARDU.WriteLine(invio_dati);
            int nProve = 100, nTest = 0;

            try
            {
                while (String.IsNullOrWhiteSpace(dati_ricevuti) && String.IsNullOrEmpty(dati_ricevuti) && nTest < nProve)
                {
                    dati_ricevuti = ARDU.ReadExisting();
                    nTest++;
                }
                return(dati_ricevuti);
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore in ricevi_dati_ARDU", ex);
                return("---");
            }
        }
示例#29
0
 private void ControlloPioggia()
 {
     try
     {
         string piove = RiceviDatiARDU("E");
         if (piove.Equals("P"))
         {
             MessageBox.Show("ATTENZIONE!! Piove", "Cupola Remota");
             label_pioggia.Text = "Piove";
             ARDU.WriteLine("Q");
             richTextBoxCommunication.Text += Environment.NewLine + "Send Q to Arduino. N.:6";
             MONT.WriteLine(":KA#:KA#");
             timer_refresh.Stop();
         }
         else if (piove.Equals("NP"))
         {
             label_pioggia.Text = "Non piove";
         }
     }
     catch (Exception ex)
     {
         Messaggi.ShowException("Errore al ControlloPioggia", ex);
     }
 }
示例#30
0
        private string RiceviDatiMONT(string invio_dati)
        {
            string dati_ricevuti = String.Empty;

            MONT.WriteLine(invio_dati);
            label_invio_a_montatura.Text = invio_dati;
            try
            {
                dati_ricevuti = MONT.ReadExisting();
                if (dati_ricevuti.Equals(null))
                {
                    return("---");
                }
                else
                {
                    return(dati_ricevuti);
                }
            }
            catch (Exception ex)
            {
                Messaggi.ShowException("Errore in ricevi_dati_MONT", ex);
                return("---");
            }
        }