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

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

Автор: LOGACHOV
Дата сообщения: 13.11.2007 10:53
уже так и сделал
Автор: Cyril Konst
Дата сообщения: 27.01.2008 10:48
Народ, у кого-нить есть компонента или пример де|кодирования PDU на delphi?
А так же как написать код, который бы ждал СМС и при получении сразу её выводил.
Автор: OdesitVadim
Дата сообщения: 27.01.2008 15:07

Цитата:
А так же как написать код, который бы ждал СМС и при получении сразу её выводил.

Нужно постоянно опрашивать кол-во смс. правда, насколько помню, когда приходит смс, в порт вываливается сообщение какое-то, но не помню его.
Автор: Jokerjar79
Дата сообщения: 27.01.2008 15:45
Всем привет. Решил тож написать что-нибудь для своей Nokia 6300. Был опыт написания программы для работы с Siemens C60, там все основывалось на посылке AT-команд в COM-порт, через который подключен телефон. Но с 6300 такое не работает (телефон никак не отвечает при посылке AT-команд на COM-порт, который появляется при соединении телефона с ПК). На оф. сайте Нокии нашел такую вещь - PC_Connectivity_API_3.2. С ее помощью мне удалось реализовать следующие вещи: узнать список подключенных телефонов, информацию о прошивке телефона, язык, IMEI, код продукта... Вся работа основывается на вызове функций из ConnAPI.dll. Телефон подключается через обычный USB-шнурок. Но до самого главного - посылке AT-команд в Нокию я так и не докапался. В той самой ConnAPI.dll никакой похожей функции я не нашел . По сути дела реализовал только подключение телефона, а дальше ступор. Кто что посоветует?
Автор: Cyril Konst
Дата сообщения: 27.01.2008 16:08
OdesitVadim

Цитата:
правда, насколько помню, когда приходит смс, в порт вываливается сообщение какое-то, но не помню его.

Именно так: +CMTI: "SM",N
И в этом сообщении указывается слот N, куда оно помещено.
Автор: Cyril Konst
Дата сообщения: 30.01.2008 16:06
FireZone

Цитата:
win32 API, проблем не знал. Попробовал я щас synaser. Проблема в том, что метод ATCommand весьма негибкий, посмотри его исходник. Таймаутами он реагирует на любые строки, которые не кончаются на 'OK'<CRLF> или 'ERROR'<CRLF>. А ведь телефон кроме этих кодов может еще и +CMS ERROR: <code><CRLF> выдавать. А такая ошибка возникает у тебя, когда ты запрашиваешь с телефона несущесвующую СМС. Рекомендую объявить наследника от TBlockSerial и переопределить в нём метод ATCommand своим более гибким, который сможет распознавать +CMS ERROR и +CME ERROR и даже сохранять код ошибки.

А как с помощью synaser отправлять СМС?
Автор: FireZone
Дата сообщения: 31.01.2008 09:10
Cyril Konst
Цитата:
А как с помощью synaser отправлять СМС?
По-моему, сам он не умеет отправлять их. С его помощью можно упростить отсылку AT команд. Примера, к сожалению, не осталось, поскольку винт сдох внепланово.
Автор: Cyril Konst
Дата сообщения: 31.01.2008 10:33
FireZone
Дык проблемма в отправке AT+CMGS
В ответ приходит '> '
А synaser ругается TimeOut'ом...
Автор: FireZone
Дата сообщения: 31.01.2008 11:40
Попробуй целиком отправить одной посылкой AT+CMGS + номер + текст
Автор: Cyril Konst
Дата сообщения: 31.01.2008 13:16
FireZone
попробовал - Error.1
Автор: FireZone
Дата сообщения: 01.02.2008 09:25
Cyril Konst
Значит, нужно писать свою реализацию. Я бы сделал наследника, и наделал в нем отдельные методы для таких специальных случаев, как AT+CMGS
Автор: Cyril Konst
Дата сообщения: 01.02.2008 09:42
FireZone
Не хватает квалификации для написания наследников.
Может тогда подскажите другую более простую компоненту, которая может просто читать и писать строки в COM-порт. А уж анализ вывода делать в процедуре конкретно для каждой команды.
Автор: FireZone
Дата сообщения: 01.02.2008 10:08
Cyril Konst
Класс TBlockSerial из synaser как раз и делает то, что тебе нужно. У него есть методы SendString и RecvString.
Автор: maykoff
Дата сообщения: 05.02.2008 18:30
Народ, подскажите, как отправить длинное сообщение.

07918350000005F1 - смс-центр
51 - первый октет (submit, один октет expire, с пользовательским заголовком)
00 - TP-Message-Reference
0C91835255156237 - номер
00 - PID
04 - DCS (8bit)
AA - срок годности
20 - длина
050003110201 - первая из двух частей клееного сообщения
7878787878787878787878....

