2013-05-20 3 views
1

У меня есть этот файл bash:Bash вторя на экране

#!/bin/bash 
stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -   iext en -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 

screen /dev/ttyACM0 9600 
echo "1" 

Это в основном Arduino подключен к компьютеру Ubuntu, и я не могу запустить код абсолютно все до секции echo "1".

я могу ...

  1. установить соединение
  2. видеть экран последовательного соединения
  3. типа в "1" и увидеть мою лампочку загореться, и когда я печатаю "0" свет лампы выключает.

Проблема, с которой я встречаюсь сейчас, заключается в том, что я хотел бы контролировать включение/выключение кода (без меня, вручную набрав его), и это кажется почти невозможным. Логика правильная, но когда я запускаю screen, код просто останавливается и запускает экран, ожидая, что у меня будет некоторый ввод. Все, пока я не закрою Arduino, наконец выйдет echo. Есть ли способ решить это?

+0

Попробуйте 'screen -d -m/dev/ttyACM0 9600'' screen -X echo "1" 'OR ' screen/dev/ttyACM0 9600 & '' screen -X echo "1" ' –

+0

Для первого кода , он побежал, но никаких результатов. Для второго кода он работал, но пришел с ошибкой, например: «Arduino должен быть подключен к терминалу» –

ответ

4

У меня была проблема, как это раньше, это был мой обходной путь:

мне больше повезло с у.е., то с Запущенная

Начало экрана сессии:

screen -S arduino -dmS cu -l /dev/ttyACM0 -s 9600 

В настоящее время существует сеанс сеанса, созданный под названием arduino

Вы можете отправлять команды по нему из сценария:

screen -S arduino -X stuff 1 

Это направит 1 к последовательному соединению так же, как ваш пример

Если вы хотите, чтобы управлять этим с другим пользователем убедитесь, что права позволят это и создать сеанс экрана с тем же пользователем, который будет отправка команд на сеанс экрана.

Если у вас есть еще вопросы, просто спросите меня.