Exemplo n.º 1
0
        private void DisconnectButton_Click(object sender, EventArgs e)
        {
            try
            {
                //if something goes wrong, close the ports that may be open
                SDMC1SerialPort.Close();
                ArduinoSerialPort.Close();

                //Change connection interaction
                SDMC1Port.Enabled        = true;
                SDMC1BaudRate.Enabled    = true;
                ArduinoPort.Enabled      = true;
                ArduinoBaudRate.Enabled  = true;
                ConnectButton.Enabled    = true;
                DisconnectButton.Enabled = false;

                //Change controller interaction
                ArduinoSendText.Enabled   = false;
                ArduinoSendButton.Enabled = false;

                SDMC1SendText.Enabled   = false;
                SDMC1SendButton.Enabled = false;

                HomeButton.Enabled = false;
                ScanButton.Enabled = false;
            }
            catch (Exception error)
            {
                MessageText.Text = error.Message;
            }
        }
Exemplo n.º 2
0
 private void HomeButton_Click(object sender, EventArgs e)
 {
     moves = 0;
     SDMC1SerialPort.DataReceived -= SDMC1SerialPort_DataReceived;
     SDMC1SerialPort.DataReceived += HomeSDMC1_DataReceived;
     HomeButton.Enabled            = false;
     ScanButton.Enabled            = false;
     SDMC1Message   = "";
     ArduinoMessage = "";
     SDMC1SerialPort.Write("]\r");
 }
Exemplo n.º 3
0
 private void ScanArduino_DataReceived(object sender, SerialDataReceivedEventArgs e)
 {
     try
     {
         ArduinoMessage += ArduinoSerialPort.ReadExisting();
         ArduinoReadText.Invoke(new MethodInvoker(delegate
         {
             ArduinoReadText.Text += ArduinoMessage;
         }));
         if (ArduinoMessage.Contains("\n"))
         {
             measurementData.Add(Convert.ToInt32(ArduinoMessage));
             ArduinoMessage = "";
             ScanProgress.Invoke(new MethodInvoker(delegate
             {
                 ScanProgress.Value = 1 / scanLength;
             }));
             if (measurementData.Count < scanLength)
             {
                 SDMC1SerialPort.Write("+1\r");
             }
             else
             {
                 SDMC1SerialPort.DataReceived   -= ScanSDMC1_DataReceived;
                 SDMC1SerialPort.DataReceived   += SDMC1SerialPort_DataReceived;
                 ArduinoSerialPort.DataReceived -= ScanArduino_DataReceived;
                 ArduinoSerialPort.DataReceived += ArduinoSerialPort_DataReceived;
                 SDMC1SerialPort.Write("R" + scanStartPosition + "\r");
                 HomeButton.Invoke(new MethodInvoker(delegate
                 {
                     HomeButton.Enabled = true;
                 }));
                 ScanButton.Invoke(new MethodInvoker(delegate
                 {
                     ScanButton.Enabled = true;
                 }));
             }
             moves++;
         }
     }
     catch (Exception error)
     {
         MessageText.Invoke(new MethodInvoker(delegate
         {
             MessageText.Text = error.Message;
         }));
         ArduinoMessage = "";
     }
 }
Exemplo n.º 4
0
 private void ScanButton_Click(object sender, EventArgs e)
 {
     moves           = 0;
     measurementData = new List <int>();
     SDMC1SerialPort.DataReceived   -= SDMC1SerialPort_DataReceived;
     SDMC1SerialPort.DataReceived   += ScanSDMC1_DataReceived;
     ArduinoSerialPort.DataReceived -= ArduinoSerialPort_DataReceived;
     ArduinoSerialPort.DataReceived += ScanArduino_DataReceived;
     HomeButton.Enabled              = false;
     ScanButton.Enabled              = false;
     SDMC1Message   = "";
     ArduinoMessage = "";
     SDMC1SerialPort.Write("R" + scanStartPosition + "\r");
     SDMC1SerialPort.Write(" \r");
 }
Exemplo n.º 5
0
 private void SDMC1SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
 {
     try
     {
         String reply = SDMC1SerialPort.ReadExisting();
         SDMC1ReadText.Invoke(new MethodInvoker(delegate {
             SDMC1ReadText.Text = SDMC1ReadText.Text + reply;
         }));
     }
     catch (Exception error)
     {
         MessageText.Invoke(new MethodInvoker(delegate
         {
             MessageText.Text = error.Message;
         }));
     }
 }
Exemplo n.º 6
0
 private void ScanSDMC1_DataReceived(object sender, SerialDataReceivedEventArgs e)
 {
     try
     {
         SDMC1Message += SDMC1SerialPort.ReadExisting();
         SDMC1ReadText.Invoke(new MethodInvoker(delegate
         {
             SDMC1ReadText.Text += SDMC1Message;
         }));
         if (SDMC1Message.Contains("\r"))
         {
             ArduinoSerialPort.WriteLine("read");
             SDMC1Message = "";
         }
     }
     catch (Exception error)
     {
         MessageText.Invoke(new MethodInvoker(delegate
         {
             MessageText.Text = error.Message;
         }));
         SDMC1Message = "";
     }
 }
