1 Как принимать и передавать SMS-сообщения по мобильному телефону. 1. Подготовка телефона к приему и передаче сообщений в PDU mode. AT+CMGF=0 OK AT+CSMS=0 +CSMS: 1, 1, 1 AT+CPMS=”ME” +CPMS: 0,15,0,15,0,12 2. Подготовка и отправка SMS сообщений в PDU mode. AT+CMGS=18 > 0011000C912143658789670000AA0441E19008(Ctrl+Z) +CMGS: 154 OK 00 – длина номера центра SMS. 11 00 – служебные «октеты». 0С – длина номера получателя (цифр). 91 – тип номера получателя. 21 43 65 87 89 67 – номер получателя (поменять четные и нечетные цифры) 00 00 AA – служебные «октеты». 04 – длина SMS сообщения – количество символов текста (не число «октетов»!!!). 41 E1 90 08 – закодированное текстовое сообщение (как кодировать см. ниже). Заканчивается передача строки байтом (не «октетом») с кодом 1Ah (при наборе с клавиатуры набрать Ctrl-Z). A B C D 41h 42h 43h 44h. 01000001 01000010 01000011 01000100 1000001 1000010 1000011 1000100 01000001 11100001 10010000 00001000 41 E1 90 08 h e l l o h e l l o 68 65 6C 6C 6F 68 65 6C 6C 6F 01101000 01100101 01101100 01101100 01101111 01101000 01100101 01101100 01101100 01101111 1101000 1100101 1101100 1101100 1101111 1101000 1100101 1101100 1101100 1101111 11101000 00110010 10011011 11111101 01000110 10010111 E8 32 9B FD 46 6543210 DCBA987 KJIHGFE 76543210 FEDCBA98 NMLKJIHG 97 11011001 11101100 001110111 D9 RQPONML 0000RQPO EC 37 2 3. Чтение и удаление SMS сообщений в PDU mode. 1 способ. Заставим телефон при приходе нового SMS сообщения выдавать сигнал. AT+CNMI? +CNMI: 3,0,0,0 AT+CNMI=? +CNMI: (3), (0,1,2),(0,1),(0) AT+CNMI=3,1,0,0 OK. Теперь при приходе нового сообщения телефон выдает строку вида: +CMTI:”ME”,i AT+CMGR=i +CMGR: s,,nn 07912143658789F7040C914365870921430000106021202052000441E19008 где s – статус сообщения (0 – принятое, но не прочитанное, 1 – принятое и прочитанное); nn – длина сообщения в байтах кроме первых байт номера центра SMS. AT+CMGD=i где i – «индекс» - порядковый номер сообщения в памяти телефона. 2 способ. AT+CPMS=”ME” +CPMS: N,MM,0,15,0,12 если N не равно 0 идем дальше. AT+CMGR=i ,где i – число, меняющееся от 1 доMM. +CMS ERROR: 500 +CMGR: s,,nn 07912143658789F7040C914365870921430000106021202052000441E19008 AT+CMGD=i 3 способ. Читаем сразу все сообщения. AT+CMGL=s где S – тип (статус) читаемых сообщений из памяти телефона. Статус может быть: 0 – принятые и ни разу не прочитанные сообщения; 1 – принятые и ранее прочитанные сообщения; 2 – запомненные, но не отправленные сообщения; 3 – запомненные и отправленные сообщения; 4 – все сообщения. Ответ: 3 Если ни одного сообщения выбранного типа нет - OK. Если есть: +CMGL: i,s,nn 07912143658789F7040C914365870921430000106021202052000441E19008 +CMGL: i,s,nn 07912143658789F7040C914365870921430000106021202052000441E19008 OK где i – индекс сообщения; s – статус сообщения (0, 1, 2 или 3) nn – длина сообщения (см расшифровку сообщений ниже). AT+CMGD… 4. Расшифровка SMS сообщений в PDU mode. +CMGR: s,,nn+ или CMGL: i,s,nn где i – индекс сообщения; s – тип сообщения (0, 1, 2 или 3) nn – длина сообщения (см расшифровку сообщений ниже). Вторая строка представляет из себя набор цифр и букв (для примера): 07912143658789F7040C914365870921430000106021202052000441E19008 07 – число «октетов», содержащих информацию о телефонном номере центра SMS. 91 – формат номера центра SMS, 91 означает, что номер представлен в международном формате (с кодом страны). 2143658789F7 – телефонный номер центра SMS (попарно переставить символы). 04 – служебный «октет». 0С – количество цифр в номере абонента, приславшего SMS (0C hex = 12 dec). 91 – формат номера абонента, приславшего SMS. 436587092143 - телефонный номер абонента, приславшего SMS (попарно переставить). 0000 – служебные «октеты». 10 60 21 20 20 52 00 – 7 «октетов», содержащие информацию о дате и времени отправки SMS сообщения (при необходимости можно расшифровать). 04 – число символов текстового сообщения (не число «октетов» ! ! !). 41 E1 90 08 – закодированное текстовое сообщение. 41 E1 90 08 01000001 11100001 10010000 00001000 1000001 1000010 1000011 1000100 01000001 01000010 01000011 01000100 41h 42h 43h 44h. A B C D E8 32 9B FD 46 97 11101000 00110010 10011011 11111101 01000110 10010111 D9 EC 37 11011001 11101100 001110111 1101000 1100101 1101100 1101100 1101111 1101000 1100101 1101100 1101100 1101111 01101000 01100101 01101100 01101100 01101111 01101000 01100101 01101100 01101100 01101111 68 h 65 e 6C l 76543210 FEDCBA98 6543210 DCBA987 6C l 6F o 68 h 65 e NMLKJIHG VUTSRQPO KJIHGFE RQPONML 6C l 6C l 6F o 4 оставшиеся последние 4 бита VUTS, которые должны быть нулевыми – отбрасываем. 06543210 0DCBA987 0KJIHGFE 0RQPONML