Полная версия этой страницы:
отправка SMS
maxntf
Jul 14 2009, 10:08
Такая вот проблема.
Использую модуль SIM300
Раньше отправлял SMS в текстовом режиме AT+CMGF=1.
Все остальное оставалось по умолчанию. Сейчас в таком варианте если отправить сообщение на телефоне вместо текста кубики.
Что изменилось, причем такое началось недавно.
chief_olimp
Jul 14 2009, 13:46
а если так? AT+CSMP=17,167,0,25
maxntf
Jul 15 2009, 06:21
Цитата(chief_olimp @ Jul 14 2009, 17:46)

а если так? AT+CSMP=17,167,0,25
Все равно!
Нормально отправляется только в цифре(PDU) или кирилице.
Цитата(maxntf @ Jul 15 2009, 10:21)

Нормально отправляется только в цифре(PDU) или кирилице.
Извините, я тут немножко не понял. Можно передавать смс кириллицей в текстовом режиме (не в PDU)?
Если можно, чуть подробнее, как это сделать?
maxntf
Jul 15 2009, 08:06
Цитата(SKov @ Jul 15 2009, 11:30)

Извините, я тут немножко не понял. Можно передавать смс кириллицей в текстовом режиме (не в PDU)?
Если можно, чуть подробнее, как это сделать?
Ставим юникод
пр.
AT+CMGS="00380030003100310031003100310031003100310031"
> 0054004500530054
Передаст на номер 8011111111111 SMS с текстом TEST
Так что кто может сказать что поменялось в кодировках у Украинских операторов. Почему теперь при отправки SMS в формате "IRA" или "GSM" в текстовом режиме вместо текста получаю квадратики?
MiklPolikov
Jul 15 2009, 10:29
Цитата(maxntf @ Jul 15 2009, 12:06)

Ставим юникод
пр.
AT+CMGS="00380030003100310031003100310031003100310031"
> 0054004500530054
Передаст на номер 8011111111111 SMS с текстом TEST
Так что кто может сказать что поменялось в кодировках у Украинских операторов. Почему теперь при отправки SMS в формате "IRA" или "GSM" в текстовом режиме вместо текста получаю квадратики?
У меня абсолютно та же проблема , хоть я и в Москве.
Отправляю смс в GSM и получаю квадратики .
Я правильно понимаю, что кодировка GSM 7и битовая это значит символы надо кодировать так :
1 байт – старший бит это младший бит 2-го символа + 7 бит первого символа
2 байт – 2 старших бита это младшие два бита 3-го символа + 6 оставшихся
бит 2-го символа
и т.д ?
MiklPolikov
Jul 15 2009, 11:55
Вот что интересно :
1) Отправляю смс 123456789 с сотового на сим300
получаю :
+CMGR: "REC UNREAD","+79055314063",,"09/07/15,15:15:51+16"123456789
2)Отправляю эту же смс с СИМ300 самому себе и сразу же её получаю
+CMGR: "REC UNREAD","+79035825709",,"09/07/15,15:33:47+16">123456789
Во втором случае появился символ '>'
Если этот символ не слать перед текстом то смс всё равно отправляется ! То есть он и не нужен !
AT+CMGS="+79055314063"
0x0D
123456789
0x1A
Но вопрос в другом : Почему сам СИМ300 свою смс получает нормально, а сотовый получает квадратики ?
Цитата(MiklPolikov @ Jul 15 2009, 14:55)

Во втором случае появился символ '>'
Если этот символ не слать перед текстом то смс всё равно отправляется ! То есть он и не нужен !
А символ > и не надо слать перед СМС! Этот символ передаёт телефон(модуль) как приглашение для ввода СМС.
MiklPolikov
Jul 15 2009, 14:24
Я решил проблему !!!
AT+CSCS="GSM"
0x0D
OK
AT+CSMP=17,167,0,0
0x0D
OK
AT+CMGS="+79055314063"
0x0D
>
HELLOW
0x1A
Приходит смс HELLOW
AT+CSMP=17,167,0,0 в этой строчке последняя цифра задаёт Data Coding Sheme . 0 это Default GSM
Alphabet. Почему при этом не приходится перекодировать 8и битовые символы в 7и я не понимаю. Но главное работает.
Цитата(MiklPolikov @ Jul 15 2009, 18:24)