В PDU-режиме:

AT+CMGS=46
07918350000005F151000C918390377864130004AA200500031102017878787878787878787878787878787878787878787878787878

Сообщение не отправляется, пишет ERROR (сразу же, без задержки)
Подскажите, что я не так делаю, или киньте рабочий пример.
Автор: fluent
Дата сообщения: 01.04.2008 19:11
Есть пример проги отправки и приема смс на Делфях. Правда отправляет. Писал сам без всяких компонент.
Работает почти со всеми мобилами (пробовал на сименсах и нокиях, а вот с Fly коряво, там вместо текста смс билиберда приходит). Если кому надо пишите
Автор: LOGACHOV
Дата сообщения: 02.04.2008 09:44
мне надо
Автор: fluent
Дата сообщения: 03.04.2008 20:39
Счас пока не могу, просто с мобилы сижу.
На выходных закину и ссылку выложу на общее пользование.
Там сам перевод sms в "читаемый" вид сделан коряво,просто некогда было.
Если кто сделает лучше пишите.
А так все 3 вида кодировок текста держит.
Автор: fluent
Дата сообщения: 05.04.2008 20:11
Короче что-то с загрузкой на Рапиду заглючило.
Если кому надо, пишите скину на майл.

Добавлено:
А вот ссылка на пример.
Пользуйтесь
http://forum.mail2k.ru/SMS.rar
Автор: buzitskiy
Дата сообщения: 07.04.2008 08:14
Привет
Есть проблема:
1) посылаю с siemens TC65 составное SMS (состоящего из двух частей):
2) составная SMS доходит до метста назначения (др. телефон), но когда я ее просматриваю то в сообщении теряется один символ (это символ "!" ), а также на siemens TC65 приходит ответное сообщение содержащее непонятный текст
Привожу команды выполняемые с TC-65 для отсылки SMS:

1) отправка первой части составной SMS:
AT+CSMP=81,167,0,8 <CR>
AT+CMGS="+79069309174" <CR>
>0500037A02010430043004300430043004300031043004300430043004300430003204300430043004300430043000330430043004300430043004300034043004300430043004300430003504300430043004300430043000360430043004300430043004300037043004300430043004300430003804300430043004300430043000390021002100210021<ctrl+z>
+CMGS: 162

OK

здесь содержится
UDH=0500037A0201
текст:аааааа1аааааа2аааааа3аааааа4аааааа5аааааа6аааааа7аааааа8аааааа9!!!!
2)отправка второй части составной SMS:
AT+CSMP=81,167,0,8 <CR>
AT+CMGS="+79069309174" <CR>
>0500037A0202002100210021 <ctrl+z>
+CMGS: 163
OK
+CMTI: "MT",1
здесь содержится
UDH=0500037A0201
текст:!!!

SMS на телефон приходит след.:аааааа1аааааа2аааааа3аааааа4аааааа5аааааа6аааааа7аааааа8аааааа9!!!!!!
где видно что один символ в "!" потерян.
одновремено на TC65 приходит входящее сообщение (SMS DELIVER) содержащее неонятное сообщение видимо связоное с тем что символ "!" почемуто был потерян:
07919730071111F1040B919760399071F4000880407011517300236D657373616765200520746F203739303639333039313734207375636365656465642E
Я эксперементировал и установил что знак "!" теряется у второй SMS, если например во второй SMS вместо "!!!" послать " !!" то составная SMS доходит нормально (аааааа1аааааа2аааааа3аааааа4аааааа5аааааа6аааааа7аааааа8аааааа9!!!!!! !!)
Почему теряется символ "!" и что делать ?
Автор: kosmonaftt
Дата сообщения: 07.04.2008 21:11
Приветсвую. Подскажите пож. в таком моменте: усть GSM-модем Siemens M20 (из старых)нужно отправлять СМС на русском
Если модем отвечает на команду at+cscs=?
+CSCS: ("IRA","PCCP850","PCCP852","PCCP1252","PCCP1250","8859-1","8859-2","TTP")


OK
То о формате UCS2 можно забыть?и соответсвенно о кирилических сообщениях?
Предпологается отправлять в PDU (т.е. AT+CMGF=0)
Я не проммер со стажем, но просто устал искать истину почему не могу отправить на русском СМСки.
Автор: buzitskiy
Дата сообщения: 08.04.2008 03:35
привет , у меня модем siemens tc65. Я отправлял SMS на русском языке
используя кодеровку UCS2.
Вот что мне выдает аналогичная команда:

