Группа: Автор
Сообщений: 984
Пользователь №: 2617
Регистрация: 17-November 05
Место жительства: Набережные Челны
Вот такая вот задачка встала у меня. Подключенным дата кабелем Сименсом нужно управлять посредством AT команд. Просто включить терминал и управлять телефоном не сложно, но вот разобраться в кодировках для отправки и приема смс придется долго. Я сделал это за вас. Здесь будет исчерпывающая информация по управлению телефоном с компьютера.
Что такое АТ команда? Зачем это надо? И как оно работает?
Практически каждый телефон имеет внутри АТ модем, при подключении дата кабеля многие программы используют именно Ат команды для управления телефоном, считывания с него разной информации, но есть и другие режимы работы, например для закачки файлов, мелодий и тд, но здесь я не буду касаться вопросов закачки мелодий в телефон, а основная цель - это отправка смс с телефона по нужному номеру с нужным текстом в нужное время.
Какой телефон будет отвечать на АТ команды? В этой статье разговор будет идти только по телефонам сименс. Отвечать на АТ команды должны все телефоны начиная с 35 серии (хотя могут быть исключения). Я использую телефон 45 серии, так же прекрасно будут работать телефоны и 55 и 65 и 75 серии. Для телефонов выше 60 серии необходим кабель для СОМ порта, или эмулирующий сом порт, usb кабеля для закачки мелодий не подойдут. Отличить их очень просто usb кабель у которого между разъемом телефона и разъемом usb есть "коробочка" - подойдет! А дата кабели без "коробочки" - работать НЕ будут
Что нужно для того чтоб начать работать с телефоном по АТ? Достаточно дата кабеля, самого телефона и любой терминальной программы. Например можно использовать HyperTerminal. Чуть ниже я выложил простенький терминал. Самое то для экспериментов. Открываем терминальную программу, выставляем сом порт на котором весит телефон и нажимаем OPEN и всё! Можно отправлять команды. Для проверки можете отправить команду AT. В ответ телефон должен прислать OK. Никакие драйвера ставить не нужно! Все работает и так. Полный список команд есть чуть ниже в файле
Применение: 1) Информирование абонента о любом необходимом событии Например шефу будет каждый день приходить смс во сколько был сдан офис на пульт. Или информирование о срабатывании какого то датчика подключенного к компу. Тут уж все зависит от вашей фантазии.
2) Управление объектом по смс
Соглашусь с теми кто скажет что этот метод управления\информирования малонадежен. Мобила может сеть не ловить, заглючить, смс может не дойти, задержаться.... НО есть большой ПЛЮС! Мобильник сейчас есть практически у КАЖДОГО! И доступность и удобность такого канала перекрывает все его недостати!
Это сообщение отредактировал chelny - Nov 28 2007, 02:30 PM
Присоединённое изображение (Нажмите для увеличения)
Группа: Автор
Сообщений: 984
Пользователь №: 2617
Регистрация: 17-November 05
Место жительства: Набережные Челны
Многие из тех кто интересовался темой наверно потратили кучу времени для создания и\или поиски алгоритма кодирования русского текста - ucs2.
Вот функция на Delphi которая это делает легко и быстро:
QUOTE
function ucs2(s: string): string; var i,k: integer; begin for i:=1 to length(s) do begin k:= ord(s[i]); if k>=192 then k:= k + 1040 - 192; result:= result + inttohex(k,4) end end;
Функции отправляем текст на русском языке, на выходе получаем текст в нужной кодировке. Максимальная длина входного текста 70 символов.
Если вам по каким-то причинам нужно в одном смс отправлять более 70 символов, то можно воспользоваться вот этой функцией, она понимает текст только на латинице, но может содержать до 140 символов.
QUOTE
function TFormComPort.Encode7bit(Src:String):String; var Dst:String; i:Integer; CurS,NextS:Byte; TStr:String; begin for i:=1 to Length(Src) do begin if (i mod 8)=0 then Continue; TStr:=Copy(Src,i,1); CurS:=Ord(TStr[1]); if (i mod 8)>1 then CurS:=(CurS shr ((i mod 8)-1) ); if i<Length(Src) then begin TStr:=Copy(Src,i+1,1); NextS:=Ord(TStr[1]); end else NextS:=0; NextS:=(NextS shl (8-(i mod 8))); Dst:=Dst+IntToHex(CurS+NextS,2); end; Result:=Dst; end;
В прикрепленном файле исходники на Delphi и скомпилированая программа для работы с телефонами сименс через АТ команды. Есть возможность отправки смс на русском языке, чтение информации о телефоне, принятия и отклонение входящего звонка. А так же есть окно терминала для ручного ввода команд.
Исходник немного подправил - 1) были проблемы с настройками порта 28.11.07 2) теперь ведется полный лог команд 29.11.07
Группа: Автор
Сообщений: 984
Пользователь №: 2617
Регистрация: 17-November 05
Место жительства: Набережные Челны
Вот некоторые команды:
AT+CHUP отклонить входящий вызов ATA принять входящий вызов AT+CPAS состояние телефона, 0-режим ожидания, 3-входящий вызов AT+CLCC при входящем звонке показывает номер звонящего AT^SMSO выключить телефон AT+GSN показать IMEI телефона AT+CBC уровень заряда батареи, показывает в процентах, 1 - 100% AT+CGMI производитель модема AT+CGMM модель модема AT+CGMR версия прошивки AT+CSQ уровень приема сигнала от базовой станции AT+CIMI IMSI номер сим карты
Полное описание АТ команд (на анг.) смотри в прикрепленном файле. Пусть вас не смущает что это для 35 серии сименсов, основные команды работают на всех моделях от 35 до 75.
Это сообщение отредактировал chelny - Nov 28 2007, 02:22 PM
Группа: Автор
Сообщений: 984
Пользователь №: 2617
Регистрация: 17-November 05
Место жительства: Набережные Челны
Для отладки программы очень частенько приходится пользоваться монитором порта, очень удобная штука. Мониторит все параллельные и последовательные порты в компьютере.
Подключается к определенному порту и перехватывает весь поток данных. Можно перехватывать в хексах, а можно и в текстовом виде (если ловим команды АТ).
Группа: Автор
Сообщений: 984
Пользователь №: 2617
Регистрация: 17-November 05
Место жительства: Набережные Челны
Я сейчас использую Siemens M50 (45 серия сименсов) Все сименсы (ну почти все) должны работать с АТ если у них есть возможность подключения к программам для закачки мелодий.
К сименсам НЕ относятся модели
Siemens Xelibri (платформа похожа на сониэриксон) Siemens C62 (платформа похожа на сониэриксон)
Siemens CFX65 (платформа похожа на LG)
Siemens ST60 (платформа похожа на панасоник) Siemens ST55 (платформа похожа на панасоник)
Siemens CL50 (платформа похожа на панасоник) Siemens CL55 (платформа похожа на панасоник) Siemens CL75 (платформа похожа на панасоник)
Siemens CF65 (платформа похожа на филипс)
Работать с этими телефона будет сложнее, либо вообще невозможно теми методами что я описал. Т.к. у этих аппаратов платформа далека от сименсовой, неизвестно какая еще система команд у них.
Хотя помню подключал С62 к сименсовскому менеджеру по закачке мелодий и к моему удивлению прога видела некоторые папки в памяти телефона (а хотел скачать архив смс, а его не видно(( ).
Пусть он и собран на железе сониэрика, но производители постарались максимально приблизится к стилю сименса.
По поводу BENQ, на счет них вообще не знаю, даже не заглядывал внутрь ни разу.
Если у вас удалось подключить телефон из этого списка, то отпишити сюда, чтоб остальные знали.
Это сообщение отредактировал chelny - Nov 28 2007, 02:20 PM
Многие команды проходят на других телефонах, особенно работа с СМС. Так что пробуйте ... если команда не поддерживается телефоном он просто выдаст error вместо Ok.
ATD1234567890; - это стандартная команда голосового вызова, по идее должна поддерживаться всеми производителями.
пробую на самсунг с100, програмкой HyperTerminal. стондартной виндовской. все равно даннымми вызов делает. пробовал и на синемсах через эту прогу вызов сделать. все равно данными вызов идет. хатя через прогу для сотовых9 не помню названия) званил спокойно.
Это сообщение отредактировал Portos - Jan 21 2008, 10:02 AM
Можно ли при помощи at комманд связаться с модемом другого телефона. Если да то как?
так вот у меня что и происходит. я с пка через тел. званю на другой тел. данными. если я на принемающем телефоне поднемаю трубку то у меня получается модемное соединение.
Синтаксис команды: ATА Команда Возможные ответы RING Примечание: входящий звонок АТА Примечание: ответить на входящий звонок ОК Примечание: Звонок принят АТН Примечание: разъединить вызов ОК Примечание: вызов разъединен
Это сообщение отредактировал Portos - Jan 21 2008, 10:14 AM
Группа: Cоучастник
Сообщений: 1459
Пользователь №: 14565
Регистрация: 9-December 06
Место жительства: Україна
QUOTE (Portos @ Jan 21 2008, 11:13 AM)
пробую на самсунг с100, програмкой HyperTerminal. стондартной виндовской. все равно даннымми вызов делает.
Терпеть не могу этот мелкософтовский изврат с таким громким названием. Попробуй еще этой программулиной, если и это не поможет - значит у тебя неправильные телефоны
Блин, пришлось на две части разбить одним куском не лезет.
пробую. и этой прогой. пишу atd+7913xxxxxxxxx; и все равно на пренимающем теле пишит что принят звонок данными. может это что то с настройками у аператоров не то. до этого пока услугу мобильный офис не включил, и данными вызов не шол.
Группа: Cоучастник
Сообщений: 1459
Пользователь №: 14565
Регистрация: 9-December 06
Место жительства: Україна
Причем здесь оператор? Тут телу какая то команда нужна. В какой проге он нормально набирает номер? Можно посмотреть чего она посылает телефону, например прогой PORTMON
--------------------
Обходя разложенные грабли ты теряешь драгоценный опыт...
Кстати в старых телефонах LG имеи меняется просто камандой at%imei= далее имеи каждая цифра через запятую w Есть идея забацать клипсу на пики чтоб был генератор случайных чисел и посылка в телефон, только вот в написании софта под пики не силен,
получится хорошее устройство от прослушки, купил новую симку, вставил клипсу в разъем, нажал кнопку, дождался перезагрузки телефона, вставил новую симку и готово никаких компов не надо, питание на клипсу можно взять прямо с телефонного разъема... подойдет почти любая старая ЛЖ..
Может подобную тему создать в разделе "Микропроцессоры" , вдруг найдутся желающие написать подобную прошивку? Получится новое интересное устройство. Готов поучаствовать в эксперименте :-)
Группа: Cоучастник
Сообщений: 1459
Пользователь №: 14565
Регистрация: 9-December 06
Место жительства: Україна
QUOTE (VSS6 @ Mar 28 2008, 08:29 PM)
Кстати в старых телефонах LG имеи меняется просто камандой at%imei= далее имеи каждая цифра через запятую w Есть идея забацать клипсу на пики чтоб был генератор случайных чисел и посылка в телефон, только вот в написании софта под пики не силен,
получится хорошее устройство от прослушки, купил новую симку, вставил клипсу в разъем, нажал кнопку, дождался перезагрузки телефона, вставил новую симку и готово никаких компов не надо, питание на клипсу можно взять прямо с телефонного разъема... подойдет почти любая старая ЛЖ..
Может подобную тему создать в разделе "Микропроцессоры" , вдруг найдутся желающие написать подобную прошивку? Получится новое интересное устройство. Готов поучаствовать в эксперименте :-)
"забацать" такое можно минут за пятнадцать, не понятен смысл идеи, ну изменишь IMEI, ну и что?
--------------------
Обходя разложенные грабли ты теряешь драгоценный опыт...