Приходит смс HELLOW
AT+CSMP=17,167,0,0 в этой строчке последняя цифра задаёт Data Coding Sheme . 0 это Default GSM
Alphabet. Почему при этом не приходится перекодировать 8и битовые символы в 7и я не понимаю. Но главное работает.
А почему нельзя просто включить текстовый режим и просто передать загадочное слово HELLOW
в текстовом режиме? ИМХО, нетекстовые режимы и всякие юникоды нужны для передачи не латиницы.
Цитата(MiklPolikov @ Jul 15 2009, 17:24)

Почему при этом не приходится перекодировать 8и битовые символы в 7и я не понимаю.
Как это я себе понимаю: телефон(модуль) передаёт СМС в каком-то своём формате. Скорее всего, этот формат и есть PDU (или что-то очень близкое, но будем называть его "PDU"). В текстовом режиме телефон(модуль) берёт на себя функции перекодирования из текста в "PDU". Поля этого "PDU" нужно заполнить некоторыми значениями, которые Вы задаёте командой AT+CSMP. Data Coding Sheme - это одно из полей "PDU" и собственно текст СМС (тот, что Вы задаёте после приглашения к вводу после приёма ">") в этот "PDU" телефоном(модулем) в указанном Вами формате и помещается.
maxntf
Jul 17 2009, 09:26
Цитата(MiklPolikov @ Jul 15 2009, 18:24)

Я решил проблему !!!
AT+CSCS="GSM"
0x0D
OK
AT+CSMP=17,167,0,0
0x0D
OK
AT+CMGS="+79055314063"
0x0D
>
HELLOW
0x1A
Приходит смс HELLOW
AT+CSMP=17,167,0,0 в этой строчке последняя цифра задаёт Data Coding Sheme . 0 это Default GSM
Alphabet. Почему при этом не приходится перекодировать 8и битовые символы в 7и я не понимаю. Но главное работает.
Это конечно хорошо. Только вот вопрос в другом, что на самом деле поменялось, и как можно быть уверенным что так будет работать и дальше?
1. Каким символом ACSII заменяется Ctrl+Z для отправки смс? Символом '&' (0x26)?
2. Перед набором текста смс, необходимо ожидать символ '>' (0x3E) или лучше вставить временную паузу?
Спасибо.
Master of Nature
Sep 8 2010, 18:59
Цитата(Alt.F4 @ Sep 8 2010, 22:18)

1. Каким символом ACSII заменяется Ctrl+Z для отправки смс? Символом '&' (0x26)?
2. Перед набором текста смс, необходимо ожидать символ '>' (0x3E) или лучше вставить временную паузу?
Спасибо.
1) 0x1A - это спецсимвол и равен он десятичному числу 26
2) лучше дождаться приглашения '>'
Спасибо.
Еще хочу уточнить: бывали случаи отсутствия символа '>'?
з.ы. защита от зависания при отсутствии '>' занимает 10% флэш памяти МК, что для меня критично.
Master of Nature
Sep 8 2010, 19:27
Цитата(Alt.F4 @ Sep 8 2010, 23:25)

Еще хочу уточнить: бывали случаи отсутствия символа '>'?
Оно появляется всегда.
В данном случае я привел цитату из AppNotes.
Точнее там просто написано - дождитесь > и затем посылайте данные
Для отправки любой команды достаточно ли одного символа перевода строки (0x0A 'LF')?
Или необходимо использовать 0x0A + 0x0D (LF+CR)?
Спасибо.
Цитата из "AT Commands Set SIM300_ATC_V2.03 ":
The "AT" or "at" prefix must be set at the beginning of each Command line. To terminate a Command line enter <CR>.
P.S. Т.е. достаточно одного символа, но не <LF>, а <CR>
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.