aT+cscs=?
+CSCS: ("GSM","UCS2")
Автор: kosmonaftt
Дата сообщения: 08.04.2008 08:13
Верно, у тебя просто "продвинутый" модем как я предпологаю т.е. поддерживаемые протоколы у тебя ("GSM","UCS2") и поэтому проблем ты не знаешь.
Автор: vnslaft
Дата сообщения: 21.08.2008 10:54
привет форумчанам! подскажите, мыслящие люди, в чем может быть проблема

возникает она при отправке длинных смс
отправляю в pdu, хидер(вроде бы) дописываю правильно
050003+например
B10301
B10302
B10303
pdu type = 75

на некоторые телефоны (nokia, motorola) приходят все 3 смс, а на некоторые (samsung, fly и ещё пара) приходят все 3 смс, но отображается только первая.

настораживает что pduspy пишет про UDL:
137 octets, 68 UCS2 chars (should be 66)
Автор: UKRANDRUSHKA
Дата сообщения: 01.10.2008 10:37
Помогите с кодом на СиШарп, необходимо подключить кпк по инфрокрасному через GSM модем на мобильном телефоне к другому GSM модему . Кто то может помочь примером?
Автор: ikartunin
Дата сообщения: 13.10.2008 11:54
Здравствуйте!!!
В поисках решения своей задачи забрёл к вам. Много тут чего написано. Возможно и ответ на мой вопрос. Но я не нашёл, так что сори заранее....

Задача у меня такая. Имееться подключенный телефон, необходимо реагировать в момент прихода нового смс или ммс. Доставать не требуеться, только узнать. Полагаю, что надо периодически посылать какую то команду и смотреть ответ. Может быть кто подскажет, какую именно?

Заранее благодарен.
Автор: vnslaft
Дата сообщения: 14.10.2008 19:39
ikartunin, есть 2 варианта(по крайней мере я знаю только 2)
1. время от времени посылать на модем команду AT+CMGL=1(вернёт только recieved unread messages вроде бы) или AT+CMGL=4(вернёт все. прочтённые, непрочтённые, в том числе и отправленные\неотправленные)
2. выставить определённым образом настройки AT+CNMI.
у меня стоит AT+CNMI=3,1,2,2,1
когда приходит сообщение, то в порт приходит строка вида +CMT: "xx", n
где xx - тип памяти куда сохранилась смс(SM, ME, MT), а n - индекс сообщения. зная этот индекс можно отправить команду AT+CMGR=n и в ответе прочитать полученное смс.

имхо второй вариант правильнее.

Автор: ikartunin
Дата сообщения: 17.10.2008 12:30

Цитата:
у меня стоит AT+CNMI=3,1,2,2,1


При попытке выполнить эту команду, коворит error 303
Автор: vnslaft
Дата сообщения: 18.10.2008 15:03

Цитата:
При попытке выполнить эту команду, коворит error 303

ну видимо у тебя просто модем не поддерживает эти настройки.
http://www.sendspace.com/file/qaoo5z
скачай файл по ссылке, там документация на русском к модему wavecom. AT комманды это стандарт так что тебе это тоже наверняка подойдёт. читай страницу 97. там найдёшь что обозначаешь каждая из цифр
Автор: pr0ff1
Дата сообщения: 03.01.2009 11:13
Народ, подскажите в чем ошибка отправки СМС :

Сформировал СМС по документации http://www.ixbt.com/mobile/review/comp-sms.shtml

Вот лог работы :

>>> SendSMS Number:79603488534; Text:Simple SMS

Sending command 'AT+CSMS=0'...
Read from port: +CSMS: 1,1,1 OK
Sending command 'AT+CMGF=0'...
Read from port: OK
Sending command 'AT+CNMI=0,1,0,2,1'...
Read from port: OK
Sending command 'AT+CMGS=?'...
Read from port: OK
Sending command 'AT+CMGS=39'...
Read from port: >
Sending command '07919730071111F121000B919706438835F400081800530069006D0070006C00650053004D0053'...
Read from port: ERROR

В Чем может быть ошибка ???
Автор: ynbIpb
Дата сообщения: 06.06.2009 20:56
Уважаемые объясните принцип: вот послал я команду модему, с какой периодичностью я должен опрашивать порт, чтоб получить ответ? а если я не опрошу порт, то ответ так и будет висеть гдето и ждать меня?
з.ы.
хочу узнавать баланс (USSD запрос). какой командой это делать? и в каком виде ответ прийдёт?
сам себе отвечаю: AT+CUSD = 1,"*100#",15 что-то типа этого..., но на моей мотороле L6 ответ: ERROR, а на модеме хуавей на команду AT+CUSD = 1 ОК а на полную строку ERROR

Страницы: 12345678

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


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