Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите отправить СМС на русском SIM900
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
west329_
Нашел в сети немного информации по этому, но на обычные свистки USB-GSM, и ничего для SIM900.

Делаю по аналогии. Алгоритм следующий
Все в кодировке ASCII

AT+CMGF=0 переход в PDU режим

AT+CMGS=25 длина сообщения без первого байта

жду запроса на сообщение >

Код
// Длина и номер SMS центра. 0 - означает, что будет использоваться дефолтный номер.
  sms_pdu[i++] = '0';                    
  sms_pdu[i++] = '0';
  
  // SMS-SUBMIT
  sms_pdu[i++] = '0';    //1                
  sms_pdu[i++] = '1';
  
  // Длина и номер отправителя. 0 - означает что будет использоваться дефолтный номер.
  sms_pdu[i++] = '0';                    
  sms_pdu[i++] = '0';

  // Длина номера получателя
  //sms_pdu[i++] = strlen(sms_recive)-1;
  sms_pdu[i++] = '0';
  sms_pdu[i++] = 'C';

  // 91 указывает международный формат телефонного номера, 81 - местный формат
  sms_pdu[i++] = '9';
  sms_pdu[i++] = '1';
  
  // Телефонный номер получателя в международном формате.
  sms_pdu[i++] = '8';
  sms_pdu[i++] = '3';                  
  sms_pdu[i++] = '6';                   //38-06-68-65-46-97 номер в международном формате
  sms_pdu[i++] = '0';                   //83-60-86-56-64-79  пеерворачиваю байты местами
  sms_pdu[i++] = '8';
  sms_pdu[i++] = '6';
  sms_pdu[i++] = '5';
  sms_pdu[i++] = '6';
  sms_pdu[i++] = '6';
  sms_pdu[i++] = '4';
  sms_pdu[i++] = '7';
  sms_pdu[i++] = '9';
  
  // Идентификатор протокола
  sms_pdu[i++] = '0';                    
  sms_pdu[i++] = '0';
  
   // Старший полубайт означает сохранять SMS у получателя или нет (Flash SMS),  Младший полубайт - кодировка(0-латиница 8-кирилица).
  sms_pdu[i++] = '0';                    
  sms_pdu[i++] = '8';
  
  // Срок доставки сообщения. С1 - неделя
  sms_pdu[i++] = 'С';                    
  sms_pdu[i++] = '1';
  
  // Длина текста сообщения.
  //sms_pdu[i++] = '0';                    
  //sms_pdu[i++] = 'C';
  
  // Текста сообщения.
  sms_pdu[i++] = '0'; sms_pdu[i++] = '4'; sms_pdu[i++] = '1'; sms_pdu[i++] = 'F'; //П
  sms_pdu[i++] = '0'; sms_pdu[i++] = '4'; sms_pdu[i++] = '4'; sms_pdu[i++] = '0'; //р
  sms_pdu[i++] = '0'; sms_pdu[i++] = '4'; sms_pdu[i++] = '3'; sms_pdu[i++] = '8'; //и
  sms_pdu[i++] = '0'; sms_pdu[i++] = '4'; sms_pdu[i++] = '3'; sms_pdu[i++] = '2'; //в
  sms_pdu[i++] = '0'; sms_pdu[i++] = '4'; sms_pdu[i++] = '3'; sms_pdu[i++] = '5'; //е
  sms_pdu[i++] = '0'; sms_pdu[i++] = '4'; sms_pdu[i++] = '4'; sms_pdu[i++] = '2'; //т



в ответ от модуля получаю ERROR
подскажите где может быть ошибка

После выдачи модемом >
строку посылать в ASCII или HEX ?
RadikX
У вас представлен формат ПРИНИМАЕМОГО SMS, а не передаваемого. Они похожи, но некоторые поля отличаются.
Наиболее популярное описание: http://www.ixbt.com/mobile/review/comp-sms.shtml
zebrox
зачем в пду? можно и в текстовом режиме слать смс на русском
west329_
В тексте на русском ?
zebrox
Да, установкить кодировку юцс2, и можно хоть на китайском слать/получать в текстовом режиме.
AT+CSCS="UCS2"
если хорошо помню
west329_
Заборол таки русский через PDU. Если кому интересно выложу, пишите.

Подскажите команду, чтоб модуль при входящем звонке отображал номер звонящего ?
Fusion
AT+CLIP=1

0 - Disable +CLIP notification.
1 - Enable +CLIP notification.


RING
+CLIP: "+7916XXXXXXX",145,"",,"",0
ssokol
Цитата(west329_ @ Dec 19 2012, 20:46) *
Подскажите команду, чтоб модуль при входящем звонке отображал номер звонящего ?

CLCC
west329_
У меня когда звонят только RING RING RING RING

Цитата(ssokol @ Dec 19 2012, 21:01) *
CLCC

Щас проверим
Fusion
AT+CLIP Calling Line Identification Presentation

при AT+CLIP=0 тоже только RING
CADiLO
CLIP остался от мобилок для совместимости со стандартом. Может не всегда сработать или быть запрещено оператором.
Используйте CLCC - можно запросом, а можно включить автоотображение на каждое изменение состояния.
west329_
AT+CLCC=1 рулит.
Получаю две строки с номером телефона звонящего, в начале звонка и в конце. С диким набором параметров.
west329_
Цитата(zebrox @ Dec 19 2012, 16:04) *
Да, установкить кодировку юцс2, и можно хоть на китайском слать/получать в текстовом режиме.
AT+CSCS="UCS2"
если хорошо помню


Хотите сказать, что можно смело после
Код
AT+CSCS="UCS2"
передавать unicode

подобно такому виду ?

Код
AT+CSMP=17,167,0,25<r>
AT+CSCS="UCS2"<r>
AT+CMGS="041F04400438043204350442"   //Unicode Привет


не прибегая к форматированию PDU ????

могу предположить, что модуль уже своими средствами сам сформирует PDU строку на основе введенных данных
zebrox
Да, именно так, не генеря пду самостоятельно, сим сам этим занимается.

при включении сима, один раз отослать команду AT+CSCS, включить текстовый режим

а потом слать смски, без повторного задания режимов.

AT+CMGS=номер телефона
> тут текст в формате UCS2 char(26)


west329_
Цитата(zebrox @ Dec 21 2012, 14:26) *
Да, именно так, не генеря пду самостоятельно, сим сам этим занимается.

при включении сима, один раз отослать команду AT+CSCS, включить текстовый режим

а потом слать смски, без повторного задания режимов.

AT+CMGS=номер телефона
> тут текст в формате UCS2 char(26)



Цитата
номер телефона
а его в каком формате как обычно ?

Код
AT+CMGS="+380661213140"<r>
, виде в ДАТАШИТЕ его китайцы как то по хитрому пишут
zebrox
номер телефона тоже в юсц2 необходимо передавать, + тоже должен быть в юцс2
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.