Esempio n. 1
0
 public bool AddArduinoConfigObject(ArduinoConfigObject o, bool overwrite = true)
 {
     if (ArduinoConfigs.ContainsKey(o.DeviceId))
     {
         if (overwrite)
         {
             ArduinoConfigs[o.DeviceId] = o;
             Save();
             return(true);
         }
         return(false);
     }
     // no duplication, just add it
     ArduinoConfigs.Add(o.DeviceId, o);
     Save();
     return(true);
 }
Esempio n. 2
0
        private void arduinoConfigureButton_Click(object sender, EventArgs e)
        {
            using (var form = new ArduinoConfigForm(currentArduinoConfig))
            {
                switch (form.ShowDialog())
                {
                case DialogResult.OK:
                    arduinoConfiguredBox.Checked = true;
                    configLibrary.AddArduinoConfigObject(form.ArduinoConfig);
                    currentArduinoConfig = form.ArduinoConfig;
                    break;

                case DialogResult.Cancel:
                    break;
                }
            }
        }
Esempio n. 3
0
        private void arduinoSerialPortCombo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (arduinoSerialPortCombo.Text != "None found")
            {
                arduinoSerialPortCombo.Enabled = false;
                arduinoConfigureButton.Enabled = false;
                var port       = new SerialPort(arduinoSerialPortCombo.Text, 115200);
                var waitdialog = new PleaseWait("Checking for Arduino on " + arduinoSerialPortCombo.Text);
                new Thread(() => waitdialog.ShowDialog()).Start();
                try
                {
                    port.Open();
                }
                catch
                {
                    this.Invoke((Action) delegate { waitdialog.Close(); });
                    MessageBox.Show("Communication error", "Unable to open port " + arduinoSerialPortCombo.Text,
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    arduinoFWverBox.Text = "";
                    return;
                }
                port.Write("?");
                Thread.Sleep(1000);
                var fw = port.ReadExisting();
                port.Close();
                if (fw.Split(' ').FirstOrDefault() != "WINGMAN")
                {
                    this.Invoke((Action) delegate { waitdialog.Close(); });
                    arduinoSerialPortCombo.Enabled = true;
                    MessageBox.Show(
                        "Error communicating with Arduino", "The device on " + arduinoSerialPortCombo.Text +
                        " has not been recognised. Please check it is running WingMan firmware.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    return;
                }
                arduinoFWverBox.Text = fw;
                var arduinoVersionNo = "";
                var atoms            = fw.Split(' ').ToArray();
                foreach (var i in atoms)
                {
                    var s = i.Split(':');
                    if (s.Length == 1)
                    {
                        // this is just the name
                        continue;
                    }
                    if (s.Length != 2)
                    {
                        throw new Exception("Error parsing Arduino firmware data");
                    }

                    if (s[0] == "F")
                    {
                        arduinoFadersCountBox.Text = s[1];
                    }                                                      // number of faders
                    if (s[0] == "B")
                    {
                        arduinoButtonsCountBox.Text = s[1];
                    }                                                       // number of buttons
                    if (s[0] == "P")
                    {
                        arduinoHwInfoBox.Text = s[1];
                    }                                                 // hardware platform
                    if (s[0] == "I")
                    {
                        arduinoIdBox.Text = s[1];
                    }                                             // device ID
                    if (s[0] == "V")
                    {
                        arduinoVersionNo = s[1];
                    }                                            // version number
                }
                if (configLibrary.ArduinoConfigs.ContainsKey(arduinoIdBox.Text))
                {
                    var libraryArduinoConfig = configLibrary.ArduinoConfigs[arduinoIdBox.Text];
                    if (libraryArduinoConfig.Buttons == int.Parse(arduinoButtonsCountBox.Text) &&
                        libraryArduinoConfig.Faders == int.Parse(arduinoFadersCountBox.Text) &&
                        libraryArduinoConfig.Version == arduinoVersionNo)
                    {
                        currentArduinoConfig         = libraryArduinoConfig;
                        arduinoConfiguredBox.Checked = true;
                    }
                    else
                    {
                        switch (
                            MessageBox.Show(
                                "Another Arduino with the same ID has been found in the configuration library but with different parameters. Do you want to overwrite the existing entry? (you will lose and existing mappings for this device ID)",
                                "Duplicate ID found in library", MessageBoxButtons.OKCancel, MessageBoxIcon.Question))
                        {
                        case DialogResult.Cancel:
                            MessageBox.Show(
                                "Please ensure every Arduino has a unique ID. The software will now quit.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            Application.Exit();
                            break;

                        case DialogResult.OK:
                            currentArduinoConfig         = new ArduinoConfigObject(arduinoIdBox.Text, arduinoHwInfoBox.Text, int.Parse(arduinoFadersCountBox.Text), int.Parse(arduinoButtonsCountBox.Text), arduinoVersionNo);
                            arduinoConfiguredBox.Checked = false;
                            break;
                        }
                    }
                }
                else
                {
                    currentArduinoConfig         = new ArduinoConfigObject(arduinoIdBox.Text, arduinoHwInfoBox.Text, int.Parse(arduinoFadersCountBox.Text), int.Parse(arduinoButtonsCountBox.Text), arduinoVersionNo);
                    arduinoConfiguredBox.Checked = false;
                }
                arduinoSerialPortCombo.Enabled = true;
                arduinoConfigureButton.Enabled = true;
                this.Invoke((Action) delegate { waitdialog.Close(); });
            }
            else
            {
                arduinoConfigureButton.Enabled = false;
                arduinoFWverBox.Text           = "";
                arduinoButtonsCountBox.Text    = "";
                arduinoFadersCountBox.Text     = "";
            }
        }