После большой работы у нас есть рабочий конфиг и CHAT-скрипт.
Я думаю, что первопричиной является отсутствие приема, вызванное некачественным проводом мухи.
AT+CSQ
Я верну прием и показатель уверенности (меньшее значение лучше для обоих). В оригинальном журнале это было 99,99. При использовании другой мушки возвращается следующее значение.
+CSQ: 15,99
Окончательный сценарий чата, который был использован:
TIMEOUT 5
ECHO ON
ABORT '\nBUSY\r'
ABORT '\nERROR\r'
ABORT '\nNO ANSWER\r'
ABORT '\nNO CARRIER\r'
ABORT '\nNO DIALTONE\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
'' 'ATZ'
'' \rAT
TIMEOUT 30
OK 'AT+CSQ'
OK 'AT#SIMDET=1'
OK 'AT+CGDCONT = 1,"IP","telstra.internet"'
OK 'AT+CGDCONT?'
\r \d\c
'OK' 'ATD*99#'
\r \d\c
\r \d\c
'CONNECT' ''
\r \d\c - это пауза в 1 секунду. Так как это происходит при загрузке и включении, немного медленнее - это нормально для данного приложения.
Возможно, это можно оптимизировать.
Скрипт Peers, который мы используем:
# initialization string.
connect "/usr/sbin/chat -v -f /etc/ppp/chat"
# Serial device to which the modem is connected.
/dev/ttyUSB2
# Speed of the serial line.
115200
# Assumes that your IP address is allocated dynamically by the ISP.
noipdefault
# Try to get the name server addresses from the ISP.
usepeerdns
#Use this connection as the default route.
defaultroute
replacedefaultroute
# Makes pppd "dial again" when the connection is lost.
persist
# Do not ask the remote to authenticate.
noauth
# For testing purposes
debug
nodetach
Он работает сейчас, поэтому должен быть пригоден для использования в будущем.
Оператор &
, как и ;
, является оператором терминатора списка. Они имеют одинаковый синтаксис и могут использоваться взаимозаменяемо (в зависимости от того, что вы хотите сделать). Это означает, что вам не нужны command1 &; command2
, все, что вам нужно, это command1 & command2
.
Таким образом, в вашем примере вы можете просто написать:
for i in {1..10}; do wait file$i & done
и каждая команда wait
будет запущена в фоновом режиме, а цикл немедленно перейдет к следующей.
Для совместимости используйте форму posix вместо раскрытия:
for i in $(seq 1 10); do (./wait file$i &); done
Ваш двоичный файл действительно называется , подождите
? Я не рекомендую это делать, потому что wait
- это встроенная оболочка.
Я считаю, что bash плохо разбирает однострочный цикл, запускающий фоновые процессы. Предлагаю вам изменить код на:
$ for i in {1..10}; do ./wait file$i & echo "Running 'wait' using PID=$!..."; done
Вы можете сгруппировать команды и поместить сгруппированные команды в фоновый режим. Например:
$ for i in {1..10}; do ((wait file$i)&); done