Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Работа с GSM телефоном

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12

Открыть новую тему     Написать ответ в эту тему

spoliator



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KhSlv
 
Отправлена. Попробуй может чего получится....

Всего записей: 257 | Зарегистр. 08-01-2006 | Отправлено: 12:32 01-08-2006
tolyusha

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и мне, пожалуйста, вышли.
ashuba @ yandex.ru

Всего записей: 1 | Зарегистр. 01-08-2006 | Отправлено: 17:52 01-08-2006
spoliator



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tolyusha
Отправлено
 
Добавлено:
Народ ! Пишите в ПМ ! Иначе Nep нас изнахрючит. И вообще то лучше обращайтесь к владельцу исходника.
 
Или на Рапиду залью ?
Исходник не отправляет СМС на русском но как пример очень даже нормально.
 
http://www.torry.net/pages.php?id=205
 
SMSModule
 
Link with GSM Module via Serial Port, IrDA, BT  
Send and receive messages  
Send long messages  
Support UCS2/HEX.  
 
Советую этот компонент.
 

Всего записей: 257 | Зарегистр. 08-01-2006 | Отправлено: 17:57 01-08-2006
spoliator



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну что кто нибудь чего нибудь сделал ?

Всего записей: 257 | Зарегистр. 08-01-2006 | Отправлено: 10:18 22-08-2006
level2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ну что кто нибудь чего нибудь сделал ?

написал кодирование/расскодирование в pdu для русских сообщений UCS2, сейчас заканчиваю тоже самое при 7 битном кодирование для латиницы....
 
to all: какую библиотеку для com-порта посоветуете использовать?

Всего записей: 10 | Зарегистр. 29-07-2006 | Отправлено: 15:27 26-08-2006
level2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spoliator, у самого какие результаты....? Говорил  SMSModule рулит. Может расскажешь, что да как там..... и что использовал для работы с com-портом.

Всего записей: 10 | Зарегистр. 29-07-2006 | Отправлено: 10:26 27-08-2006
level2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 В качестве "компонента" использовать класс Synaser.  

to OdesitVadim:
хорошая компонента, тока очень часть вылетают ошибки.... вот допустим кусок кода...
----------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
const cmd: array[0..2] of string = ('AT+CGMI',
                                    'AT+CGMM',
                                    'AT+CGMR');
var
  ser:TBlockSerial;
  i: integer;
  rec_str: string;
 
begin
  ser:=TBlockSerial.Create;
  ser.RaiseExcept:=True;
  try
    ser.Connect('COM5');
    ser.Config(4800, 8, 'N', 0, false, false);
    for i:=0 to 2 do begin
      rec_str := ser.ATCommand(cmd[i]);
      if Pos('OK', rec_str) > 0 then
        memo1.lines.Add(rec_str);
    end;
  finally
    ser.free;
  end;
end;
--------------------------------------------------------------------------
пишешь вместо 'AT+CGMI'  -> AT+CGMI1 и пошли ошибки.
В чем проблема может быть?????????

Всего записей: 10 | Зарегистр. 29-07-2006 | Отправлено: 20:54 30-08-2006
FireZone

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
level2003
Цитата:
пишешь вместо 'AT+CGMI'  -> AT+CGMI1 и пошли ошибки.  В чем проблема может быть?????????
Кавычки забыл

Всего записей: 293 | Зарегистр. 28-01-2004 | Отправлено: 21:01 30-08-2006
level2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот еще кусок кода. Все равно вылетают ошибки! На этот раз при переводе в PDU-режим(Error.1). Телефон его поддерживает(проверял в гипертерминале). Вот такая ошибка: 'Communication error 9997: Timeout during operation'. В чем может быть проблема? Может у кого есть хороший пример на эту компоненту и русская документация? Буду благодарен.
----------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
const READ_SMS = 'AT+CMGR=';
const DELETE_SMS = 'AT+CMGD=';
const PDU_MODE_CONVERT = 'AT+CMGF=0';
const SMS_COUNT_MEMMORY = 20;
var
  ser:TBlockSerial;
  i: integer;
  rec_str: string;
begin
  ser:=TBlockSerial.Create;
  ser.RaiseExcept:=True;
  try
    ser.Connect('COM5');
    ser.Config(9600, 8, 'N', 0, false, false);
    ser.AtTimeout := 5000;
// ----- переводим чтение смс в PDU-режим --------------------------------------
    rec_str := ser.ATCommand(PDU_MODE_CONVERT);
    if (ser.LastError <> 0) or (not ser.ATResult) then begin
      Application.MessageBox('Error.1','Error.1');
      Exit;
    end;
