2017-12-11 11 views
0

私はC#アプリケーションで制御したい4つのLEDに接続されたArduino Unoを持っています。 LEDが動作している、配線が正しく行われますが、なぜ私のコードが動作していないのか分かりません。今のところ私は4つのLEDを別々にON/OFFしたい。Arduino comポート#

私はarduino ideのシリアルモニタを開こうとしましたが、何が起こっているのか監視していませんでしたが、他のインスタンスが既にそのCOMポートでビジー状態だったので、 C#アプリ。

(私はいくつかの括弧を削除した)

のC#:

namespace ArduinoLed 
{ 
public partial class MainWindow : Window 
{ 
    ctrl controller = new ctrl(); 

    public MainWindow() 
    { 
     InitializeComponent(); 
     controller.Serialopen(); 
    } 

    public void Clicked(object sender, RoutedEventArgs e) 
    { 
     Button clickedButton = (Button)sender; 
     controller.Click(clickedButton); 
    } 
} 

class ctrl 
{ 
SerialPort port = new SerialPort("COM3", 9600); 

public void Serialopen() 
    { 
     try 
     { 
      port.Open(); 
     } 
     catch (Exception) 
     { 
      MessageBox.Show("Fail to open port (COM3)"); 
     } 
    } 

    public void Click(Button btn) 
    { 
     string name = btn.Name; 

     if (btn.Content == "OFF") 
     { 
      btn.Content = "ON"; 
      port.WriteLine(btn.Name + "/ON"); 
     } 
     else 
     { 
      btn.Content = "OFF"; 
      port.WriteLine(btn.Name + "/OFF"); 
     } 
    } 
} 

ARDUINO:

void setup() { 
Serial.begin(9600); 
pinMode(3, OUTPUT); 
pinMode(5, OUTPUT); 
pinMode(6, OUTPUT); 
pinMode(9, OUTPUT); 

} 

void loop() { 
    String message; 
    if (Serial.available() > 0){ 
    message = Serial.readString(); 
    Serial.println(message); 

if (message == "btnOne/ON"){ 
    digitalWrite(3, HIGH); 
} 
if (message == "btnOne/OFF"){ 
    digitalWrite(3, LOW); 
} 
if (message == "btnTwo/ON"){ 
    digitalWrite(5, HIGH); 
} 
if (message == "btnTwo/OFF"){ 
    digitalWrite(5, LOW); 
} 
if (message == "btnThree/ON"){ 
    digitalWrite(6, HIGH); 
} 
if (message == "btnThree/OFF"){ 
    digitalWrite(6, LOW); 
} 
if (message == "btnFour/ON"){ 
    digitalWrite(9, HIGH); 
} 
if (message == "btnFour/OFF"){ 
    digitalWrite(9, LOW); 
} 
+0

私は問題が簡単だと思います、これはあなたが得るものはあなたが比較するものではありません。たぶん追加の終わりの記号がありますか? – CrazyBaran

+0

これは私の問題だと思いますが、シリアルモニタを開くことができなければどうすれば比較できますか?これを行う別の方法はありますか? – lucasdm303

+0

もし私がmessagebox.show(btn.name + "/ ON")を追加すれば、何を送信すべきかを知ることができ、それはarduinoが受け取ったメッセージを受信したものと等価です – lucasdm303

答えて

0

コールmessage.trim();あなたは値を比較する前に。これにより、すべての読み取り不可能な文字が削除されます。

関連する問題