Форум » » Смс от Crestron » Ответить

Смс от Crestron

marty_iron: Подскажите возможно ли каким-либо образом организовать отправку некоего отчета о состоянии по смс при появление в Crestron определенного сигнала? Например сработало реле - отправляется отчет что сработало реле...

Ответов - 71, стр: 1 2 3 4 All

Igor: Хороший вопрос. Какой-нибудь программирумый GSM-оповещатель был бы весьма кстати. В свое время наколхозил следующее решение. Была подобрана контрольно-коммутационная панель ОПС с открытым интерфейсом и съедобным протоколом. К ней был прикручен штатный GSM-оповещатель, а в контроллере Crestron - прописана эмуляция тревожных событий. Этим событиям в конфиге панели были сопоставлены определенные SMS. Работало неплохо. Думаю, в наши времена существует более изящное решение.

Kaveckiy: marty_iron да без проблем - через GPRS модем с помощью AT команд. Формат сами найдете или бросить пример? И, кстати, еще можно отправлять Push.

Игорь K.: Логично, напрямую в модем через com порт. И стоит дешевле $50.


mr.weles: Когда-то заморачивался подобной проблемой на AMX, подключите любой модем по RS-232, но предупреждаю АТ команды вам мозг взорвут гаранировано)

marin_n: Смс-сервисы не пробовали? Вроде не проблема

Вячеслав: Использую сервис SMS Aero. Цена смс мизерная. По сути отправляете любое сообщение на любой сотовый телефон по IP, на какое хотите событие. Я только для сработки по датчику движения использую в режиме охраны. Там правда есть один "минус", нужно шифровать в md5. Но модуль PJlink вам в помощь. P.S. понятное дело процессор должен иметь доступ в Интернет.

Kaveckiy: marin_n пишет: Смс-сервисы не пробовали? Вроде не проблема Там ничего сложного, но есть нюанс: если отрубится инет SMS через модем уйдет, а через SMS сервис нет. Я обычно аварийные оповещения шлю через e-mail и push, если отправка не удалась - дублирую через SMS (экономия денег заказчика).

Kaveckiy: mr.weles пишет: Когда-то заморачивался подобной проблемой на AMX, подключите любой модем по RS-232, но предупреждаю АТ команды вам мозг взорвут гаранировано) Для отправки SMS используется всего одна АТ команда, ничего сложного. А вот принимать SMS пока не научился (не было времени вникнуть глубже).

Игорь K.: Вячеслав, это же Спамерская система рассылок! Зачем рекламируете? Моё личное мнение - такое оповещение совершенно необязательная опция. Лучше обратить внимание на скользкие моменты заранее. Из опыта - возникновение аварийных ситуаций, требующих немедленной реакции на серьёзных объектах вообще нонсенс. Нужно в других местах что то подправлять, а не увлекаться сигнализациями - игрушками.

Kaveckiy: Игорь K. пишет: Вячеслав, это же Спамерская система рассылок! Зачем рекламируете? Это инструмент двойного назначения ;) Им же пользуются интернет магазины и прочие онлайн сервисы для целевого оповещения клиентов и им же пользуются спамеры. Это как оружие: можно использовать для охоты или защиты, а можна для нападения и убийства. Игорь K. пишет: Моё личное мнение - такое оповещение совершенно необязательная опция. Лучше обратить внимание на скользкие моменты заранее. Из опыта - возникновение аварийных ситуаций, требующих немедленной реакции на серьёзных объектах вообще нонсенс. Нужно в других местах что то подправлять, а не увлекаться сигнализациями - игрушками. Мы локализуем возможные аварии автоматически (например протечка воды - перекрытие клапана) а сообщение отправляем или хозяину или обслуживающему персоналу чтобы пошел и исправил. Если не сообщить - приедет домой, а там "сюрприз". А так будет время вызвать мастера или мастеру исправить.

marty_iron: Kaveckiy пишет: И, кстати, еще можно отправлять Push. а что имеется ввиду под push???