// ----- считываем смс с памяти телефона ---------------------------------------
    for i:=1 to SMS_COUNT_MEMMORY do begin
      rec_str := ser.ATCommand(READ_SMS + IntToStr(i));
      if (ser.LastError <> 0) or (not ser.ATResult) then begin
        Application.MessageBox('Error.2','Error.2');
        Exit;
      end;
      if (Pos('+CMGR', rec_str) > 0) and (Pos('OK', rec_str) > 0) then begin
        memo1.lines.Add(rec_str);
        rec_str := ser.ATCommand(DELETE_SMS + IntToStr(i));
        if (ser.LastError <> 0) or (not ser.ATResult) then begin
          Application.MessageBox('Error.3','Error.3');
          Exit;
        end;
      end;
      if (Pos('+CMS ERROR', rec_str) > 0) and (Pos('OK', rec_str) > 0) then
        break;
    end;
//------------------------------------------------------------------------------
  finally
    ser.free;
  end;
end;
 
ЗЫ: кавычки я там не зыбыл. Но все равно спасиб за ответ.
 
Добавлено:
У меня щас крышу сорвет!!! С утра ошибки были где попало... щас запустил, все нормуль.. похоже дело в тайаутах. Подскажите как исправить... и пример с доками плиз... ну очень нада.
 
Добавлено:
еще вот такая ошибка вылетает: 'Communication error 9999: Receive framing error'. исключительные ситуации блин...
 
Добавлено:
Помогите, ато я вас замучаю ))
 
Добавлено:
написал  ser.AtTimeout := 5000; но от ошбки таймаута полностью не избавился... и Receive framing error вылетает иногда.... может компонента глючная!!!

Всего записей: 10 | Зарегистр. 29-07-2006 | Отправлено: 14:30 31-08-2006 | Исправлено: level2003, 16:07 31-08-2006
FireZone

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
level2003Телефон хардварно как подключен? ИК? USB? Или обычный ком-порт? Попробуй в конфиге последний параметр поставить true. Если обычный компорт, то может не помочь, потому что компортовые кабели для телефонов недоделки.
 
Добавлено:
Позже гляну на этот synaser и мож ещо чего подскажу.

Всего записей: 293 | Зарегистр. 28-01-2004 | Отправлено: 16:22 31-08-2006
level2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Через USB. Сейчас попробую в true поставить. Мне впринципе без разницы какой com-компонент использовать(пробовал TComPort, но что-то у меня там тоже не срослось)... если другой окажется лучше, могу и его использовать!  
 
Добавлено:
в шнур для телефона у меня еще встроен переключатель для питания, может он оказывает какое-то воздействие.

Всего записей: 10 | Зарегистр. 29-07-2006 | Отправлено: 23:20 31-08-2006
level2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FireZone, не помогает. Все равно вылетают частенько ошибки.
1. На этом месте Application.MessageBox('Error.1','Error.1');
2. 'Communication error 9999: Receive framing error'
3. и реже таймаут

Всего записей: 10 | Зарегистр. 29-07-2006 | Отправлено: 21:38 02-09-2006
FireZone

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
level2003
framing error означает, что контроллер ком-порта не смог распознать байт в принятом пакете битов. Такое бывает при несоответствии настроек девайсов, плохом контакте в разъёмах, неисправности контроллера, повреждении кабеля. В твоём случае половина возможных неисправностей откидывается, поскольку ком-порт виртуальный.
Попробуй скорость поменять, например, на 115200. Данные-то с порта хоть какие-нибудь идут? Что попадает в rec_str?

Всего записей: 293 | Зарегистр. 28-01-2004 | Отправлено: 22:25 02-09-2006
level2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да я как только не менял скорость. Если с гипертерминала, то все нормуль. А вот кода прогу эту запускаю... пошло-поехало. В rec_str(receive_str) попадают данные принятые с ком-порта.  
P.S.: А ты сам такую прогу не пробовал писать? Если да, то что использовал?

Всего записей: 10 | Зарегистр. 29-07-2006 | Отправлено: 23:32 02-09-2006
FireZone

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
level2003
Цитата:
Если да, то что использовал?
win32 API, проблем не знал. Попробовал я щас synaser. Проблема в том, что метод ATCommand весьма негибкий, посмотри его исходник. Таймаутами он реагирует на любые строки, которые не кончаются на 'OK'<CRLF> или 'ERROR'<CRLF>. А ведь телефон кроме этих кодов может еще и +CMS ERROR: <code><CRLF> выдавать. А такая ошибка возникает у тебя, когда ты запрашиваешь с телефона несущесвующую СМС. Рекомендую объявить наследника от TBlockSerial и переопределить в нём метод ATCommand своим более гибким, который сможет распознавать +CMS ERROR и +CME ERROR и даже сохранять код ошибки.
 
