Отправка данных через Shell и через Монитор порта. В чем разница?
- Войдите на сайт для отправки комментариев
Может кто ни будь сталкивался с похожей проблемой.
К ардуино прицеплен мотор через небольшую схемку реализующую реверс.
Набросал небольшой скетч, реализующий отправку Serial данных. Ардуино должно при получении w - включать дижение вперед, s - назад.
При открытом стандартном мониторе порта - все ок, данные можно отправить - мотор работает в стоответствии с логикой скетча.
Если я пытаюсь отправить данные через Shell консоль, используя
echo -en 'w' > /dev/ttyACM0
Ардуина мигает светодиодом RX и L, но ничего не делает.
Когда открываю монитор и пытаюсь отправить через Shell данные - мотор не работает, но пишет, что данные получил.
Отправляю данные через Монитор порта - мотор работает.
У меня вопрос: чем отличается отправка данных через Монитор порта и через Shell?
Может кто ни будь сталкивался с похожей проблемой.
К ардуино прицеплен мотор через небольшую схемку реализующую реверс.
Набросал небольшой скетч, реализующий отправку Serial данных. Ардуино должно при получении w - включать дижение вперед, s - назад.
При открытом стандартном мониторе порта - все ок, данные можно отправить - мотор работает в стоответствии с логикой скетча.
Если я пытаюсь отправить данные через Shell консоль, используя
Ардуина мигает светодиодом RX и L, но ничего не делает.
Когда открываю монитор и пытаюсь отправить через Shell данные - мотор не работает, но пишет, что данные получил.
Отправляю данные через Монитор порта - мотор работает.
У меня вопрос: чем отличается отправка данных через Монитор порта и через Shell?
В итоге: работает только с открытым Монитором порта. В чем может быть проблема? Почему Монитор порта так влияет на конечный результат обработки данных ардуиной?
на какой скорости работает echo ?
и покажите ваш скетч.
Если я пытаюсь отправить данные через Shell консоль, используя
У меня вопрос: чем отличается отправка данных через Монитор порта и через Shell?
Отличается тем, что монитор устанавливает скорость ком порта, ехо использует системные настройки.
Когда запускаешь монитор, он конфигурит порт, и ехо начинает работать на уже настроеном порту.
Укажи настройки порта, по умолчанию там не 9600 стоит
Вывод на экран текущих параметров: stty -F /dev/ttyS0 -a setserial -g /dev/ttyS0 Включение Hardware flow control (RTS/CTS): stty -F /dev/ttyS0 crtscts Установка скорости порта: stty -F /dev/ttyS0 9600Исправляем (ели нужно) в файле ``/etc/init.d/serial'' SETSERIAL="/sbin/setserial" на SETSERIAL="/bin/setserial" Конфигурация должна находиться в файле ``/etc/rc.d/config/serial'' Пример конфигурации: root # cat /etc/rc.d/config/serial #!/etc/init.d/serial # setup serial ports # setport(device, irq, port, args) setports() { setport ttyS2 19 0xa400 "baud_base 9600" setport ttyS3 19 0xa000 "baud_base 115200" setport ttyS4 18 0xbc00 "baud_base 115200" setport ttyS5 19 0xb800 "baud_base 115200" }int motorPin1 = 11; int motorPin2 = 12; int incomingByte = 0; int motorState = 0; void setup() { Serial.begin(9600); pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); } void motorForward() { digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); } void motorBack() { digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); } void motorStop() { digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); } void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); Serial.print("I received: "); Serial.println(incomingByte, DEC); if (incomingByte == 119) { motorState = 1; } else if (incomingByte == 115) { motorState = 2; } else { motorState = 0; } Serial.flush(); } switch (motorState) { case 0: motorStop(); Serial.println("Stop"); break; case 1: motorForward(); Serial.println("Forward"); break; case 2: motorBack(); Serial.println("Back"); break; } }Выставление порта на скорость 9600 ничего не дало. После закрытия терминала управление из консоли тоже перестает работать.
Спасибо за советы, но пока не получается работать с ардуиной без открытого Монитора порта через Shell. Есть еще идеи?
как называется ваша плата ардуино?
попробуйте подключиться к дуине программой putty.
>> Когда открываю монитор и пытаюсь отправить через Shell данные - мотор не работает, но пишет, что данные получил.
что конкретно тут получает ваша дуина?
Кроме скорости есть еще установки по кол-ву битов, стоп битов, четность, управление потоком, это тоже нужно проверить.