marty_iron: Kaveckiy пишет: да без проблем - через GPRS модем с помощью AT команд. Формат сами найдете или бросить пример? желательно конечно пример, не силен я в этом))

Kaveckiy: marty_iron пишет: а что имеется ввиду под push??? Есть у продукции Apple такой вид оповещения в программах как Push. Чем-то похож на SMS. marty_iron пишет: желательно конечно пример, не силен я в этом)) В COM порт к которому подключен GPRS модем нужно отправить строку AT+CMGS="+380XXXXXXXXX"\x0DVashe soobschenie\x1A

marty_iron: Kaveckiy пишет: AT+CMGS="+380XXXXXXXXX"\x0DVashe soobschenie\x1A а это самобытная команда или для организации оповещений ей не обойтись? я так понимаю что это команда для отправки по смс сообщения на номер +380...

marty_iron: слушайте, а нет какой-нибудь рекомендации по модему с Комом? какой лучше использовать?

Kaveckiy: marty_iron пишет: а это самобытная команда или для организации оповещений ей не обойтись? я так понимаю что это команда для отправки по смс сообщения на номер +380... Это AT команда gprs модему на отправку СМС с текстом "Vashe soobschenie" по номеру +380XXXXXXXXX Мы использовали такой.

marty_iron: Kaveckiy спасибо! а есть ли что-то на что надо обращать внимание при выборе модема под эти цели?

Kaveckiy: ХЗ, доку почитайте. У нас эти доступны - брали их.

marty_iron: Kaveckiy пишет: AT+CMGS="+380XXXXXXXXX"\x0DVashe soobschenie\x1A а как отправить в текстовый параметр стоку,где кавычки присутствуют как текст???)) хотя кое-где нашел, что команда без кавычек идет

Kaveckiy: Отправлять точно так же как написано - строку скопировал с программы. + и кавычки стоят именно там где нужно, только номер пиши свой ("+7xxxxxxxxxx")

marty_iron: Kaveckiy а вот еще проблема нарисовалась я так понимаю по тулбоксу, что если ему загнать строку больше чем на 160 символов - он ничего не отвечает в ответ на команду, кроме того, что номер он принял. И при сл отправке например короткого смс - он новую отправку номера воспринимает как часть смс Можно как-то сбросить вот этот запомненный номер? Ну т е какая-то отмена отправки? я так понимаю он ждет \x1A, чтобы отправить, вот можно как-то отменить все действия пока не введено \x1A?

Kaveckiy: marty_iron ХЗ, у меня таких проблем не возникало, поэтому разбираться не было необходимости. Зачем Вам длинное СМС?

marty_iron: Kaveckiy пишет: Зачем Вам длинное СМС? отправлять отчет))

DmitriiP: Ну а как вы хотели :)) SMS - этож Short Message Service «служба коротких сообщений» Текст может состоять из алфавитно-цифровых символов. Максимальный размер сообщения в стандарте GSM — 140 байт (1120 бит). Таким образом, при использовании 7-битной кодировки (латинский алфавит и цифры) можно отправлять сообщения длиной до 160 символов. При использовании 8-битной кодировки (немецкий, французский язык) можно отправлять сообщения длиной до 140 символов. Для поддержки других национальных алфавитов (китайского, арабского, русского и др.) используется 2-байтовая (16-битная) кодировка UCS-2. Таким образом, SMS, написанное кириллицей, не может превышать 70 знаков. Проверяйте длину, если > 160, то режте на части ...

marty_iron: Kaveckiy добрый день, а подскажите такой момент. Отправка смс работала четко. но вот спустя время к ней вернулись - и можем стал ответ на смс сообщение давать ERROR - что это может быть?

Вячеслав: По идее должен быть еще код ошибки. Проверяйте длину сообщения, валидность SIM карты и т.п.

marty_iron: Вячеслав он у меня на комманду AT+CMGS=7..........\x0DKitchen\x1A выдает AT+CMGS=7..........\x0DKitchen\x1A\x0D\x0AERROR\x0D\x0A....

Kaveckiy: marty_iron блин, ну вот сколько можно повторять, номер телефона пишется в кавычках "" и с + в начале номера.

