реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема с USSD запросами в модеме WS6318
stapleman
сообщение May 12 2015, 07:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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#" и уже потом запрашивать баланс. Как у других операторов пока не ясно.

Подскажите, пожалуйста, может быть эту проблему можно решить каким-то другим способом.
Go to the top of the page
 
+Quote Post
SierraWireless
сообщение May 12 2015, 07:44
Сообщение #2





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



Добрый день,
на WS6318, у вас отображается в текстовом режиме, а в WISMO228 в PDU режиме.
попробуйте установить PDU режим - AT+CMGF=0

Go to the top of the page
 
+Quote Post
stapleman
сообщение May 12 2015, 08:06
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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

Т.е. вместо юникода - знаки вопроса.
Go to the top of the page
 
+Quote Post
kan35
сообщение May 12 2015, 11:16
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 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");
Go to the top of the page
 
+Quote Post
SierraWireless
сообщение May 12 2015, 11:35
Сообщение #5





Группа: Участник
Сообщений: 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"
Go to the top of the page
 
+Quote Post
stapleman
сообщение May 12 2015, 11:53
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Цырен.
сообщение May 14 2015, 04:53
Сообщение #7


Евгений
***

Группа: Участник
Сообщений: 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 надо подавать в юникоде.


--------------------
Go to the top of the page
 
+Quote Post
stapleman
сообщение May 20 2015, 06:07
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01424 секунд с 7
ELECTRONIX ©2004-2016