2012-06-13 72 views
2

我有一個簡單的Arduino程序,從串行輸入中分析一個int並打開一個solenoid。它可以與Arduino串行監視器完美配合(舊款Arduino,帶有ATmega168的Diecimila)。命令提示符重定向到Arduino不工作

我的目標是將這些數據從命令提示符發送到Arduino。我已經確信命令提示符COM設置是否正確運行:

mode com7:9600,n,8,1 

然而,當我試圖把它整它來解析,什麼也沒發生,例如:

ECHO 2 > COM7 

我也嘗試了ECHO'2'> COM7,ECHO「2」> COM7,(ECHO 2)> COM7以及我能想到的所有其他變體。

編輯只是要注意,我已經與Arduino的串行監視器,PuTTYHyperTerminal嘗試這個。所有這些程序都和Arduino很好地溝通,並且螺線管按照預期打開。我也嘗試了Serial.parseInt()而不是Serial.read()的下面的代碼,並且帶和不帶單引號圍繞案例編號。在所有情況下,它再次與上述三個程序一起工作,但與命令提示符不同。

編輯這裏是我一起工作的草圖:

int incoming; 

void setup() 
{ 
    Serial.begin(9600); 
    pinMode(2, OUTPUT); 
    pinMode(4, OUTPUT); 
    pinMode(6, OUTPUT); 
    pinMode(8, OUTPUT); 
} 

void loop() 
{ 
    if (Serial.available > 0) 
    { 
     incoming = Serial.read(); 

     switch(incoming) 
     { 
      case '1': 
       digitalWrite(2, HIGH); 
       delay(2000); 
       degitalWrite(2, LOW); 
       break; 
      case '2': 
       digitalWrite(4, HIGH); 
       delay(2000); 
       degitalWrite(4, LOW); 
       break; 
      case '3': 
       digitalWrite(6, HIGH); 
       delay(2000); 
       degitalWrite(6, LOW); 
       break; 
      case '4': 
       digitalWrite(8, HIGH); 
       delay(2000); 
       degitalWrite(8, LOW); 
       break; 
     } 
    } 
} 

回答

0

嗯,我不知道該怎麼做,上面的答案沒有解決,我手邊還有一個備用的Arduino UNO。我將UNO插入繼電器板,上傳了相同的代碼,現在一切工作都從命令提示符和上述三個程序中完成。

有人會有任何想法,爲什麼這會有相同的代碼UNO相比Diecimila不同的行爲?

我的印象是代碼應該獨立於Arduino的類型。無論如何,我將從這裏開始使用UNO,因爲我需要通過命令提示符與它進行通信。

0

兩件事情浮現在腦海中:

  • 你嘗試echo 2 > com7:(注意冒號)?

  • Windows中的行分隔符是兩個字節的序列CR/LF。也許串行監視器使用另一個,你的Arduino草圖不​​理解CR/LF。

如果這沒有幫助,您應該發佈草圖或SSCCE示例。

+0

非常感謝你的回覆! – user1452763

+0

我還沒有嘗試過冒號,只要我回家,我會試試。我很確定這不是導致此問題的CR/LF序列,因爲當我用PuTTY打開連接並且一切仍然正常時,我嘗試了CR/LF響應。到目前爲止,該連接已經與Arduino串行監視器,PuTTY和超級終端協同工作。 – user1452763

+0

com7之後的冒號未改變結果。我已經在Arduino串行監視器和PuTTY中嘗試了所有不同的行結束類型,並且它在所有情況下都能正常工作。還有什麼想法? – user1452763

相關問題