Exemplo n.º 7
0
        private void ConnectButton_Click(object sender, EventArgs e)
        {
            if (SDMC1BaudRate.SelectedItem == "" || SDMC1Port.SelectedItem == "" || ArduinoPort.SelectedItem == "" || ArduinoBaudRate.SelectedItem == "")
            {
                MessageText.Text = "Specify ports and baudrates";
            }
            else
            {
                try
                {
                    //Connect to SDMC1
                    SDMC1SerialPort.PortName    = SDMC1Port.SelectedItem.ToString();
                    SDMC1SerialPort.BaudRate    = Convert.ToInt32(SDMC1BaudRate.SelectedItem.ToString());
                    SDMC1SerialPort.ReadTimeout = timeoutMS;
                    SDMC1SerialPort.DataBits    = 8;
                    SDMC1SerialPort.StopBits    = StopBits.One;
                    SDMC1SerialPort.Parity      = Parity.None;
                    SDMC1SerialPort.Open();

                    //Connect to Arduino
                    ArduinoSerialPort.PortName    = ArduinoPort.SelectedItem.ToString();
                    ArduinoSerialPort.BaudRate    = Convert.ToInt32(ArduinoBaudRate.SelectedItem.ToString());
                    ArduinoSerialPort.ReadTimeout = timeoutMS;
                    ArduinoSerialPort.Open();

                    //Change connection interaction
                    DisconnectButton.Enabled = true;
                    SDMC1Port.Enabled        = false;
                    SDMC1BaudRate.Enabled    = false;
                    ArduinoPort.Enabled      = false;
                    ArduinoBaudRate.Enabled  = false;
                    ConnectButton.Enabled    = false;

                    //Change controller interaction
                    ArduinoSendText.Enabled   = true;
                    ArduinoSendButton.Enabled = true;

                    SDMC1SendText.Enabled   = true;
                    SDMC1SendButton.Enabled = true;

                    HomeButton.Enabled = true;
                }
                catch (Exception error)
                {
                    MessageText.Text = error.Message;

                    //if something goes wrong, close the ports that may be open
                    SDMC1SerialPort.Close();
                    ArduinoSerialPort.Close();

                    //Change connection interaction
                    SDMC1Port.Enabled        = true;
                    SDMC1BaudRate.Enabled    = true;
                    ArduinoPort.Enabled      = true;
                    ArduinoBaudRate.Enabled  = true;
                    ConnectButton.Enabled    = true;
                    DisconnectButton.Enabled = false;

                    //Change controller interaction
                    ArduinoSendText.Enabled   = false;
                    ArduinoSendButton.Enabled = false;

                    SDMC1SendText.Enabled   = false;
                    SDMC1SendButton.Enabled = false;

                    HomeButton.Enabled = false;
                    ScanButton.Enabled = false;
                }
            }
        }
Exemplo n.º 8
0
        private void HomeSDMC1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            int StartPosition = -1;
            int EndPosition   = -1;

            try
            {
                SDMC1Message += SDMC1SerialPort.ReadExisting();
                if (SDMC1Message.Contains("\r"))
                {
                    //if it says it just moved, check the limit switches
                    if (SDMC1Message.Contains("-1"))
                    {
                        SDMC1Message = "";
                        SDMC1SerialPort.Write("]\r");
                    }
                    //if it reports the limit switch, check if it's home, if not move
                    else if (SDMC1Message.Contains("]"))
                    {
                        // get only the numeric part of the input by starting at the first character, looking for the first digit, then looking for the first non-digit after that
                        for (int i = 0; i < SDMC1Message.Length; i++)
                        {
                            if (Char.IsDigit(SDMC1Message[i]))
                            {
                                StartPosition = i - 1;
                                break;
                            }
                        }
                        for (int i = StartPosition + 1; i < SDMC1Message.Length; i++)
                        {
                            if (!Char.IsDigit(SDMC1Message[i]))
                            {
                                EndPosition = i - 1;
                                break;
                            }
                        }
                        if (StartPosition > 0 && EndPosition > 0)
                        {
                            SDMC1Message = SDMC1Message.Substring(StartPosition, EndPosition);
                        }
                        else if (StartPosition > 0)
                        {
                            SDMC1Message = SDMC1Message.Substring(StartPosition);
                        }


                        Boolean home = (Convert.ToInt32(SDMC1Message) & 128) > 0;
                        if (!home && moves < homeDistance)
                        {
                            SDMC1SerialPort.Write("-1\r");
                            moves++;
                        }
                        else
                        {
                            if (moves > homeDistance - 1)
                            {
                                MessageText.Invoke(new MethodInvoker(delegate {
                                    MessageText.Text = "Over allowed home distance";
                                }));
                            }
                            SDMC1SerialPort.DataReceived -= HomeSDMC1_DataReceived;
                            SDMC1SerialPort.DataReceived += SDMC1SerialPort_DataReceived;
                            HomeButton.Invoke(new MethodInvoker(delegate {
                                HomeButton.Enabled = true;
                            }));
                            ScanButton.Invoke(new MethodInvoker(delegate {
                                ScanButton.Enabled = true;
                            }));
                            SDMC1SerialPort.Write("O0\r");
                        }
                        SDMC1Message = "";
                    }
                }
            }
            catch (Exception error)
            {
                SDMC1SerialPort.DataReceived -= HomeSDMC1_DataReceived;
                SDMC1SerialPort.DataReceived += SDMC1SerialPort_DataReceived;
                MessageText.Invoke(new MethodInvoker(delegate {
                    MessageText.Text = error.Message + " home 2 " + StartPosition + ", " + EndPosition;
                }));
                SDMC1Message = "";
            }
        }
Exemplo n.º 9
0
 private void SDMC1SendButton_Click(object sender, EventArgs e)
 {
     SDMC1SerialPort.Write(SDMC1SendText.Text + '\r');
     SDMC1SendText.Text = "";
 }