2017-09-08 16 views
-1

こんにちは私はC#とArduinoにはかなり新しいです。私がArduinoにテキストを送ると、アプリケーションのテキストボックスに戻されません。私はそれを私のArduinoに送ることができますが、私が送るメッセージがアプリケーションのテキストボックスになければエラーが出ます。ここでC#シリアルポートはテキストボックスに出力を表示しません

は、私はエラーを取得しています一部です:ここで

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

は私のコードです:

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(); 
    } 
} 

マイ井野ファイル

/* 
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()); 
    } 
} 

私はすでに2オーバーのためにしようとしています時間は、私はどこでも答えを見つけることができません。

答えて

0

あなたは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; 
       } 
      } 

を私は多分あなたは何かを修正する必要があり、ここでコンパイラを持っているドント。もしそうなら - 申し訳ありません

関連する問題