marty_iron: Kaveckiy Вячеслав я разобрался как это обойти, но не разобрался что случилось раньше я на 100% точно и 100% усешно отправлял смс командой AT+CMGS=380XXXXXXXXX\x0DVashe soobschenie\x1A а теперь она стала отправляться командой AT+CMGS=+380XXXXXXXXX\x0DVashe soobschenie\x1A что могло случиться??

marty_iron: Kaveckiy пишет: marty_iron блин, ну вот сколько можно повторять, номер телефона пишется в кавычках "" и с + в начале номера. но я поднял историю - я 47 смс успешно отправлял без плюса и кавычек))) почему раньше срабатывало??

Kaveckiy: marty_iron пишет: почему раньше срабатывало?? Недокументированная функция: хочу работаю, хочу не работаю.

marty_iron: Kaveckiy пишет: Недокументированная функция: хочу работаю, хочу не работаю. просто боязнь только одна - не вышло бы так, что сделаем - а она потом вот так же отвалится...

Kaveckiy: marty_iron пишет: просто боязнь только одна - не вышло бы так, что сделаем - а она потом вот так же отвалится... Я не понимаю один простой момент - дали ж рабочую стоку, просто поменять номер мобильного на свой. Что заставляет проявлять фантазию и делать по-своему?

marty_iron: Kaveckiy нет, я так и сделал теперь просто есть опасения - не отвалится ли и это со временем очень уж хорошо тот работал, без сбоев до определенного момента

DmitriiP: если есть + то оператор понимает что это международный (формат) номер(а) без + хрен поймёш что это за номер международный или национальный или сервис может для 380 "и работало внутри страны" а для 7 нужно +7ххх

marty_iron: а смс на-русском никак не отправить? перебрал до FF - все не те символы

DmitriiP: Для поддержки других национальных алфавитов (китайского, арабского, русского и др.) используется 2-байтовая (16-битная) кодировка UCS-2. Таким образом, SMS, написанное кириллицей, не может превышать 70 знаков.

Вячеслав: Вот нашел: под «кодировкой» UCS-2 понимают UTF-16 без суррогатных пар (от 0xD800 и до 0xDFFF). Т.е. не будет символов кодируемых 4 байтами, а только 2-х байтные пары на один символ. Это чтоб не бегать потом в поисках конвертера в USC-2 :)

Вячеслав: Вот нашел на просторах интернета решение проблемы с отправкой русских символов. Придется попыхтеть конечно чуток и от перекодировки никуда не деться. Но все же достаточно понятно расписано, ссылка тут