Добавлено:
У тебя в коде много лишнего. Например, проверка LastError не нужна вовсе, поскольку если оно не ноль, то возбуждается исключение. А последнее условие вообще лишено смысла:
Цитата:
 if (Pos('+CMS ERROR', rec_str) > 0) and (Pos('OK', rec_str) > 0) then          break;
. А вообще, ты уверен, что в каждой читаемой ячейке есть сообщение? По-моему, лучше получать список сообщений командой AT+CMGL, а потом по номерам ячеек из списка удалять сообщения. Накидал наследника от TBlockSerial Подробнее...

Всего записей: 293 | Зарегистр. 28-01-2004 | Отправлено: 08:31 03-09-2006
andrew_sh

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть проблема : неполучается получить отчет о доставке
 
Поле PDU заполняю так.
 
0 - RP (Reply Path, не используем, ставим ноль)  
0 - UDHI  (означает, что тело сообщения содержит заголовок)  
1 - SRR (Status report request, не запрашиваем отчет о доставке)  
10 - VPF (Validity Period Format, ставим всегда эти два бита в состояние 10)  
0  - RD (Reject Duplicates, много писать, читаем доку :). Ставим ноль и не напрягаемся)  
01 - MTI (Message Type Indicator, 01 - это SMS-SUBMIT, т.е., исходящее сообщение)  
 
СМС доходит, все читается (Кстати если даже SRR = 0).
 
at+cmgl=4 Выдает только 1 старую СМСку. Что я делаю не так или что нужно настроить
СМС отправляю в ПДУ формате

Всего записей: 1 | Зарегистр. 24-10-2006 | Отправлено: 05:55 24-10-2006
FireZone

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrew_sh
Цитата:
at+cmgl=4 Выдает только 1 старую СМСку. Что я делаю не так или что нужно настроить
Входящие сообщения могут сохраняться либо в память SIM, либо в память телефона. Команда AT+CMGL выдаёт сообщения либо из той, либо из другой памяти. Переключиться на желаемую память можно командой AT+CPMS. На предыдущей странице есть пример.

Всего записей: 293 | Зарегистр. 28-01-2004 | Отправлено: 11:04 24-10-2006
NNiittrroo



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, помогите пожалуйста.
Никак не получается послать СМС.
Пробовал вышеописанные методы, не выходит, пишет ERROR.
Задача сводится к тому, чтобы послать смс в любом формате - текстовом, или PDU с модема Siemens MC35i. Весь инет перекопал, везде пишется хорошо, но на практике никак. Может я делаю что-то не то?
Не могли бы вы работающий пример привести? Буду очень благодарен.
 
Вот один из вариантов который не получается:
at+cmgf?        
+CMGF: 0        
 
OK  
at+csmp?        
+CSMP: 81,167,0,8                  
 
OK  
at+cmgs="+79099922718",<cr>05000301020204E04E04
(ctrl+z)                                                
ERROR    
 
, или вот еще...
 
at+cmgf?        
+CMGF: 0        
 
OK  
at+cmgf=1          
OK  
at+cmgs="+79099922718",129                          
> Test
(ctrl+z)        
ERROR  

Всего записей: 1 | Зарегистр. 06-12-2006 | Отправлено: 16:36 06-12-2006
NightSpawn



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго всем времени суток! Есть вопрос, на который так и ненашел ответа. Может поможете...
 
Телефон Samsung X100
При запросе AT+CSCS=?, выдает  +CSCS: ("GSM") OK.  
При запросе AT+CSCS?, выдает +CSCS: "GSM" OK.
 
Это получается что "UCS2" нету на X100?
 

Всего записей: 87 | Зарегистр. 01-01-2007 | Отправлено: 14:06 14-01-2007
FireZone

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NightSpawn
Слать русские смс? Не помню точно, но по-моему в его терминале тело смс можно писать прямо по-русски, возможно, выставив кое-какие параметры текстового режима. Если найду свои старые исходники, то напишу точно. Вообще, x100 сильно ограничен в терминальных возможностях:
он не поддерживает PDUmode. А поскольку он еще и hex не поддерживает, то отправить с терминала склеенную смс в его единственно доступном textmode становится невозможным.

Всего записей: 293 | Зарегистр. 28-01-2004 | Отправлено: 15:14 14-01-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Работа с GSM телефоном


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru