|
|
  |
Проблема с USSD запросами в модеме WS6318 |
|
|
|
May 12 2015, 07:09
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 9-11-08
Пользователь №: 41 482

|
Здравствуйте.
Столкнулся с такой проблемой в модеме WS6318. Модем WS6318 работает с SIM-картой от оператора МТС. Версия прошивки модема: R32.0.201307021520.WS6318 020713 15:20 При работе с модемом ему отправляется USSD запрос баланса. На этот запрос приходит некорректный ответ. Лог обмена AT-командами следующий: AT+CUSD=1,"*100#",8 OK +CUSD: 0,"?????:2,99? ",72 Т.е. вместо текста приходят знаки вопроса.
Если данный запрос отправить на модем WISMO228, то лог выглядит так: AT+CUSD=1,"*100#",8 OK +CUSD: 0,"041C0438043D04430441003A0032002C0039003904400020",72 Т.е. ответ передётся в юникоде. Если его декодировать, то текст следующий: "Минус:2,99р "
Если эту SIM-карту вставить в телефон и отправить такой же USSD-запрос, то отвечает он "Минус:2,99р "
Таким образом, у модема WS6318 с прошивкой R32 есть проблема с обработкой USSD ответа от оператора, если он отвечает кириллицей. В прошивке L31 ответ приходи как и положено в юникоде. Сейчас я вижу 2 решения проблемы: 1. Использовать прошивку L31, со всеми недокументированными "особенностями" этой версии. Плюс перепрошивать в будущем все покупаемые модемы. 2. Запрашивать USSD на латинице. Но у операторов по разному переключается раскладка: у МТС, например, достаточно отправить запрос баланса на латинице "#100#", а для Мегафона нужно сначала отдельно переключить раскладку "*105*0#" и уже потом запрашивать баланс. Как у других операторов пока не ясно.
Подскажите, пожалуйста, может быть эту проблему можно решить каким-то другим способом.
|
|
|
|
|
May 12 2015, 07:44
|

Группа: Участник
Сообщений: 8
Регистрация: 12-02-14
Пользователь №: 80 474

|
Добрый день, на WS6318, у вас отображается в текстовом режиме, а в WISMO228 в PDU режиме. попробуйте установить PDU режим - AT+CMGF=0
|
|
|
|
|
May 12 2015, 08:06
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 9-11-08
Пользователь №: 41 482

|
Цитата(SierraWireless @ May 12 2015, 10:44)  Добрый день, на WS6318, у вас отображается в текстовом режиме, а в WISMO228 в PDU режиме. попробуйте установить PDU режим - AT+CMGF=0 Вы ошибаетесь. Журнал обмена с WS6318: AT+CMGF? +CMGF: 0 OK AT+CUSD=1,"*102#",8 OK +CUSD: 0,"???????? ???????? ??? ????? ??????? ????????: *110*45#?????",72 Т.е. вместо юникода - знаки вопроса.
|
|
|
|
|
May 12 2015, 11:16
|
Знающий
   
Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594

|
Не наблюдалось такого. Он, очевидно, пытается перекодировать в какой то локальный алфавит. AT+CMGF=0 на сколько я знаю влияет только на SMS. И еще, я отправляю AT+CUSD=1,"*102#" OK ... Приведу свои команды ему, сравните: Код ATCmdWRPR(5, PHYSICAL_PORT, "ATI\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CGMI\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CGMM\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CGMR\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CGSN\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+IFC=0,0\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "ATV1\r", 200, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CRC=0\r", 200, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+PSSLEEP=1,1\r", 200, 2, "OK\r\n", "ERROR\r\n"); // тут перевожу в режим CMUX и далее через него ATCmdWRPR(5, VIRTUAL_PORT_2, "AT+CLIP=1\r", 200, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, VIRTUAL_PORT_2, "AT+CMGF=0\r", 200, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, VIRTUAL_PORT_2, "AT+CNMI=2,1,0,0,0\r", 500, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(30, VIRTUAL_PORT_2, "AT+CPMS=\"SM\",\"SM\",\"SM\"\r", 500, 2, "OK\r\n", "ERROR\r\n");
|
|
|
|
|
May 12 2015, 11:35
|

Группа: Участник
Сообщений: 8
Регистрация: 12-02-14
Пользователь №: 80 474

|
Цитата(stapleman @ May 12 2015, 11:06)  Вы ошибаетесь. Журнал обмена с WS6318: AT+CMGF? +CMGF: 0 OK
AT+CUSD=1,"*102#",8 OK +CUSD: 0,"???????? ???????? ??? ????? ??????? ????????: *110*45#?????",72
Т.е. вместо юникода - знаки вопроса. Уточните пожалуйста, какой тип отображения символов используется команда - AT+CSCS? выставите AT+CSCS="UCS2"
|
|
|
|
|
May 12 2015, 11:53
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 9-11-08
Пользователь №: 41 482

|
Цитата(SierraWireless @ May 12 2015, 14:35)  Уточните пожалуйста, какой тип отображения символов используется команда - AT+CSCS? выставите AT+CSCS="UCS2" Попробовал - не помогло. Журнал обмена следующий: AT+CSCS="UCS2" OK AT+CUSD=1,"*102#",8 +CME ERROR: operation not allowed // попробовал и такой вариант: AT+CUSD=1,"*102#" +CME ERROR: operation not allowed Ради любопытства попробовал проделать то же самое с версией L31 - результат с использование UCS2 такой же, т.е. возвращает "+CME ERROR: operation not allowed"
Сообщение отредактировал stapleman - May 12 2015, 11:57
|
|
|
|
|
May 14 2015, 04:53
|

Евгений
  
Группа: Участник
Сообщений: 341
Регистрация: 13-10-11
Пользователь №: 67 706

|
Цитата(stapleman @ May 12 2015, 15:53)  Попробовал - не помогло. Журнал обмена следующий: AT+CSCS="UCS2" OK
AT+CUSD=1,"*102#",8 +CME ERROR: operation not allowed
// попробовал и такой вариант: AT+CUSD=1,"*102#" +CME ERROR: operation not allowed
Ради любопытства попробовал проделать то же самое с версией L31 - результат с использование UCS2 такой же, т.е. возвращает "+CME ERROR: operation not allowed" Кирилл, можно я вмешаюсь? ) Если ввели CSCS=UCS2, то и номер в CUSD надо подавать в юникоде.
--------------------
|
|
|
|
|
May 20 2015, 06:07
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 9-11-08
Пользователь №: 41 482

|
Цитата(Цырен. @ May 14 2015, 07:53)  Кирилл, можно я вмешаюсь? ) Если ввели CSCS=UCS2, то и номер в CUSD надо подавать в юникоде. Заработало, спасибо за помощь. В итоге вместо AT+CUSD=1,"*102#",8 использую AT+CSCS="UCS2" AT+CUSD=1,"002A0031003000320023",8
Сообщение отредактировал stapleman - May 20 2015, 06:47
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|