Автор Тема: Отправляем и получаем SMS с помощью 3G/GSM модема  (Прочитано 17008 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« : 19, Июль 2012, Четверг, 22:23:02 pm »
Задача управления отправкой, приёмом и обработкой SMS в компьютере довольно таки часто возникает на практике.

Для непрограммиста она кажется неподъёмной, а для программистов существует немеряно исходников для решения этих задач (Delphi, С++ и т.д.). 

Целью этой заметки является показ возможностей Matlab для решения данной задачи. Matlab – язык очень высокого уровня с просто таки огромной библиотекой функций, позволяющей за небольшое время собирать весьма приличніе макеты и затем моделировать, а также проверять различные гипотезы.

Когда мне впервые попался в руки Matlab, я смог за неделю повторить результаты трехгодичных исследований, в которых в качестве языка программирования использовался Pascal. Это было давно, в 90-е годы. Конечно, у высокоуровневых языков есть свои недостатки, но мы это оставим для отдельного разговора.

Итак, для работы нам нужен 3G/GSM модема, у меня это Huawei E1550. К нему в интернете полно драйверов. Я себе выкачал под Windows XP. Управление модемом осуществляется с помощью АТ – команд. Их описания в интернете тоже немеряно. Для наших задач их и вовсе нужно весьма ограниченное количество:

AT+CMGF — задаёт режим работы: 0-цифровой или 1-текстовый.

AT+CMGS — отправка сообщения.

AT+CMGL — чтение сообщений с модема.

Кому-то может понадобиться AT+CMGR — чтение одного сообщения с модема и AT+CMGD — удаление одного сообщения с модема.

После того, как модем подсоединён к компьютеру, нужно также посмотреть через панель управления Windows номер виртуального СОМ порта, который отводится модему.

Далее пишем такую простенькую программку:

%Программа отправки СМС
ss=serial('COM4');
ss.baudrate=9600;
fopen(ss);
ss.Terminator = 'CR'
%char(34 ") 13 enter. 26 for ctrl z
tx ='AT';
tx1=char(13);
tx2 ='AT+CMGF=1';
tx3 ='AT+CSCS="GSM"';
tx4 ='AT+CMGS="0038ххххххх"';
tx5 ='A L L A H HO A K B A R';
tx6=char(26);
%засылаем в модем
fprintf(ss,'%s',tx);
fprintf(ss,'%s',tx1);
pause(1);
fprintf(ss,'%s',tx2);
fprintf(ss,'%s',tx1);
pause(1);
fprintf(ss,'%s',tx3);
fprintf(ss,'%s',tx1);
pause(1);
fprintf(ss,'%s',tx4);
fprintf(ss,'%s',tx1);
pause(1);
fprintf(ss,'%s',tx5);
pause(1);
fprintf(ss,'%s',tx6);
fclose(ss)
delete(ss)
clear ss


В tx4 указывается номер получателя, в tx5 текст SMS. SMS-центр используется по умолчанию тот, который прописан в СИМ-карте.

В случае английского текста и цифр всё просто, сложности начинаются, когда мы хотим передавать или получать кириллицу. В этом случае нужно использовать не текстовый режим работы, а числовой и формат PDU.

Этот формат и примеры исходников в интернете тоже имеются, но всегда желательно понимать физику процессов.

На этом пока всё  :) удачных вам экспериментов!


Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #1 : 19, Июль 2012, Четверг, 22:29:19 pm »
Вот здесь http://www.developershome.com/sms/smsIntro.asp неплохой справочник по командам  ;)


Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #2 : 19, Июль 2012, Четверг, 22:36:15 pm »
Допиливая этот пример, вы можете:
- научиться удалённо управлять рассылкой и приёмом СМС;
- если в модеме разлочен голос, то вполне можете приземлять трафик;
- делать различные шлюзы, например. ставя 2 и более модемов.

Фантазируйте и помните, что не боги горшки обжигают...

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #3 : 19, Июль 2012, Четверг, 22:41:17 pm »
Вот здесь http://hardisoft.ru/soft/otpravka-sms-soobshhenij-v-formate-pdu-teoriya-s-primerami-na-c-chast-1/ хороший ликбез по PDU.

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #4 : 20, Июль 2012, Пятница, 11:33:37 am »
Для любителей ковыряться в кодеках GSM здесь - http://www.koders.com/python/fid40706E080EBF22307940E7CA7ED3C2BE9F73B211.aspx?s=pdu#L88 их есть  ;D

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #5 : 20, Июль 2012, Пятница, 11:42:17 am »
Для тех, кто захочет поиграться с отправкой ussd-запросов через модем посредством команды AT+CUSD=1 нужно обратить внимание на кодировку 7bitgsm. Некоторые модемы не любят формат типа '*102#' им подавай АА184С3602

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #6 : 20, Июль 2012, Пятница, 12:45:11 pm »
Те, кто научится хорошо работать с ussd-запросами, тот сможет поддерживать в тонусе подразделения опсосов, борющиеся с фродом. Начать можно с написания сканеров.

Эти подразделения частенько сокращают, говоря, что в Украине перевелись фродеры. Отчасти можно согласиться, украинское образование уже ниже плинтуса, но ведь оно и не готовило энтузиастов. Энтузиасты это люди, занимающиеся исследованиями по призванию  ;D

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #7 : 20, Июль 2012, Пятница, 18:39:49 pm »
Кодек на джаве - http://mlusincuba.wordpress.com/2011/12/01/gsm-7-bit-encodingdecoding-used-for-sms-and-ussd-strings-java-code/

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #8 : 21, Июль 2012, Суббота, 16:30:29 pm »
Отключаем ZeroCD в модеме Huawei E1550

Если вы планируете использовать HSDPA модем Huawei E1550 совместно с каким нибудь роутером, например DLink Dir-320, не лишними будут действия по отключению дополнительных технологий в самом USB модеме.

Перед тем как выполнять какие либо манипуляции с модемом Huawei E1550, рекомендуется предварительно сделать резервную копию драйверов для модема, так как возможности возврата к первоначальному режиму ZeroCD может  не представится.

Отключение режима ZeroCD значительно облегчит подключение модема к разнообразным роутерам. В этом случае роутер будет воспринимать ваш модем именно как модем а не как флэш накопитель.

Итак, убедитесь в том что в вашей операционной системе установлен Hyper Terminal. Не должно возникнуть проблем, если вы используете Windows XP. Если у вас более новая версия ОС, вам необходимо будет использовать Hyper Terminal сторонних разработчиков. Подключите к своему ПК ваш USB модем Huawei E1550 и установите с ним соединение посредством программы Hyper Terminal. Проверьте соединение. Для этого введите команду «АТ». В случае успешного соединения вы получите ответ «ОК».

Для перевода устройства Huawei E1550 в режим «только модем», выполните в гипертерминале команду:

AT^U2DIAG=0

После этого переподключите модем к вашему компьютеру и проверьте, доступна ли флэш память устройства. Если ваш модем не определяется как флешка, значит он переведен в режим «только модем» и теперь его можно без какого либо напряга, а именно без использования утилиты usbmodeswitch, подключать к роутеру.

Если вы желаете переключить модем в другие режимы, вам помогут следующие команды:

AT^U2DIAG=1 — устройство в режиме «модем + CD-ROM»
AT^U2DIAG=255 — устройство в режиме «модем + CD-ROM + Card Reader»
AT^U2DIAG=256 — устройство в режиме «модем + Card Reader»

Приведенные команды могут быть использованы и для других модемов с функцией ZeroCD. Таким же образом удалось отключить функцию ZeroCD в модеме Huawei E219 и успешно подключить его к роутеру DIR-320.

http://satfox.net/howto/otkljuchaem-zerocd-v-modeme-huawei-e1550/

Оффлайн stormrs

  • Знаменитый писатель
  • ***
  • Сообщений: 6227
  • Репутация: +180/-1
  • Пол: Мужской
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #9 : 21, Июль 2012, Суббота, 19:52:14 pm »
А зачем его подключать к роутеру DIR-320?

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #10 : 21, Июль 2012, Суббота, 20:42:32 pm »
А зачем его подключать к роутеру DIR-320?
Точка входа - http://dlink.ru/ru/faq/246/1045.html

Оффлайн stormrs

  • Знаменитый писатель
  • ***
  • Сообщений: 6227
  • Репутация: +180/-1
  • Пол: Мужской
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #11 : 21, Июль 2012, Суббота, 21:08:26 pm »
Точка входа куда? ;) И вообще линк на фак по DIR-620/DIR-320NRU а это совершенно не то же самое, что DIR-320, различия у них кардинальные даже на уровне железа. В стоковой вебморде 320-го и намека нет на подключение USB-модемов, их для этого необходимо было шить альтернативными прошивками …

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #12 : 21, Июль 2012, Суббота, 21:34:13 pm »
Железо, на самом деле, не знает какая прошивка нативная или альтернативная  ;) Его задача отрабатывать команды.

