Код
RDY
+CFUN: 1
+CPIN: READY
+CREG: 0
+CREG: 2
+CREG: 1,"xxxx","xxxx"
+CGREG: 0
+CGEV: NW DETACH
*PSNWID: "250","01", "004D00540053", 0, "004D00540053", 0
*PSUTTZ: 2011, 9, 2, 20, 12, 16, "+16", 1
DST: 1
*PSNWID: "250","01", "", 0, "004D00540053", 0
*PSUTTZ: 2011, 9, 2, 20, 12, 19, "+16", 1
DST: 1
+CGREG: 1,"xxxx","xxxx"
+CFUN: 1
+CPIN: READY
+CREG: 0
+CREG: 2
+CREG: 1,"xxxx","xxxx"
+CGREG: 0
+CGEV: NW DETACH
*PSNWID: "250","01", "004D00540053", 0, "004D00540053", 0
*PSUTTZ: 2011, 9, 2, 20, 12, 16, "+16", 1
DST: 1
*PSNWID: "250","01", "", 0, "004D00540053", 0
*PSUTTZ: 2011, 9, 2, 20, 12, 19, "+16", 1
DST: 1
+CGREG: 1,"xxxx","xxxx"
Можно, конечно, оперативно обнаруживать RDY и +CFUN и принимать меры. Но не во всех состояниях модема и программы микроконтроллера эти сообщения могут быть приняты (в процессе передачи данных, например, однозначно невозможно). Сигнал DSR отсутствует... Вообще, понятно, AT+CMUX решает эту проблему однозначно и навсегда. Но этого нет.
Хотелось бы периодически проверять некоторое свойство (состояние некоторой настройки) модема, которое бы однозначно менялось на отличное при таком вот перезапуске. Как это можно сделать? Ничего умней, кроме "ATS8=0", например, не придумал. Потом можно проверять "ATS8?" -- если выдаёт не ноль, значит нужна инициализация с начала. По-умолчанию там всяко не ноль. Но мало ли... Может кто что подскажет?
Записывать однозначным значением и делать AT&W вроде как плохо (износ ресурса флеши). Но с учётом автоперезаписи некоторых других параметров возникает законный вопрос -- это оно же, при любом перезапуске на первых AT-командах раз 10 перезаписывается. И так возможно 300 раз в сутки, например (если сброс, грубо, раз в 5 минут, в худшем случае). За год 100000, однако, получается -- типичная цифра ресурса. Нужна ли эта автоперезапись... SIMCOM может и не так хорош. Факты отказа SIM300 ездивших ~месяц без SIM-карты есть. Там модем раз в ~5 минут перезапускался как раз.
По фактам перезапусков. Вот протокол работы прибора:
5.56: modem: sending AT
6.06: modem: sending AT
6.40: modem: answer 'EF BF BD EF BF BD EF BF BD EF BF BD'
6.40: modem: answer 'RDY'
6.53: modem: answer '+CFUN: 1'
6.56: modem: sending AT
6.56: modem: answer '+CPIN: READY'
6.68: modem: answer 'OK'
6.68: modem: command 'ATQ0V1E0&D1&C1S0=0;+CRSL=1;+CMEE=1;+CIURC=0;+CSCLK=2;+IPR=9600;+CFUN=0'
6.93: modem: answer 'ATQ0V1E0&D1&C1S0=0;+CRSL=1;+CMEE=1;+CIURC=0;+CSCLK=2;+IPR=9600;+CFUN=0'
6.93: modem: answer 'OK'
6.96: modem: command 'AT+CCLK?'
6.96: modem: answer '+CPIN: NOT READY'
7.09: modem: answer '+CCLK: "00/01/01,00:26:04+00"'
7.12: modem: answer 'OK'g
7.12: modem: command 'ATI+CGMM;+CGMR;+CGSN;+CSDT=0;+CFUN=1;+CREG=2;+COPS=3,2'
7.31: modem: answer 'SIM900 R11.0'
7.31: modem: answer 'SIMCOM_SIM900B'
7.34: modem: answer 'Revision:1137B08SIM900B32_ST'
7.37: modem: answer '3534510xxxxxxxx'
7.37: modem: answer 'OK'
7.37: modem: command 'AT+CPIN?'
7.56: modem: answer '+CPIN: READY'
7.56: modem: answer 'OK'
7.56: modem: command 'AT+CSCS="UCS2";+CNMI=2,1,0,0,0;+CMOD=0;+CTZU=0'
7.75: modem: answer 'OK'
7.75: modem: command 'AT+CLIP=1;+COLP=0;+CCWA=0'
7.87: modem: answer 'OK'
7.93: modem: answer '+CREG: 0'
8.18: modem: answer '+CREG: 2'
12.93: modem: command 'AT+CMGF=0'
13.06: modem: answer 'OK'
13.06: modem: command 'AT+CMGL=0'
13.18: modem: answer 'OK'
13.18: modem: command 'AT+CMGL=1'
13.31: modem: answer 'OK'
17.09: modem: answer '+CREG: 1,"xxxx","xxxx"'
64.84: modem: answer 'RING'
64.87: modem: answer '+CLIP: "+79111234567",145,"",,"",0'
65.06: modem: command 'ATA'
65.50: modem: answer 'OK'
65.50: modem: command 'AT+CHFA=0'
66.25: modem: answer 'OK'
66.25: modem: command 'AT+CMIC=0,4'
66.37: modem: answer 'OK'
66.37: modem: command 'AT+CLVL=100'
66.50: modem: answer 'OK'
66.50: modem: command 'AT+ECHO=0,0,0,1'
66.65: modem: answer 'OK'
66.65: modem: command 'AT+SIDET=0,0'
70.46: modem: answer 'EF BF BD EF BF BD EF BF BD EF BF BD'
70.46: modem: unsol. msg: EF BF BD EF BF BD EF BF BD EF BF BD
70.50: modem: answer 'RDY'
70.50: modem: unsol. msg: RDY
70.62: modem: answer '+CFUN: 1'
70.62: modem: unsol. msg: +CFUN: 1
70.65: modem: answer '+CPIN: READY'
71.18: modem: answer '+CREG: 0'
71.43: modem: answer '+CREG: 2'
73.59: modem: answer '+CREG: 1,"xxxx","xxxx"
Повторялось не однократно. Но может возникать, а может и не возникать. Красным цветом выделено -- это он, видимо, для GSM-мультиплексора посылает, сброс состояния (не вникал...) При включении питания или сбросе одно и то же. В левой колонке секунды и сотые секунд.