2015-04-24 1 views
3

Я бы хотел отправить команду AT моему модему с помощью сценария оболочки и проанализировать результат, чтобы проверить, возвращается ли OK.Отправка команды AT-модема и результат анализа

at=`echo -ne "AT+CFUN1=1\r\n" > /dev/ttyUSB0 | cat /dev/ttyUSB0` 

Каков наилучший способ проанализировать переменную at1 и извлечь «OK» или «ERROR» в противном случае?

+3

Вы не можете отправить команду AT из обычной командной строки на модем. Вам нужно использовать что-то вроде 'socat' или' minicom' для установления последовательного соединения с модемом. Смотрите: [** Как отправить AT-команды на модем в Linux? **) (http://unix.stackexchange.com/questions/97242/how-to-send-at-commands-to-a-modem- in-linux) –

+0

Вы также можете использовать [kermit] (http://www.kermitproject.org/). –

+0

Я использую minicom для установки последовательного подключения к плате. Как только модем начал, я использую микрокомпьютер или socat, чтобы поговорить с ним. Однако, можно отправить AT-команды через этот интерфейс, используя простое эхо, не так ли? – ogs

ответ

1

Можно отправить команды AT на модем и записать его из командной строки, как вы пытаетесь сделать, однако не, просто используя простой скрипт командной оболочки bash. Именно поэтому я написал программу atinout специально для поддержки таких сценариев, как вы спрашиваете.

испытаний, как следующее:

MODEM_DEVICE=/dev/ttyUSB0 

MODEM_OUTPUT=`echo AT | atinout - $MODEM_DEVICE -` 
case $MODEM_OUTPUT 
in 
     *OK*) 
       echo "Hurray, modem is up and running :)" 
       ;; 
     *) 
       echo "Oh no! Something is not working :(" 
       ;; 
esac 

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

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