public MainForm() { InitializeComponent(); cbAvailablePorts.Items.AddRange(SerialPort.GetPortNames()); cbAvailablePorts.SelectedIndex = 0; _status = ArduinoStatus.Disconnected; }
/// <summary> /// Constructeur de la Classe /// </summary> public MainFrame() { InitializeComponent(); status = ArduinoStatus.DISCONNECTED; Maj(); String[] items = SerialPort.GetPortNames(); this.PortsBox.Items.AddRange(items); this.PortsBox.SelectedItem = PortsBox.Items[0]; }
private void Form1_Load(object sender, EventArgs e) { ArduinoPort.PortName = "COM4"; ArduinoPort.Open(); Role1_Control_Button.ForeColor = Color.White; Role1_Control_Button.BackColor = Color.Red; button8.ForeColor = Color.White; button8.BackColor = Color.Red; ArduinoStatus.AppendText("Merhaba"); }
private static void communicationTimedOut(Object state) { communicatorTask.Dispose(); communicationTimer.Dispose(); _status = ArduinoStatus.Idle; #region debug debugger.WriteLine(Debugger.DebugLevel.DebugLogic, "Arduino: Communicate(\"{0}\") ==> Timedout (after {1} millis)", _command, _timeoutMillis); #endregion throw new ArduinoCommunicationException(string.Format("Timedout after {0} millis.", _timeoutMillis)); }
public MainForm() { InitializeComponent(); cbAvailablePorts.Items.AddRange(SerialPort.GetPortNames()); cbAvailablePorts.SelectedIndex = 0; _status = ArduinoStatus.Disconnected; _image = new Bitmap(pbGrid.Size.Width, pbGrid.Size.Height); pbGrid.Image = _image; _pixels = new bool[_count, _count]; SetupFont(); ShowGrid(); }
private void btDisconnect_Click(object sender, EventArgs e) { try { _arduinoPort.Close(); _status = ArduinoStatus.Disconnected; UpdateFormByStatus(); } catch (Exception ex) { MessageBox.Show(ex.Message); lbStatus.Text = "Status: Error"; } }
/// <summary> /// Fonction appellée lors d'un clic sur le bouton "Déconnecter" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btDisconnect_Click(object sender, EventArgs e) { try { currentPort.Close(); status = ArduinoStatus.DISCONNECTED; Maj(); } catch (Exception ex) { MessageBox.Show(ex.Message); append(prefix[1], ex.Message); lblStatus.Text = "Status: Erreur"; } }
private void btConnect_Click(object sender, EventArgs e) { _status = ArduinoStatus.Connecting; UpdateFormByStatus(); _arduinoPort = new SerialPort(cbAvailablePorts.SelectedItem.ToString()); try { _arduinoPort.Open(); _status = ArduinoStatus.Connected; UpdateFormByStatus(); } catch (Exception ex) { MessageBox.Show(ex.Message); lbStatus.Text = "Status: Error"; } }
private void toggleConnectBtn_Click(object sender, EventArgs e) { switch (StatusEnum) { case ArduinoStatus.Connected: try { setMotorSpeed(0); _arduinoPort.Close(); StatusLabel.Text = "Disconnected"; toggleConnectBtn.Text = "Connect"; StatusEnum = ArduinoStatus.Disconnected; } catch (Exception ex) { MessageBox.Show(ex.Message); StatusLabel.Text = "Error"; } break; case ArduinoStatus.Connecting: break; case ArduinoStatus.Disconnected: StatusEnum = ArduinoStatus.Connecting; _arduinoPort = new SerialPort(cbPorts.SelectedItem.ToString()); _arduinoPort.BaudRate = 9600; try { _arduinoPort.Open(); setMotorSpeed(SpeedBar.Value); StatusEnum = ArduinoStatus.Connected; StatusLabel.Text = "Connected"; toggleConnectBtn.Text = "Disconnect"; } catch (Exception ex) { MessageBox.Show(ex.Message); StatusLabel.Text = "Error"; } break; } }
/// <summary> /// Fonction appellée lors d'un clic sur le bouton "Connecter" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btConnect_Click(object sender, EventArgs e) { status = ArduinoStatus.CONNECTING; Maj(); currentPort = new SerialPort(PortsBox.SelectedItem.ToString()); try { if (serial.connect(currentPort)) { status = ArduinoStatus.CONNECTED; Maj(); currentPort.DataReceived += new SerialDataReceivedEventHandler(onSerialDataReceived); } } catch (NullReferenceException nrex) { MessageBox.Show(nrex.Message); append(prefix[1], nrex.Message); lblStatus.Text = "Status: Erreur"; } }
/// <summary> /// If you are connected to the Arduino this will close the connection. You should /// do this before exiting the program but it's not a big deal if you don't. /// </summary> public void CloseConnection() { if (cThread.IsAlive) cThread.Abort(); if (sp.IsOpen) sp.Close(); Status = ArduinoStatus.NotConnected; }
/// <summary> /// Constructor for the status args. /// </summary> /// <param name="Status"></param> public StatusArgs(ArduinoStatus Status) { _Status = Status; }
private void SendCommand(string command, bool waitForReply = true, ArduinoStatus interimStatus = ArduinoStatus.Communicating, int timeoutMillis = 0) { if (_serialPort == null) { _error = "_serialPort is null"; _status = ArduinoStatus.BadPort; return; } else if (!_serialPort.IsOpen) { _error = string.Format("port \"{0}\" not open", _serialPortName); _status = ArduinoStatus.PortNotOpen; return; } char[] crnls = { '\r', '\n' }; if (timeoutMillis != 0) { _timeoutMillis = timeoutMillis; communicationTimer = new Timer(communicationTimedOut); communicationTimer.Change(_timeoutMillis, Timeout.Infinite); } else { _timeoutMillis = 0; } _command = command; _status = interimStatus; _error = null; #region debug debugger.WriteLine(Debugger.DebugLevel.DebugLogic, string.Format("arduino status: {0}", _status)); #endregion try { communicatorTask = Task.Run(() => { string packet = mkPacket(command); string reply = null; #region debug debugger.WriteLine(Debugger.DebugLevel.DebugLogic, "Arduino: Communicate: Sending \"{0}\" ...", _command); #endregion lock (_serialLock) { _serialPort.Write(packet); if (waitForReply) { Thread.Sleep(1000); reply = getPacket().TrimEnd(crnls); #region debug debugger.WriteLine(Debugger.DebugLevel.DebugLogic, "Arduino: Communicate(\"{0}\") ==> \"{1}\"", _command, reply); #endregion } } CommunicationCompleteEventArgs e = new CommunicationCompleteEventArgs(); e.reply = reply; _status = ArduinoStatus.Idle; #region debug debugger.WriteLine(Debugger.DebugLevel.DebugLogic, string.Format("arduino status: {0}", _status)); #endregion RaiseCommunicationComplete(e); }); } catch (Exception ex) { communicatorTask.Dispose(); _status = ArduinoStatus.Idle; #region debug debugger.WriteLine(Debugger.DebugLevel.DebugLogic, string.Format("arduino status: {0}, communication exception: {1}", _status, ex.Message)); #endregion } }
private void ThreadConnect() { leftMotorValue = rightMotorValue = realLeftMotorValue = realRightMotorValue = 0; Status = ArduinoStatus.Connecting; if (sp.IsOpen) sp.Close(); string[] ports = SerialPort.GetPortNames(); if (ports.Length > 0) { foreach (string comPort in ports) { Console.Write("Connecting to : " + comPort + "... "); sp.PortName = comPort; sp.Open(); if (sp.IsOpen) { gotHandShakeBack = false; Console.WriteLine("Connected"); Console.Write("Sending handshake... "); SendData(ArduinoCommands.Handshake, 0); Console.WriteLine("Sent"); Console.Write("Waiting for reply... "); DateTime sendTime = DateTime.Now; while ((DateTime.Now - sendTime).Seconds < 1 && !gotHandShakeBack) ; if (gotHandShakeBack) { Console.WriteLine("Got Reply"); Status = ArduinoStatus.Connected; smoothMotorThread = new Thread(ThreadSmoothMotors); smoothMotorThread.Start(); SendGForceAndTemp(true); return; } else { Console.WriteLine("No Reply"); sp.Close(); } } } Console.WriteLine("Can't find arduino, check that the arduino is plugged in."); Status = ArduinoStatus.NotConnected; if (sp.IsOpen) sp.Close(); } else { Console.WriteLine("No COM-Ports found, check that the arduino is plugged in."); Status = ArduinoStatus.NotConnected; if (sp.IsOpen) sp.Close(); } }