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

Смс от Crestron

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

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

Вячеслав: В интернете ) По слову +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 байта достаточно.



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