2012-06-13 3 views
2

У меня есть простая программа Arduino, которая анализирует int из последовательного ввода и открывает solenoid. Он отлично работает с Arduino Serial Monitor (более старый Arduino, Diecimila с ATmega168).Командная строка перенаправление на Arduino не работает

Цель, которую я имею, - отправить эти данные в Arduino из командной строки. Я уже убедился, что командная строка настройки COM правильно выполнив команду:

mode com7:9600,n,8,1 

Однако, когда я пытаюсь отправить его в целое число для того, чтобы разобрать, ничего не происходит, например:

ECHO 2 > COM7 

Я также попробовал ECHO '2'> COM7, ECHO "2"> COM7, (ECHO 2)> COM7 и все остальные варианты, о которых я мог думать.

EDIT Просто к сведению, я попытался это с Serial Monitor Arduino, PuTTY и HyperTerminal. Все эти программы прекрасно общаются с Arduino, а соленоиды открываются, как ожидалось. Я также попробовал приведенный ниже код с Serial.parseInt() вместо Serial.read() и с и без одинарных кавычек вокруг номеров дел. Еще раз, во всех случаях он работал с тремя вышеуказанными программами, но не с командной строкой.

EDIT Вот эскиз я работаю с:

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 к моей релейной плате, загрузил идентичный код, и теперь все работает из командной строки AND из трех вышеупомянутых программ.

Может кто-нибудь понять, почему это будет по-другому вести себя с тем же кодом в UNO по сравнению с Diecimila?

У меня создалось впечатление, что код должен вести себя одинаково независимо от типа Arduino. Несмотря на это, я буду использовать UNO здесь, потому что мне нужно связаться с ним в командной строке.

0

Две вещи приходят на ум:

  • Пробовали ли вы echo 2 > com7: (обратите внимание на двоеточие)?

  • Разделитель строк в Windows представляет собой двухбайтную последовательность CR/LF. Возможно, последовательный монитор использует другой, и ваш эскиз Arduino не понимает CR/LF.

Если это не поможет вам опубликовать эскиз или пример SSCCE.

+0

Большое вам спасибо за ответ! – user1452763

+0

Я не пробовал двоеточие, я попробую, как только вернусь домой. Я уверен, что это не проблема CR/LF, которая вызывает эту проблему, потому что я попробовал CR/LF-ответ, когда я открыл соединение с PuTTY, и все еще работало. До сих пор связь работала с монитором Arduino Serial, PuTTY и HyperTerminal. – user1452763

+0

Двоеточие после com7 не изменило результаты. Я пробовал все различные типы окончания строк как в Arduino Serial Monitor, так и в PuTTY, и он работал во всех случаях. Какие-нибудь дальнейшие идеи? – user1452763

Смежные вопросы