Вячеслав: Другой тоже интересный источник click here еще больше упрощает жизнь. Оказывается переводить в цифровой режим не надо, можно и в текстовом Достаточно выполнить предварительную инициализацию модема: 1.Устанавливаем текстовый режим: to_modem$="AT+CMGF=1\x0D"; 2.Установить модем в режим USC2: (предварительно проверив что он такой режим поддерживает может командой AT+CSCS=?\x0D) to_modem$="AT+CSCS=\x22UCS2\x22\x0D"; 3.Установка параметров текстового режима время действия 24ч, формат символов КИРИЛЛИЦА: to_modem$="AT+CSMP=17,167,0,8\x0D"; 4.Преобразовать сообщение из расширенной ASCII в UTF16 (USC2) с помощью нехитрой функции (но не обычной т.к. используем формат "0410" вместо "\x04\x10"): String_Function SMS_CONVERTOR(string ASCII_EXT$) { integer k,m; string UCS2$[70],symb[2]; UCS2$=""; for (k=1 to len(ASCII_EXT$)) { if((byte(ASCII_EXT$,k)>0)&&(byte(ASCII_EXT$,k)<128)){Makestring(symb,"%04X",byte(ASCII_EXT$,k));} //latin & numeric &not printable else if(byte(ASCII_EXT$,k)>191){Makestring(symb,"%04X",848+byte(ASCII_EXT$,k));}//printable Curillic UCS2$=UCS2$+symb; if(k=70){break;} } Return (UCS2$); } 5.Далее отправляем выше описанным способом to_modem$="AT+CMGS=380XXXXXXXXX\x0D"+SMS_CONVERTOR("Ваше сообщение")+"\x1A"; Понятное дело, что номер телефона и сообщение можно подставлять через переменные s+ модуля или используя STRING_INPUT Это все для 2-серии, если на 3 серии не удастся получить сообщение в ASCII, то конвертор надо будет немного поправить для преобразований "\x04\x10" к виду "0410" и т.п. Впрочем производитель не озвучил возможность отправки в текстовом варианте, а настаивал на цифровом (PDU), так что надо проверять: Radiofid support пишет: Здравствуйте! Кириллица поддерживается только в PDU режиме. Последовательность AT команд: ATE0 Отключение Эха AT+CMEE=2 Включение расширенного отчета об ошибках. AT+CMGF=0 Перевод смс в pdu режим AT+CMGS=17 Кол-во символов поделенное на 2 минус 1 0001000B910789674523F100040474657374 Сообщение в DPU режиме Далее CTRL+Z http://rednaxela.net/pdu.php Генератор смс в PDU

marty_iron: всплало 3 проблемы но русское смс я получил))) но получил я его когда сам без функции отправил сообщение из примера - 041F04400438043204350442 а не ясны пока такие моменты))) 1. В каком виде надо писать русские буквы в функцию? 2. В примере "AT+CSMP=1,167,0,8\x0D", но на это он выдает ошибку, а на "AT+CSMP=17,167,0,8\x0D" ошибку не выдает. И третье - если до ввода номера ввести to_modem="AT+CSCS=UCS2\x0D"; он на номер выдает ошибку. Я сделал до номера to_modem="AT+CSCS=GSM\x0D"; а после номера to_modem="AT+CSCS=UCS2\x0D"; И идет без ошибки

Вячеслав: AT+CSMP=1,167,0,8 Это опечатка у автора по 2 ссылке. Там 17 конечно должно быть а не 1. 17 означает, что следующее поле VP(то которое =167) будет содержать данные. 1 - тоже применимо и входит в состав 17, но тогда второго поля не должно быть. Наверное, так и правильно что USC2 режим уже после номера. Иначе номер и команду его содержащую, наверное тоже потребовалось бы преобразовать в USC2. У меня то нет модема попробовать. Хотя может все таки номер в кавычках попробовать Вам. Вместо кавычек используйте \x22. Можете попробовать всю команду через конвертер пропустить чтоб каждый раз не переключать GSM/UCS2. send_string$="AT+CMGS=\x22+"+Number$+"\x22\x0D"+Message$+"\x1A"; to_modem$=SMS_CONVERTOR(send_string$); Буквы в функции должны быть в расширенной ASCII, если имеется ввиду SMS_CONVERTOR. Я проверял функцию в дебагере, подавая на serial вход русские буквы. Т.е. для слова Привет должно быть вида: \xCF\xF0\xE8\xE2\xE5\xF2 А вы как подавали?

marty_iron: Вячеслав а что вообще означает каждая из цифр AT+CSMP=1,167,0,8?

marty_iron: Вячеслав а я подавал - \x8F\x90\x88\x82\x85\x92 - и получал что функция ничего не выдавала... у меня может какая-то не такая таблица?

Вячеслав: 1.AT+CSMP=1,167,0,8 это скорее всего опечатка, я уже писал. Правильно AT+CSMP=17,167,0,8 Формат: AT+CSMP=<fo>,<vp>,<pid>,<dcs> click here fo=17 составное значение: указывает что поле vp присутствует и сообщение от MS к SC (от модема к сервисному центру) vp=167 кодирует длительность действия сообщения (24ч) pid=0 используемый протокол (значение 0 используют все в примерах, в доке оно не описано, но и других подходящих вашему случаю значений нет) dcs=8 способ кодировки данных для UCS2 (8-определяет что используется кириллица Так пишут в интернете, в доке по AT командам варианты на это поле не расшифрованы) 2. \x8F это из кодировки cp866, а надо Win-1251(cp1251). Как вы вообще умудрились получить cp866? Прямо в hex что ли вводили? Расширенная ASCII click here 3.Модуль преобразования из примера click here

