Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Работа с GSM телефоном

Автор: usertum
Дата сообщения: 15.06.2009 19:17
Про отправку смс есть тут http://forum.ru-board.com/topic.cgi?forum=35&topic=44459 может кто мне и поможет...
Автор: Max21951
Дата сообщения: 24.08.2009 05:19
Напишите, пожалуйста, пример в виде AT комманд для отправки смс с русскими символами.
Автор: time13
Дата сообщения: 26.09.2009 01:27
Помогите, пожалуйста, с отправкой смс через AT+CMGS...

Ввожу команду: AT+CMGS=17<CR> 0001000B919780613291F3000004C9E9340B<ctrl-z>

Результат: ERROR

подскажите плиз что я делаю не так? в чём ошибка? (проверял несколько раз)

P.S. Ввод команды произвожу в точности как написал с учётом регистра и пробела после <CR> (не знаю важно ли это). Тестирую на Sony Ericsson K700.

А вот ещё проведённые тесты:

Команда: AT+CMGS=17
Выдаёт: ничё не выдаёт, зависает приложение и не отвисает сколько не жди

Команда: AT+CMGS=?
Выдаёт: ОК

Команда: AT+CMGS=17
0001000B919780623281F3000004C9E9340B
Команда: AT+CMGS=17
0001000B919780623281F3000004C9E9340B<ctrl+Z>
Выдаёт: ERROR

Ещё нашёл на одном сайте кое что:
Цитата
4. Для тех, кто уже был знаком с системой AT-команд простых модемов, замечу тот факт, что расширенные AT-команды у телефонов соединяются между собой в строке не напрямую, а через символ ";".

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

В общем уже сохраненные сообщения отсылаются:
Команда: AT+CMSS=?
Выдаёт: +CMSS:<mr>
OK
А вот просто отослать новое или сохранить сообщение так и не получается...
Автор: Cheery
Дата сообщения: 26.09.2009 01:47
time13

Цитата:
Ввожу команду: AT+CMGS=17<CR> 0001000B919780613291F3000004C9E9340B<ctrl-z>

не обижайтесь, но просто чтобы убедиться - в одну строку написали для удобства?
речь об <CR> - так и набираете или все же жмете enter?

http://forums.devx.com/showthread.php?t=148016
Автор: time13
Дата сообщения: 26.09.2009 11:34
Дело в том что я подаю эти команды на соньку с другой мобилы по блютуфу.. там естественно никаких Ентеров и в помини нет, т.е. теоретически после строчки
AT+CMGS=17
он должен выдать
>
(и вот здесь уже вводить PDU)
Но как я уже писал после строчки AT+CMGS=17 приложение просто зависает..
Пробовал так же реализовать Enter через коды OD или #13, а так же с комбинациями угловых скобок - в этих случаях если после равно стоит хоть что-то (какой либо другой символ или буква) кроме числа, то стабильно выдаётся ERROR.

Уже эту проблему давненько пытаюсь решить и пришёл к двум выводам, что дело именно в том месте где я пытаюсь использовать клавиши такие, как Enter и ctrl-z. И тут, на мой взгляд, два варианта:
1) или всё таки существует какой то правильный синтаксис (то ли для этого приложения, то ли вообще в принципе) для программного или интерактивного решения задачи, который я ещё не попробовал.
2) или вообще в этом приложение не предусмотрена посылка таких "сложных" АТ-команд, ведь обычные без Ентеров работают на ура..

З.Ы. Приложение, которое использую: BT Info.
Автор: FireZone
Дата сообщения: 26.09.2009 13:22
time13
<CR> - это невидимый символ с кодом 0x0d, после него пробел НЕ нужен. Угловые скобки тоже не нужны. <ctrl-z> тоже невидимый символ, код не помню. Эти символы уходят в телефон на равных правах с остальными.
Когда я отправлял СМС-ки программно, я посылал строку в порт целиком от начала до <ctrl-z> включительно.
Если отправлять через терминал, набираем:

Код: AT+CMGS=17
Автор: time13
Дата сообщения: 26.09.2009 14:41
Через коды тоже пробовал:
Команда: AT+CMGS=17OD
Результат: ERROR
Команда: AT+CMGS=17 OD
Результат: ERROR
Команда: AT+CMGS=17 0x0d
Результат: ERROR
Команда: AT+CMGS=170x0d
Результат: ERROR

Так же целиком всю команду пробывал (код для ctrl-z = 1A = 0x1a), результат аналогичен ERROR.
В документации написано:

Цитата:
Если синтаксис команды неверен, то выдается «ERROR».


