Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Где смотреть log ?


Автор: Гость_Name 6.7.2005, 15:39
На емуляторе все работает, на трубе вылетает при переходе на следуюшее окно.
Где можно посмотреть printStackTrace ?
Или куда вообше пишется System.err ?

Пардон если в FAQ и в форуме не нашел.


Автор: Dancer 7.7.2005, 11:07
подключи свой девайс к гипертерминалу (HiperTerminal в Win). Там увидешь всю инфу, если конечно ты можешь свою трубу как модем использовать. Или нужно будет написать своё приложение, которое сможешь работать через COM. В своём мидлете сначала делаешь соединение с телефоном через COM API, а далее всё что тебе телефон будет кидать, то ты сможешь совим приложением выводить куда хочешь и как хочешь.

Кстати, труба какая?

Автор: Гость_Name 7.7.2005, 20:59
Siemens SX1,
спасиба я попробую.

Автор: Corwin 10.8.2005, 14:20
Та же проблема. Телефон Nokia 7610. Подцепился гипертерминалом к девайсу "Nokia 7610 USB #2". Отзывается, на ATI3 выдает: Nokia 7610. Однако System.out и System.err уходит в пустоту. Программа стартует и тут же вываливается, налицо какой-нить exception, вот только как понять, какой? На эмуляторах все функционирует... Получается, что нет возможности выяснить, что там внутрях происходит?

Автор: Dancer 10.8.2005, 15:16
В HyperTerminal нужно выбирать не USB чего-то там. А конкретный COM порт, на которм у тебя будет отображаться мобилка в Диспетчере устройств.

Код для активации подсоединения кабеля к мобилке, для логирования:
Код

                    new Thread() {
                        public void run() {
                            Form form = new Form("");
                            form.append("Insert cable");
                            disp.setCurrent(form);
                            try {
                                Logger.setCommLogger(new PrintStream(Connector.openOutputStream("comm:com0;baudrate=19200")));
                                Logger.printlnCOMM("\n\rCable attached!!!");
                            } catch (Exception e) {
                                System.err.println(e.toString());
                            }
//здесь делаешь вывод своей главной формы, или ещё чего-то что нужно будет показать после подсоединения кабеля.

                        }
                    }.start();


Класс Logger:
Код

import java.io.PrintStream;

public class Logger {
    private static PrintStream commLog = null;
    private static PrintStream systemLog = null;

    private Logger (PrintStream commOs, PrintStream systemOs) {
        commLog= commOs;
        systemLog = systemOs;
    }

    public static void println(String str) {
        printlnCOMM(str);
        printlnSystem(str);
    }

    public static void setLogger(PrintStream commOs, PrintStream systemOs) {
        if(commLog == null) commLog = commOs;
        if(systemLog == null) systemLog = systemOs;
    }

    public static PrintStream getCommLogger() {
        return commLog;
    }

    public static PrintStream getSystemLogger() {
        return systemLog;
    }

    public static void setCommLogger(PrintStream os) {
        commLog = os;
    }

    public static void setSystemLogger(PrintStream os) {
        systemLog = os;
    }

    public static void printlnCOMM(String str) {
        if(commLog != null) {
            commLog.println(str + "\r");
        } else System.out.println("COMM port can't logged. Log put in System.out: "+str + "\r");
    }

    public static void printlnSystem(String str) {
        if(systemLog != null) {
            systemLog.println(str + "\r");
        } else System.out.println("can't logged to selected SYSTEM logger. Log put in System.out: "+str + "\r");
    }
}

Автор: javastic 11.8.2005, 09:28
Цитата(Corwin @ 10.8.2005, 14:20)
Та же проблема. Телефон Nokia 7610. Подцепился гипертерминалом к девайсу "Nokia 7610 USB #2". Отзывается, на ATI3 выдает: Nokia 7610. Однако System.out и System.err уходит в пустоту. Программа стартует и тут же вываливается, налицо какой-нить exception, вот только как понять, какой? На эмуляторах все функционирует... Получается, что нет возможности выяснить, что там внутрях происходит?


А в Alert в момент исключения почему ошибку не вывести?
Мог бы ещё код сюда запостить, не весь, а там где у тебя сомнения в работе.
Трудно так в кошки-мышки играть.

Автор: Corwin 11.8.2005, 12:04
Спасибо за советы, но ничего не получилось... Во всех портах по-прежнему тишина. Похоже, USB с точки зрения телефона вовсе не comm0, а разбираться в апи лениво. Перехват System.out/err не удался. И uncaught exceptions так и останутся за кадром. Все сообщения заменю на алерты, глядишь, что-нить накопаю...

Автор: Dancer 11.8.2005, 13:42
попробуй comm1 и у меня такое предчуствие, что на Nokia comm0 зарезирвирован под какую то хрень, может быть даже под ИК.
Кстати, посмотри перед тем как начнёшь что-то делать, что какие порты в телефоне тебе доступны, ниже приведён небольшой код, думаю разобраться не сложно:

Код

  Form form = new Form("Comm Ports");
  String  names = System.getProperty("microedition.commports");
  int token=0;

  while((token = names.indexOf(","))>0) {
      String portName = names.substring(0,token);
      names = names.substring(token + 1, names.length());
      form.append("PortName = "+portName);
  }
   form.append("PortName = "+ names);

   Display.getDisplay(this).setCurrent(form);


Автор: javastic 11.8.2005, 15:45
А так же, если у тебя телефон не древний, то в нём должен быть модем, который должен был установиться в Винде. Вот там ты и можешь посмотреть как твой порт называется и какой он.
smile

Автор: Corwin 12.8.2005, 12:19
2 Dancer: на емуляторе код отрабатывается на ура, а на телефоне System.getProperty("microedition.commports") отдает null... Типа, нету портов ваще.

2 javastic: так тоже делал - бесполезняк, тишина... Да и откуда там чему взяться, если в порт никто ниче не пишет.

А все же, есть какой-нить способ перехватить printStacktrace? getMessage() дает маловато инфы...

Автор: javastic 12.8.2005, 12:26
Попробуй ещё потестировать на различных эмуляторах, может где ещё вывалится с такой ошибкой?

Во! Мысль пришла. Я не знаю какой эмулятор ты используешь, но всё же. Я пользую СониЕриксон, там с обычным эмулятором установился ещё один, который называется SonyEricsson (Device on debug).
Если при разработке выбрать его, то программа запускается прямо на телефоне и прямо на нём можно делать отладку!
Так ты 100% поймаешь своего жучка.

И ещё проверь, нормально ли ты установил дрова в ОС к модему своего телефона. У меня тоже был глюк, иногда через термиал просто прекращался опрашиваться модем, приходилось перезапускать телефон. Драйвера переставил и всё стало Ок.
smile


Автор: Corwin 12.8.2005, 13:14
На других эмуляторах тоже все работает без проблем. Да в общем это и не важно, багу я все равно найду, не мытьем так катаньем :-) А вот на будущее, знать бы как стандартный вывод перехватить...

Автор: Dancer 12.8.2005, 14:45
Цитата(javastic @ 11.8.2005, 15:45)
А так же, если у тебя телефон не древний, то в нём должен быть модем, который должен был установиться в Винде. Вот там ты и можешь посмотреть как твой порт называется и какой он.
smile

как раз таки это будет тот порт, на которм компутер определяет телефон, но а я говорит про порт, который определяется в самом телефоне, то есть когда мы шнурок подсовываем, телефон долже же с портом работать и ему по-хрену мороз на какой-там порт его комп определяет. У телефона свои COMM порты, они и начинают с 0 нумероваться.
Но если выводится null, то скорее всего из Java у этой мобилки нету поддержки передачи данных через шнурок.

Автор: javastic 12.8.2005, 14:55
Ну так правильно, за коннект и обмен данными должна отвечать какая-то программа (менеджер, драйвер), она когда устройство находит то прописывает у себя на какой порт принимать/отдавать с устройства и на какой порт компа принимать/отдавать. Терминальная программа уже ведет обмен с портом компа. Так что определенный модем трубы опознается в том случае если порт был найден Виндой (например). И в систему эта информация записывается. К сожалению не могу показать, т.к. у меня сейчас старый монохромный Филипок, который вообще сложно куда либо подключить.

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