marty_iron: Вячеслав спасибо!! ну я просто нашел в гуле - расширенная ascii таблица, и не думал что их несколько...

marty_iron: А не подскажите как сделать так, чтобы по приходу на номер модема, подключенного к крестрону, например смс "ОК" - в крестроне появлялся некий единичный импульс?

Вячеслав: Пример (идея) с обратным запросом был описан по ссылке которую я уже приводил click here: Для реализации вышеупомянутой логики от модема требуется: прочитать SMS из памяти, удалить SMS из памяти (чтобы не скапливались). Для чтения сообщений использовал команды AT+CMGR и AT+CMGL (их краткое описание приводилось ранее). Чтение всех сообщений будет выглядеть как: AT+CMGF=1 [Enter] AT+CMGL="ALL" [Enter] +CMGL: 6,"REC READ","778467",,"11/09/03,18:49:40+16" 007700770077002E006D00740073002E00720075 +CMGL: 7,"REC READ","+79261234567",,"11/10/18,18:38:00+16" 04220435044104420020043F044004380435043C043000200073006D0073002004410 43E043E043104490435043D04380439002100200421043C04410020043D043D043D04 3004340430003F0021003F00210028002D005F002D00290020 [Enter] Здесь всё проще чем было раньше. Каждое сообщение состоит из 2х строк, в первой содержатся данные о сообщении (такие как: от кого, когда, номер сообщения), а во второй сам текст сообщения (опять таки в кодировке UCS, функция UCSToAnsi приводилась выше). Чтение одного сообщение осуществляется как: AT+CMGF=1 [Enter] AT+CMGR=7 [Enter] +CMGR: "REC READ","+79261234567",,"11/10/18,18:38:00+16" 04220435044104420020043F044004380435043C043000200073006D0073002004410 43E043E043104490435043D04380439002100200421043C04410020043D043D043D04 3004340430003F0021003F00210028002D005F002D00290020 [Enter]marty_iron пишет: Аналогичным образом происходит и удаление сообщений. Если например в моём случае отправить команду AT+CMGD=7, то при следующем AT+CMGL=«ALL» я уже не увижу сообщение номер 7, т.к. оно будет удалено. Т.е. надо будет 1.Отправить вышеуказанные команды на чтение смс из памяти модема 2.Получив на них ответ записать его в текстовую переменную (str$) 3.Искать вложение "OK" в этой переменной if (find("041E041A",str$)>0){pulse(1,out_ok;} //при успешном поиске отправляется импульс на digital_output OUT_OK 041e и 041a это "ОК" в кодировке UCS2 для смс рассылок

marty_iron: Вячеслав но что сделать, если неизвестно, когда придет эта смс? ну т е система работает, и в какой то момент может быть прислано смс - и надо что-то делать

Вячеслав: Варианта по крайней мере 2: 1.Посмотреть выдает ли что то модем в COM порт во время прихода СМС, если да то сделать обработчик этого события CHANGE - find- отправка команд на считывание с модема 2.Периодически (раз в 10с например) посылать команды на чтение сообщений и осуществлять в ответах поиск ОК P.S Правильнее str$ (from_modem) обьявить как BUFFER_INPUT

marty_iron: не знаю, но с чтением пока ничего не удается вот например команда на удаление AT+CMGD=7, при ее отправе а потом чтение всех - он напротив удаленных смс пишет что они UNREAD, а при следующем опросе они опять на месте

Вячеслав: Команда AT+CMGD=7 удаляет сообщение с номером 7. Оно у Вас есть? (Что выдает AT+CMGL="ALL" чтение всех ) UNREAD -статус непрочитанного сообщения и к удалению отношения не имеет. Тут есть варианты параметров команд может пригодится click here При приеме СМС модем как то сообщает об этом (в дебагере видно на from_modem$ или что там у Вас за название RX)?

marty_iron: Вячеслав ну как я заметил тестируя - я вводил команду удаления 28, 29, 11, 8 - после этого я прочитал - они все переместились к конец списка со статусом непрочитанных - потом при следующем опросе AT+CMGL="ALL" они снова прочитанные и не в конце списка и еще странно - но новые смс получают какие-то странные номера, вот сейчас посл смс получило номер 2 - т е +CMGL: 2,"REC READ","778467",,"11/09/03,18:49:40+16" 007700770077002E006D00740073002E00720075 ну и самое печальное - при получении смс с RX не приходит ничего...

Вячеслав: Для удаления точно используете команду AT+CMGD=4 ??? Пробуйте AT+CMGD=4,0 То что после второй операции чтения, сообщение меняет статус с UNREAD на READ вполне логично, ведь вы его только что прочитали командой AT+CMGL="ALL" Есть еще подозрение что формат "AT+CMGD=4" доступен только в режиме PDU ( AT+CMGF=0), а в текстовом режиме доступны лишь варианты для команды AT+CMGDA. Таким образом можете попробовать удалять сообщения в варианте AT+CMGD=4 предварительно переключив в режим PDU: AT+CMGF=0 AT+CMGD=4

marty_iron: Вячеслав похоже вы правы! стал удалять но как вы это поняли? но это поразительный момент! в момент прихода смс - ничего не происходит на Rx. И совершенно непонятно как по этому приходу смс действовать... Ведь на сисмке уже могут быть смс типа Ок - и как он поймет, какая пришла только что? разве что пробовать часто опрашивать и смотреть какое Unread? или каждый раз после прочтения удалять сразу его? а может можно его как-то заставить отправлять текст на рх при получении?

Вячеслав: marty_iron пишет: но как вы это поняли? Если речь про PDU то навела на мысль вот эта фраза: если выбран режим PDU, то параметр «ALL» даст ошибку Что означает в текстовом режиме управляй СЛОВЕСНЫМИ командами типа "ALL", а цифровом ЦИФРОВЫМИ типа "0,1" По поводу СМС пишут однако: По умолчанию все сообщения сохраняются на сим карту. При поступлении сообщения придет сообщение: +CMTI: «SM»,1 где 1 - номер сообщения Если с вашим это не так, либо рыть команды которые отвечают за это уведомление (лучше сразу у сапорте у производителя поинтересоваться), либо полингом придется считывать постоянно.

Вячеслав: Пробуйте AT+CMTI=1 и AT+CNMI=1,1 Еще пишут что кода на SIM нет места сообщение не приходит. Так что удаляйте лишние смс и может станет статус о приеме присылать +CMTI: «SM»,1

marty_iron: Вячеслав спасибо! ну да, вот когда приходит новое - ничего не происходит но если опросить ALL то новое будет в самом конце списка и непрочитанным... не происходит При поступлении сообщения придет сообщение: +CMTI: «SM»,1 1, — номер полученного сообщения.

Вячеслав: 1.Удалять пробовали? При достижение максимального количества смс, новые вытесняют старые, но подтверждение уже не выдается. 2.Команды AT+CMTI=1 AT+CNMI=1,1 пробовали? (это уже во вторую очередь, если удаление не поможет)

marty_iron: Вячеслав пишет: Пробуйте AT+CMTI=1 и AT+CNMI=1,1 Еще пишут что кода на SIM нет места сообщение не приходит. Так что удаляйте лишние смс и может станет статус о приеме присылать +CMTI: «SM»,1 спасибо!!! с AT+CNMI=1,1 сработало, на первую выдал ошибку только у меня вида +CMTI: «МТ»,номер сообщения но где вы нашли эту команду? в том тексте ее нет...

Вячеслав: В интернете ) По слову +CMTI: «SM»,