Есть ещё варианты?
Автор: Cheery
Дата сообщения: 26.09.2009 15:09
time13
какие варианты если вы неправильно делаете??
Вы думаете, что если напишите код символы в виде цифр, то то приложение, в котором набираете текст команд, автоматом преобразует его в нужный символ?
Почитайте что такое ascii коды
Автор: FireZone
Дата сообщения: 26.09.2009 15:16
time13
Нужно вводить не символы "0x0d" или "OD", а один символ с кодом 0x0d.
Для пущей ясности строка "AT+CMGS=17OD" в бинарном виде выглядит как последовательность байтов 41 54 2b 43 4d 47 53 3d 31 37 30 44. Нам вместо "OD" (30 44) на конце надо ввести символ, у которого нет печатного представления (0d).
Другими словами, символы "OD" мы вводим нажатиями клавиш, на которых написаны буквы 'O' и 'D', а символ с кодом 0d мы вводим нажатием Enter.
Автор: time13
Дата сообщения: 26.09.2009 15:46


Цитата:
Нужно вводить не символы "0x0d" или "OD", а один символ с кодом 0x0d.

Спасибо огромное что разживал подробно, но я никак не доганю..( что это будет за символ с кодом 0x0d? как будет выглядеть моя строка напиши если не сложно, плиз?

код 13, это и есть D (или 44) или 0D (или 30 44) это вроде как понятно...
в каком виде мне это добавить в конец строки?
Автор: FireZone
Дата сообщения: 26.09.2009 16:02
time13
Вот в этом сообщении я написал, как вводить руками.
Автор: time13
Дата сообщения: 26.09.2009 18:01
В каком этом?? ссылка выкинула меня на эту же страницу.
На этой странице ты писал тока как через нажатие энтеров вводить (без кода ентера)
и в бинарном виде... строку напиши пожалуйста...

если я ввожу просто AT+CMGS=17, то телефон зависает (тот с которого подаю команду)
Автор: FireZone
Дата сообщения: 26.09.2009 20:18

Цитата:
строку напиши пожалуйста...

AT+CMGS=17<CR>0001000B919780613291F3000004C9E9340B<ctrl-z>
<CR> и <ctrl-z> - непечатаемые символы с кодами 0x0d и 0x1a соответственно. Чтобы их набрать, нужно нажать соответственно Enter и Ctrl-z.
Убедись, что терминал в PDU режиме. На телефоне (том, с которого подаешь команду) научись набирать эти самые непечатаемые символы <CR> и <ctrl-z>.
Автор: time13
Дата сообщения: 27.09.2009 00:56
это всё понятно уже давно как раз вопрос в том как их набирать? чё не пробую никак не выходит? а может быть такое что из этого приложения это вобще невозможно?
Автор: FireZone
Дата сообщения: 27.09.2009 09:31
Не исключено. Идем на сайт приложения, и курим мануалы на тему ввода специальных символов.
Автор: time13
Дата сообщения: 27.09.2009 11:19
вот вот)) где бы его ещё взять) ну ладно разберусь или попробую блювер установить может там чё лучше...
Я уж думал вы мне пытаетесь растолковать как эти непечатные символы вгонять, а я такой безмозглый не пойму ну всё равно спасибо за содействие!

З.Ы. Кто знает эти непечатные символы в BT Info пишите) буду просто примногоблагодарен)
Автор: nox 911
Дата сообщения: 10.11.2009 10:01
Всем доброго дня. Может кто знает почему модем Siemens M35i выдаёт ошибку сразу после ввода номера. Использую пример

Dzar

Цитата:
Проблема продолжается.... смс отправляется вот так
AT+CSCS="UCS2"
AT+CMGF=1
AT+CMGS="8916*******"
041F044004380432043504420021
то заместо слова "привет!" приходит " !"
может кто сталкивался?

Ввожу:
at
OK
at+cscs=ucs2
OK
at+cmgf=1
OK
at+cmgs=1128547 (жму Enter)
ERROR
А в PDU всё нормально вводиться, но PDU это самый крайний случай.

Добавлено:
Извиняюсь проблему с вводом телефона решил тоже использовав юникод.
Всё работает и приходит на русском)))спс
Автор: nox 911
Дата сообщения: 11.11.2009 11:18
Как всегда рано радовался(. Дело в том, что через Hyper Terminal всё отлично посылается как с Siemens MC35i так и с Wavecom M1306B. Но когда загоняю тот же код в контроллер TWIDO, на телефон приходят квадраты а в Hypere вот что(в режиме gsm всё нормально передаётся, но там нет русского):

+CMGL: 1,"REC READ","002B00330037003*003*003*003*003*003*003*003*003*003*",,"09/
11/10,14:48:40+08"
A00A00041F044004380432043504
Посылаю слово "Привет". Во-первых теряются два последних символа , во вторых появляется дополнительно 6 символов в начале( Может это связано с тем , что контроллер соединяется с модемом по ASCII , Modbus). Может надо правильно установить AT+CSMP=17,167,0,8(стоит сейчас). Буду рад любой помощи)
Автор: FireZone
Дата сообщения: 15.11.2009 21:29
nox 911
Цитата:
во вторых появляется дополнительно 6 символов в начале
Похоже, это кусок склеенной смс. В склеенных смс 6 байт в начале - это специальный заголовок. Несколько страниц назад я писал, как слать склеенные смс, и что-то про AT+CSMP. Должно помочь разобраться.
Автор: venchik01
Дата сообщения: 07.12.2009 20:39
никто не хочет поделиться готовой программой отправки/приёма SMS по-русски?
Автор: cvieri
Дата сообщения: 23.02.2010 19:20
Привет, помогите вот с этим, отправляю как предидущие постеры смс через gsm-шлюз:

AT+CSMP=17,167,0,8
AT+CSCS="UCS2"
AT+CMGF=1
AT+CMGS="0971234567"
041F044004380432043504420021

Приходит смс в виде квадратиков.
Автор: FireZone
Дата сообщения: 28.02.2010 22:20
cvieri
Цитата:
041F044004380432043504420021
Это у меня срабатывало в нокии, но не срабатывало в самсунге. Можно попробовать послать юникодный текст как есть, то есть сами байты, а не их hex-представление. В текстовом режиме - разножопица: у разных производителей он по-разному работает. Если телефон поддерживает PDU mode, лучше работать в нём.
Автор: cvieri
Дата сообщения: 03.03.2010 15:20
> Можно попробовать послать юникодный текст как есть

Это как, например киньте кусок кода, если не сложно
Автор: JuliaX
Дата сообщения: 10.03.2010 17:13
Люди, я не понимаю что происходит.

Почему в сообщения о подтверждении доставки дописываются FF?
Читаю
at+cmgr=16
+CMGR: 1,,167
079173256900090006800C91732519900550013001510360800130015103908000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

И что такое 167 - длина чего?
Автор: FireZone
Дата сообщения: 13.03.2010 20:32
167 - длина PDU блока в октетах. Насколько мне не изменяет память, эта длина не включает номер сервис центра.
Т.е., пропускаем номер сервис-центра 0791732569000900, здесь он 8 октетов. Далее должно быть 167 октетов до конца.
Автор: evgen21
Дата сообщения: 20.03.2010 22:08
Доброе время суток.

Подскажите, как сделать чтобы при отправке sms отправитель был не номер телефона, а его наименование. Т.е. когда мне приходит SMS - то я сразу вижу от кого эта сообщение, хотя в адресной книге его нет.
Автор: Gloval
Дата сообщения: 26.04.2010 22:02
JuliaX
С этим тоже сталкивался, причем одно может придти нормально, другое в таком виде. Видимо глюки в сети.
Тут мегафон чудить начал, похоже вообще отрубают подтверждения доставки смс. В некоторых точках модемы раньше нормально реагировавшие на команду +CNMI=3,1,0,1 стали выдавать ошибку, спасает отрубание параметра о приеме подтверждения +CNMI=3,1,0,0.
UPD.
Похоже мегафон не причем, глючат терминалы siemens.

Но пишу из-за другой проблемы, а именно - интерактивные USSD меню будь они неладны.
После посылки модему стандартной CUSD команды, она отрабатывает нормально и я ловлю URC ответ +CUSD=1, "...0467 бла бла бла ..", 75
> - сессия, приглашение к вводу чего-то. А именно реакции пользователя, нажатие кнопки для выбора. Так в каком виде ее туда засылать я нигде не нашел. Максимум, если послать эскейп символ 0х1В она прекращается с еррором или по таймауту тоже с еррором. Попытка заслать туда АТ команду не работает.
Очень Нужна помощь.
Автор: Sardor_Jurayev
Дата сообщения: 17.11.2010 11:24
Помогитe пожaлустa. Я из Узбeкистaнa. Скинтe пожaлустa примeр с исходникaм для отпрaвки смс с мобилникa, нa Delphi 7. Sasha070393@mail.ru
Автор: HighTower
Дата сообщения: 23.11.2010 19:24
приветствую

что то с длинными смс у меня не складывается... одиночные - прекрасно могу кодировать, а вот длинные - нет...
вот пример:

AT+CMGS=24
0011000A9121436587090000000C050003070101E8329BFD06

00 - использовать smsc из карты
11 - pdu type
00 - что в качестве номера телефона отправителя будет использоваться номер карты --- ТУТ МОЖНО ПОДСТАВИТЬ ДРУГОЙ НОМЕР???
0A - длина номера получателя
91 - международный формат нормера получателя
2143658709 - номер получателя = 1234567890
00 - Идентификатор протокола
00 - кодировка 7 бит
00 - валидность доставки = 5 минут

0C - длины данных далее

050003070101 - добавка для длинного сообщения
05 - длина заголовка
00 - информация о том, что "длинное" собщение
03 - длина информационных данных
07 - идентфицикатор уникальный для всех составных сообщений
01 - всего частей в сообщении
01 - номер текущей части

E8329BFD06 - само сообщение = hello


в итоге если отправить сообщение - приходят иероглифы,
если воспользоваться pduspy - всё разбирается правильно, кроме самого текста сообщения - тоже ерунда какая то...

если выкинуть часть 050003070101 и поставить длину данных в 5 - сообщение приходит корректно..

где ошибка?
Автор: noisy
Дата сообщения: 23.11.2010 22:41
HighTower

можно рабочий пример отправки SMS на русском?

Страницы: 12345678

Предыдущая тема: Как удалять проекты в Builder 6.0?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.