Если устройство работает в некоторых эмуляторах терминала, а не другие, то терминал, вероятно, неправильно настроен («Некорректны» означает «отличается от того, как настроено устройство на другой стороне соединения»; нет правильного или неправильного.)
Обычно проблема связана с боковыми скоростями, локальным эхо-сигналом или концами линии LF и CRLF. Вы можете настроить, как linux обрабатывает устройство tty с помощью stty
(или setserial
).
Пример:
Здесь я использую atinout
поговорить с портом Telit DE910 "AUX" через UART.
$ echo 'AT+CREG?' | atinout - /dev/ttyO1 -
AT+CREG?
+CREG: 1,1
OK
Пока все хорошо. Но этот модем поддерживает несколько физических интерфейсов для каждого логического интерфейса, а с моим устройством логический порт «AUX» также доступен через /dev/ttyUSB2
. В общем, мне нравится использовать /dev/ttyUSBn
, потому что at least some of the ridiculous number of options that can be set by stty
are fixed. Но в этом случае по умолчанию не достаточно хорошо для atinout
хотя мы выпускаем же ввод команды на тот же логический порт:
$ echo 'AT+CREG?' | atinout - /dev/ttyUSB2 -
AT+CREG?
+CREG: 1,1
OK
AT+CREG
ERROR
^C
Лишнего CRLFs являются поддавками в этом случае, и настройке терминала с stty raw
исправляет его. (В моем случае -icrnl
была единственной частью raw
на самом деле необходимо.)
$ stty -F /dev/ttyUSB2 raw
$ echo 'AT+CREG?' | atinout - /dev/ttyUSB2 -
AT+CREG?
+CREG: 1,1
OK
Проблема с использованием stty
это вы изменили устройство для всех остальных. Вы можете использовать stty для сохранения начальной конфигурации, чтобы вы могли восстановить ее, когда закончите.
$ OLDSETTINGS=$(stty -g -F /dev/ttyUSB2)
$ stty -F /dev/ttyUSB2 -igncr -icrnl -ixon -ixoff
$ stty -F /dev/ttyUSB2 "$OLDSETTINGS"
Наконец я рекомендую компилировать timeout
с atinout
чтобы избежать вешать, когда модем не реагирует так, как atinout
ожидает.
$ echo 'AT+CREG?' | timeout -t5 atinout - /dev/ttyUSB2 -
Пожалуйста, скопируйте & вставить вывод вместо размещения скриншотов –
это было просто ОШИБКА –
'EOF' действительно не команда. Почему вы думаете, что можете запустить его как один? –