Отправка и прием SMS сообщений в PDU-mode

advertisement
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
Download