К Raspberry подключен модем USB LTE, и мне нужно прочитать ответы, отправленные по последовательной линии, сгенерированные запросами, отправленными с помощью команды "echo". Код:

cat /dev/ttyUSB0 > ttyUSB0_logs &
echo "AT+csq" > /dev/ttyUSB0
echo "AT+cgreg=2" > /dev/ttyUSB0
echo "AT+cgreg?" > /dev/ttyUSB0

Проблема в том, что хотя команда "cat" должна выполняться в фоновом режиме, а весь вывод направляется в файл, сценарий все еще останавливается на этом этапе. Если я использую первую команду вне скрипта, она работает как я ожидаю - она сохраняет весь вывод в файл ttyUSB0_logs на заднем плане, и я могу использовать полученные данные для других операций. Вопрос в том, как мне интегрировать первую команду в скрипт, чтобы она работала таким образом? Большое спасибо.

2 ответа2

0

помните: в оболочке: если вы выполняете все команды одну за другой, первая команда 'cat ....' все еще выполняется даже после того, как вы выполнили последнюю команду. в сценарии оболочки: команда 'cat ...' будет уничтожена вскоре после выполнения последней команды, и поэтому она не сможет больше читать и писать. Для первого шага: попробуйте поместить "сон 1" между командными строками, а более длинный сон - "сон 10" после последней команды.

0

В модемах часть AT командной строки предназначалась для определения скорости передачи, четности и т.д. Устройство синхронизировало последовательные данные для измерения ширины в битах

Для этого ему понадобился тайм-аут простоя, чтобы установить начало "А"

Ваш сценарий может взорвать их слишком быстро

Попробуйте поставить сон перед каждой командной строкой

Это был регистр S, который содержал время ожидания. Это было какое-то время, поэтому я забыл, какой. 2 секунды, я думаю, было типичным

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .