Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > smslib & sendCustomATCommand


Автор: wtbh 18.5.2009, 14:20
Всем привет.
Пользуюсь smslib. Нужно при помощи ussd получить баланс сим карты. Покопавшись нашел только patch который лежит здесь http://code.google.com/p/smslib/issues/detail?id=216&q=ussd&colspec=ID%20Type%20Status%20Component%20Milestone%20Priority%20Stars%20Owner%20Summary
Ошибка происходит на строке        ussdResponse = getModemDriver().getResponse();  с ошибкой org.smslib.TimeoutException: No response from device.
Код

    public String sendUSSDCommand(String ussdCommand) throws GatewayException, TimeoutException, IOException, InterruptedException {        
        String command = "AT+CUSD=1,\"" + ussdCommand + "\"\r";
        String ussdResponse = sendCustomATCommand(command);
        if (!ussdResponse.contains("OK")) {
            return null;
        }
        ussdResponse = getModemDriver().getResponse(); 
        char esc = 0x1b;
        command = "" + esc + '\r';
        getModemDriver().write(command);
        getModemDriver().clearBuffer();        
        String response;        
        String regex = "\"(.*)\"";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(ussdResponse);
        if (matcher.find()) {
            response = matcher.group(1);
        } else {    // return the whole string if nothing found
            response = ussdResponse;
        }        
        return response;        
    }

Кто нибудь пробовал этим пользоваться, или хотя бы кто нибудь пытался AT командами пользоватся USSD?

Автор: rimidal 20.5.2009, 14:41
А какой девайс используешь, как соединен с компом (USB, COM-порт, ...), какая ОС?

Если речь идет о телефоне соединенном с компом через com-порт то:

Я использовал comport driver от Sun и AT команды моего телефона (Samsung X100). Для проверки команд использовал программу EasyPort (http://softel.narod.ru/easyport.html).

Бывает так что телефон (GSM модем) не поддерживает какие-то команды или формат команды немного видоизменен.
Еще для отладки использовал PortMon - сканер com порта.
Работал под виндой. 

Попробуй сначала сканировать. Что у тебя отсылается/принимается на com порт?
Проверь команды с помощью EasyPort.

P.S. Иногда случается,  что сам телефон (GSM модем) зависает. 


Автор: barin_Student 21.5.2009, 06:02
Я просто посылал команду и читал ответ, 
нет ответа, послыка еще раз, нет ответа три раза перегружал можем... 
Как вариант , можно наверное увеличить время на ожидание Response , просто неуспевает опсос ответить за твое установленно время(как вариант)
Что такое smslib?

Автор: cra6 15.6.2009, 18:42
Если не сложно опишите, пожалуйста, толком, пошагово как этот smslib ставится,  компилится.Убил полдня, ничего не получается. smile 

Ура.
Поставился и даже заработал))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)