Оффлайн stormrs

  • Знаменитый писатель
  • ***
  • Сообщений: 6227
  • Репутация: +180/-1
  • Пол: Мужской
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #13 : 21, Июль 2012, Суббота, 21:52:48 pm »
В том-то и дело, что некоторое железо команды отрабатывать отказывается напрочь ;) Там на самом деле история интересная, «простой» DIR-320 стал легендой потому, что был фактически копией ASUS WL500G, который стоил вдвое дороже. Изначально, из коробки, у него был лишь принт-сервер,  однако после прошивки модифицированным софтом у него появлялась поддержка фактически любых юсб-модемов, и, что немаловажно, стабильность работы была потрясающей. Непонятно почему тайваньцы прекратили его выпуск, заменив его на DIR-320NRU, уже на совершенно другом железе, которое команды отрабатывать отказывается даже после длительных танцев с бубнами, — кое-чему «научить» их можно, но уже нет ни прежней универсальности, ни той самой стабильности.

Оффлайн Сергей Горбачевский

  • Administrator
  • Знаменитый писатель
  • *****
  • Сообщений: 73665
  • Репутация: +321/-4
  • Пол: Мужской
  • Киевстар и Коболев одна шайка
    • Награды
Отправляем и получаем SMS с помощью 3G/GSM модема
« Ответ #14 : 21, Июль 2012, Суббота, 21:57:19 pm »
Ну у меня тоже есть вопросы к вендорам, особенно Huawei. Могли бы дать API к Е1550...