Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать файл по Bluetooth? по протоколу L2CAP 
:(
    Опции темы
MadSergei
  Дата 26.8.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



Привет всем!
Я всего несколько дней сижу на J2ME,так что не судите строго.
Тема следующая:

Мне надо передать файл по Bluetooth через мидлет. НО мой телефон НЕ поддерживает OBEX.
У меня на телефоне была прога для блюджекинга.Она передавала файлы по L2CAP.
Вчера попробовал передать файл и наткнулся на грабли.
Вот код:
Код

                try {
                    fileConn = (FileConnection) Connector.open("file://0:/MAD.vcf");
                    file = new byte[(int)fileConn.fileSize()]; 
                    L2CAPcon = (L2CAPConnection)Connector.open("btl2cap://0011F6000006:1");                  
                    int MTUSize = L2CAPcon.getTransmitMTU(); 
                    transmitBuffer = new byte[MTUSize];
                    while (index < file.length) { 
                    if ((file.length - index) < MTUSize) { 
                      System.arraycopy(file, index, transmitBuffer, 0, file.length - index); 
                    } else { 
                      System.arraycopy(file, index, transmitBuffer, 0, MTUSize); 
                    } 
                     L2CAPcon.send(transmitBuffer); 
                     index += MTUSize; 
                     for (int i=0; i<MTUSize; i++) transmitBuffer[i] = 0; 
                     } 
                     L2CAPcon.close(); 
                    } catch (Exception e) { }



Теперь - комменты:

Код

fileConn = (FileConnection) Connector.open("file://0:/MAD.vcf"); 


MAD.vcf - файл визитки (его и надо передать)

Код

L2CAPcon = (L2CAPConnection)Connector.open("btl2cap://0011F6000006:1");   

// 0011F6000006 - адрес блутуза на компе (для теста) !!! Это самая сомнительная строка,думаю всё из-за неё...!!!

При запуске мидлета телефон ничего НЕ спрашивает,а должен сначала спросить:
Читать файловую систему?,
а потом
Локальное соединение?

Люди,помогите...

 smile 

PS.

Скорее всего мой телефон поддерживает протокол 
"btspp://"
если у кого есть примеры передачи файлов по RFCOMM StreamConnection
 smile  давайте сюда же



Это сообщение отредактировал(а) MadSergei - 26.8.2007, 12:11
PM MAIL   Вверх
Antropoid
Дата 27.8.2007, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Для начала напиши в catch-блоке это:
Код

e.printStackTrace();

и скажи, какая ошибка у тебя вылетает и на какой строчке, а потом ужо дальше бум смотреть...


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
MadSergei
  Дата 27.8.2007, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



Ничего вообще не пишет,как будто не реагирует на нажатие "Послать"
PM MAIL   Вверх
MadSergei
Дата 27.8.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



нашёл где ошибка
поставил после каждой строчки
Код

stringItem.setText("1");
stringItem.setText("2");
::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::
stringItem.setText("7");

код выглядит так:
Код

  try {
stringItem.setText("1");
                    fileConn = (FileConnection) Connector.open("file://0:/MAD.vcf");
stringItem.setText("2");
                    file = new byte[(int)fileConn.fileSize()]; 
stringItem.setText("3");
                    L2CAPcon = (L2CAPConnection)Connector.open("btl2cap://0011F6000006:1");                  
stringItem.setText("4");
                    int MTUSize = L2CAPcon.getTransmitMTU(); 
stringItem.setText("5");
                    transmitBuffer = new byte[MTUSize];
stringItem.setText("6");
                    while (index < file.length) { 
                    if ((file.length - index) < MTUSize) { 
                      System.arraycopy(file, index, transmitBuffer, 0, file.length - index); 
                    } else { 
                      System.arraycopy(file, index, transmitBuffer, 0, MTUSize); 
                    } 
                     L2CAPcon.send(transmitBuffer); 
                     index += MTUSize; 
                     for (int i=0; i<MTUSize; i++) transmitBuffer[i] = 0; 
                     } 
                     L2CAPcon.close(); 
stringItem.setText("7");
                    } catch (Exception e) {
                    e.printStackTrace();
                    }




выполнение дошло до цифры 1 , т.е я думаю,что ошибка здесь:

Код

fileConn = (FileConnection) Connector.open("file://0:/MAD.vcf");

PM MAIL   Вверх
Dancer
Дата 28.8.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



Запусти на телефоне такой код:
Код


import javax.microedition.io.file.*;
.....
try {
    Enumeration listOfRoots = FileSystemRegistry.listRoots();
    Form form = new Form("List of Roots");

    while(e.hasMoreElements()) {
        String s = (String) e.nextElement();
         System.out.println("Root: "+s);
        form.append("Root: ").append(s).append("\r\n");
    }
} catch(Throwable t) {
    System.out.println(t);
    t.printStackTrace();
}
.....


мне кажется что ты не совсем корректно указываешь свои руты, чтобы добраться до файлика.
На чём смотришь приложение? (на аппарате, или же в эмуляторе, и в каком эмуле?)


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
MadSergei
Дата 28.8.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



Я смотрю на телефоне ( Siemens CX75 )
сейчас протестю
PM MAIL   Вверх
Antropoid
Дата 28.8.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Цитата(MadSergei @  28.8.2007,  13:15 Найти цитируемый пост)
Я смотрю на телефоне ( Siemens CX75 )


Цитата(Antropoid @  27.8.2007,  22:54 Найти цитируемый пост)
Для начала напиши в catch-блоке это e.printStackTrace();


Цитата(MadSergei @  27.8.2007,  23:33 Найти цитируемый пост)
Ничего вообще не пишет,как будто не реагирует на нажатие "Послать"


Вообще-то я имел ввиду написать e.printStackTrace(); на эмуляторе...И ваще странно, что ты начал разработку программы сразу с запусков на девайсе...Юзай WTK для начала.




--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
MadSergei
Дата 28.8.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



Цитата

Вообще-то я имел ввиду написать e.printStackTrace(); на эмуляторе...И ваще странно, что ты начал разработку программы сразу с запусков на девайсе...Юзай WTK для начала.

Я и писал на эмулятор,он ничего не выдал,как и телефон

Цитата

Код

import javax.microedition.io.file.*;
.....
try {
    Enumeration listOfRoots = FileSystemRegistry.listRoots();
    Form form = new Form("List of Roots");

    while(e.hasMoreElements()) {
        String s = (String) e.nextElement();
         System.out.println("Root: "+s);
        form.append("Root: ").append(s).append("\r\n");
    }
} catch(Throwable t) {
    System.out.println(t);
    t.printStackTrace();
}
.....


пришлось немного поменять код,но
Этот код только на эмуле пашет.
На телефоне даже не запускается прога пишет "подождите" и всё


------------------------------------------------------------

Отловил ошибку:

Код

MIDlet initialization failed:
java.lang.NoClasDef
FoundError:
javax/microedition/io/file/FileConnection

------------------------------------------------------------

Новость:

Оказалось мой телефон НЕ поддерживает JSR-75
Я так понимаю,что от FileConnection придётся отказаться.

НО как тогда прочитать файл?

А можно ли создать TXT файл с определённым текстом (юзер вводит) и его послать?

З.Ы.
У меня есть 2 файловых менеджера на телефоне и оба они читают и исправляют файловую систему,т.е. файл можно как-то прочитать

Это сообщение отредактировал(а) MadSergei - 28.8.2007, 15:08
PM MAIL   Вверх
Antropoid
Дата 28.8.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Siemens CX75 не поддерживает jsr-75 (pабота с файловой системой телефона)

Цитата(MadSergei @  28.8.2007,  14:47 Найти цитируемый пост)
Я и писал на эмулятор,он ничего не выдал,как и телефон

Оч. странно, что эмулятор не бросает Эксцепшн...ну напиши там не Exception, а Throwable, - помотрим шо будет...


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
MadSergei
Дата 28.8.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



Цитата

Новость:

Оказалось мой телефон НЕ поддерживает JSR-75
Я так понимаю,что от FileConnection придётся отказаться.

НО как тогда прочитать файл?

А можно ли создать TXT файл с определённым текстом (юзер вводит) и его послать?

З.Ы.
У меня есть 2 файловых менеджера на телефоне и оба они читают и исправляют файловую систему,т.е. файл можно как-то прочитать


Добавлено через 53 секунды
Цитата

Код

import javax.microedition.io.file.*;
.....
try {
    Enumeration listOfRoots = FileSystemRegistry.listRoots();
    Form form = new Form("List of Roots");

    while(e.hasMoreElements()) {
        String s = (String) e.nextElement();
         System.out.println("Root: "+s);
        form.append("Root: ").append(s).append("\r\n");
    }
} catch(Throwable t) {
    System.out.println(t);
    t.printStackTrace();
}
.....



Этот код на эмуле пашет,а на теле - нет

Добавлено через 4 минуты и 57 секунд
Цитата

Оч. странно, что эмулятор не бросает Эксцепшн...ну напиши там не Exception, а Throwable, - помотрим шо будет... 

Эмуль по-прежнему не реагирует,а тел сразу ошибку видит
Код

MIDlet initialization failed:
java.lang.NoClasDef
FoundError:
javax/microedition/io/file/FileConnection

PM MAIL   Вверх
Antropoid
Дата 28.8.2007, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Какой эмулятор ты используешь?



--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
MadSergei
Дата 28.8.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



Wireless Toolkit'овский
стандартный вроде
ещё написано DefaultColorPhone
PM MAIL   Вверх
MadSergei
Дата 28.8.2007, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



А что если попробовать создать файл,поместить его в rms,а затем уже читать из rms и отсылать?
PM MAIL   Вверх
Antropoid
Дата 28.8.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Как предлагаешь создавать файл, если твой телефон не поддерживает jsr-75?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
MadSergei
Дата 28.8.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 22.8.2007
Где: СПБ

Репутация: нет
Всего: нет



Вот программа BT Explorer
jar
jad
она делает всё,что мне надо
посмотри в настройках создаёт файл
и рассылает его

З.Ы.

ICQ автора: 32-241-016
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0750 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.