marty_iron: Вячеслав тут проблема появилась)) вот команда AT+CSMP=17,167,0,8 дает нам писать на кирилице но теперь после этой команды пропадает возможность отправлять смс на латинице))) он в ответ на сообщение пишет - ОК, но не отправляет его... есть какая-то команда. чтобы это вернуть??

Вячеслав: Посмотрите, в каком виде уходит сообщение в дебагере. Может функция SMS_CONVERTOR как то неверно отработала и сообщение ПУСТОЕ отправляется или типа того.

marty_iron: Вячеслав нет, там все уходит как надо но раньше вот такой командой сообщение отправлялось AT+CMGS=+380XXXXXXXXX\x0DVashe soobschenie\x1A а теперь нет там принцип такой - когда от отправляет, он сначала возвращает дубликат сообщения, а потом ОК и номер отправленного сообщения а в таком видео с кирилической кодировкой он пишет ОК и не пишет номер отправленного сообщения и не отправляет соответственно и все тесты говорят что AT+CSMP=17,167,0,8 мешает это сделать т е например я пытаюсь отправить просто слово hello - нет, а если прогнать его через SMS_CONVERTOR - то отправляет, но я точно могу сказать, что до манипуляций с кирилицей отправлялся и просто hello

Вячеслав: ??? Так значит отправляет все таки. Так почему не хочется конвертером воспользоваться и отправлять хоть русские, хоть латинские, хоть в перемешку? Хочется длиннее 70 знаков что ли? Ведь опция 8 (AT+CSMP=17,167,0,8)требует преобразования к UCS2. Поэтому в ASCII и не отправляет. Пробуйте другие значения вместо 8 (описания данного параметра я не встречал, описан лишь в варианте =8 для отправки в кодировке UCS2)

