2017-09-08 1 views
-1

Bonjour à tous, je suis assez nouveau sur C# et Arduino. Quand j'envoie du texte à mon Arduino, il ne le renvoie pas dans la zone de texte de l'application. Je peux l'envoyer à mon Arduino mais j'obtiens l'erreur quand le message que j'envoie doit être dans la zone de texte de l'application.Le port série C# n'affiche pas de sortie dans la zone de texte

Voici la partie que je reçois une erreur:

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    Output.Text = serialPort1.ReadExisting(); 
} 

Voici mon code:

public partial class ArduinoSerial : Form 
{ 
    public ArduinoSerial() 
    { 
     InitializeComponent(); 
     string[] serialPorts = System.IO.Ports.SerialPort.GetPortNames(); 
     cboPorts.Items.AddRange(serialPorts); 
     cboBaud.Items.Add(2400); 
     cboBaud.Items.Add(4800); 
     cboBaud.Items.Add(9600); 
     cboBaud.Items.Add(14400); 
     cboBaud.Items.Add(19200); 
     cboBaud.Items.Add(28800); 
     cboBaud.Items.Add(38400); 
     cboBaud.Items.Add(57600); 
     cboBaud.Items.Add(115200); 
     cboPorts.SelectedIndex = 0; 
     cboBaud.SelectedIndex = 2; 
    } 

    private void cboPorts_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string[] serialPorts = System.IO.Ports.SerialPort.GetPortNames(); 
     cboPorts.Items.AddRange(serialPorts); 
    } 

    private void cboBaud_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     cboBaud.Items.Add(2400); 
     cboBaud.Items.Add(4800); 
     cboBaud.Items.Add(9600); 
     cboBaud.Items.Add(14400); 
     cboBaud.Items.Add(19200); 
     cboBaud.Items.Add(28800); 
     cboBaud.Items.Add(38400); 
     cboBaud.Items.Add(57600); 
     cboBaud.Items.Add(115200); 
    } 

    private void btnStart_Click(object sender, EventArgs e) 
    { 
     serialPort1.PortName = cboPorts.SelectedItem.ToString(); 
     serialPort1.BaudRate = Convert.ToInt32(cboBaud.SelectedItem.ToString()); 

     if (!serialPort1.IsOpen) 
     { 
      btnStart.Enabled = false; 
      btnStop.Enabled = true; 
      serialPort1.Open(); 
     } 
    } 

    private void btnStop_Click(object sender, EventArgs e) 
    { 
     if (serialPort1.IsOpen) 
     { 
      btnStart.Enabled = true; 
      btnStop.Enabled = false; 
      serialPort1.Close(); 
     } 
    } 

    private void btnSend_Click(object sender, EventArgs e) 
    { 
     if (!serialPort1.IsOpen) return; 

     serialPort1.Write(txtInput.Text + "\n"); 
    } 

    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) 
    { 
     Output.Text = serialPort1.ReadExisting(); 
    } 
} 

Mon fichier ino

/* 
Name:  LOOP_C.ino 
Created: 9/8/2017 10:51:31 AM 
Author: Jari 
*/ 

// the setup function runs once when you press reset or power the board 
void setup() { 
    Serial.begin(9600); 
} 

// the loop function runs over and over again until power down or reset 
void loop() { 
    while (Serial.available()) { 
     Serial.write(Serial.read()); 
    } 
} 

Je suis déjà en train de plus de 2 heures, je ne trouve pas la réponse nulle part.

Répondre

0

Essayez si vous rencontrez un CrossThreadException:

  private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
      { 
       SetText(serialPort1.ReadExisting()); 
      } 

      private void SetText(string text) 
      { 
       if (Output.InvokeRequired) 
       { 
        SetTextCallback d = new SetTextCallback(SetText); 
        this.Invoke(d, new object[] { text }); 
       } 
       else 
       { 
        Output.Text = text; 
       } 
      } 

Je ne pas avoir un compilateur ici alors peut-être vous avez besoin de réparer quelque chose. Si oui - Désolé