marty_iron: Вячеслав да, нужно длиннее 70 я вроде нашел - работает при AT+CSMP=17,167,0,0 еще есть небольшой вопрос, может есть идея - в процессе тестов, когда все не работало, случались 3 раза ситуации (закономерность не понял), что после каких-то команд модем переставал отвечать на команды. Т е с RX переставало идти что-либо и помогала только перезагрузка модема как думаете что это могло быть? Спасибо

Вячеслав: Из предположений только ошибка текущего режима AT+CMGF=0/1 Мне сложно предполагать, я модем этот и в руках никогда не держал

marty_iron: Вячеслав пишет: String_Function SMS_CONVERTOR(string ASCII_EXT$) { integer k,m; string UCS2$[70],symb[2]; UCS2$=""; for (k=1 to len(ASCII_EXT$)) { if((byte(ASCII_EXT$,k)>0)&&(byte(ASCII_EXT$,k)<128)){Makestring(symb,"%04X",byte(ASCII_EXT$,k));} //latin & numeric &not printable else if(byte(ASCII_EXT$,k)>191){Makestring(symb,"%04X",848+byte(ASCII_EXT$,k));}//printable Curillic UCS2$=UCS2$+symb; if(k=70){break;} } Return (UCS2$); } а этот модуль точно рабочий? он вроде не конвертирует...

Вячеслав: Может и не рабочий. Сейчас уже не вспомню, почему. Но эта функция в моём конверторе закоменчена. Вместо неё сначала все в формат UTF16 приводится, потом уже в SMS формат конвертируется вот так: String_FUNCTION UTF16_TO_UCS2(string str) { integer k; string tmp$[1000],symb[2]; tmp$=""; for (k=1 to len(str)) { Makestring(symb,"%02X",byte(str,k)); tmp$=tmp$+symb; } if(len(tmp$)>280){tmp$=Left(tmp$,280);} //по 4 символа на выходе вместо одного. При ограничении SMS 140 байт (160 символов в 7 битной кодировке ASCII или 70 символов в UTF) 70x4=280 //но на выходе модуля ещё надо порезать до 255 (т.е.отрезать 6 символов) Return(tmp$); }

marty_iron: Вячеслав пишет: integer k; string tmp$[1000],symb[2]; ошибка вот тут. Должно быть symb[4], он ее обрезал неправильно засчет длины переменной

Вячеслав: Только отсыл не на ту функцию, тогда уж: string UCS2$[70],symb[2]; из функции UTF16_TO_UCS2(string str) Так как для UTF16_TO_UCS2(string str) 2 байта достаточно.



полная версия страницы