1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Программирование на Java 2 Micro Edition

Тема в разделе "Программирование", создана пользователем DirectX, 27.07.06.

  1. DirectX

    DirectX Активный участник

    1.880
    4
    Хотелось бы услышать мнение тех, кто работал с сабжем. Интересует несколько моментов.

    Дано:
    1. Аппаратура:
    1.1 SonyEricsson K500i, поддерживающий J2ME,
    1.2 Микроконтроллер + RS-232 конвертер последовательного порта.
    2. Программы:
    2.1 SUN Java 2 SDK (необходимо для п.2),
    2.2 Sony Ericsson J2ME SDK.

    Надо:
    В общем случае сделать канал передачи данных через мобильник. Например, данных о срабатывании датчиков, подключенных к микроконтроллеру. Это уже дело десятое что эти данные будут из себя представлять - в общем случае серия байтов.

    Тему пока не разрабатывал, поэтому извиняюсь за дилетантские вопросы, если что.

    Итак, вопросы:

    1. Насколько я полагаю, последовательный порт должен иметь место на интерфейсном разъёме. Интересует вопрос о его доступности из программы на J2ME. Насколько я бегло понял, вторая версия явы поддерживает его программирование через пространство имён javax.microedition.io.CommConnection. Также встречается упоминание про javax.comm. Куда копать и поддерживаются ли данные интерфейсы конкретно в данной модели?

    2. Если так или иначе последовательный порт использвать нельзя. Можно задействовать Bluetooth (правда не на этой модели, но это не столь принципиально) - даже пример такой в SDK есть. Какие имеются простые решения для микроконтроллера на этот счёт? Serial<->BT микросхемы какие есть?

    3. Ну допустим, данные так или иначе переданы в программу. Нужно их отправить дальше. Как это лучше сделать?

    а) Через SMS или MMS. Вполне реально, и во многих случаях именно это и нужно. Какие могут здесь быть грабли?

    б) Через GPRS. Вот тут не вполне понятна концепция. Как лучше и какие грабли тут ждут?


    Посоветуйте какие-нибудь ресурсы на эту тему, плиз.
     
  2. Beagle 2

    Beagle 2 Активный участник

    886
    0
    Класс CommConnection, конечно, в MIDP2 есть, но его функционал определяется производителем телефона. Если коротко - в SE K500i доступа из Java к последовательному порту нет, как и во всех остальных телефонах от SE. В телефонах от Nokia - есть, но только в самых последних, например, 6280 и E60. В Моторолах - есть практически во всех, но одна неприятность - COM-порт в них реализован поверх USB, да еще и через свой протокол, что, как минимум, требует внешнего девайса с USB-хостом. Пожалуй, более-менее реально задействовать для этих целей Siemens 65-й серии, где все есть, и без затей. :) Я не пробовал, но немцы обещали, что можно. :)
    Вживую таких пребразователей интерфейса не встречал, хотя вроде бы есть, например, LMX9820A от National Semi. Но насколько такая экзотика доставабельна у нас - не в курсе.
    Через SMS - проще пареной репы, практически на любом телефоне это возможно, даже на Самсунгах. :) Стандартная реализация - через WMA, есть на всех девайсах с MIDP2. Грабли, разумеется, есть, но не принципиальные (кроме случаев, где поддержка есть, но вместа текста SMS шлется мусор. Да, это, конечно, Самсунги :)).
    Тут два варианта - либо через HTTP connection, либо через Socket connection. Первое есть везде, второе - уже почти везде. В интернете полно примеров.
    Полезно посещать сайты производителей. Там можно подчерпнуть полезные доки. А еще там есть форумы.
    http://www.forum.nokia.com/
    http://developer.sonyericsson.com/
    https://market.benqmobile.com/portal/main.aspx?LangID=0&pid=1
    http://agathonisi.erlm.siemens.de:8080/jive3/index.jspa?categoryID=1
    http://motocoder.com/

    Из русскоязычных - вот парочка наиболее ценных:
    http://lib.juga.ru/article/archive/16 (там же форум)
    http://mgdc.ru/
    Ну и Яндекс с Гуглем, разумеется :)
     
  3. DirectX

    DirectX Активный участник

    1.880
    4
    О, спасибо за развёрнутый ответ! Буду копать дальше.
    Насчёт закрытого ком-порта сонэрика нашёл подтверждение в документации - надо будет махнуться на время на Siemens.

    Попутно выяснил, что для полного счастья в программировании на J2ME достаточно поставить NetBeans и MetBeans Mobile Pack - поразительно удобная вещь. Сонэриковский SDK нужен лишь для программирования специфических фишек типа 3D-графики, да pdf'ки там есть со списком реально поддерживаемых интерфейсов и техническими характеристиками конкретных моделей.

    добавлено через 10 минут
    Ещё по поводу передачи данных через Интернет. Ведь там главная загвоздка - обеспечить связь точка-точка, а это зачастую проблематично. Возникла следующая идея: сделать связь точка-точка посредством ICQ. То есть взять исходники JIMM и слегка их попотошив сделать программу на его основе, где сообщения будут слаться на заданный номер ICQ. При таком подходе можно даже переделав Mirandу организовать эдакий туннель.
     
  4. Beagle 2

    Beagle 2 Активный участник

    886
    0
    Не советую возиться с ICQ напрямую - завязываться на закрытый протокол, патчить Миранду... Лучше взять сразу J2ME клиента для Jabber, например Bombus, и поднять Jabber-сервер с транспортом в ICQ (если нужно организовать отсылку на ICQ-номера). Получится гораздо изящнее и надежнее (нет завязки на буржуинские серверы, меньше лишних сущностей). К тому же, JIMM и Миранда под лицензией GPL, а Bombus - BSD. Разница, я думаю, понятна.
     
  5. HorstWessel

    HorstWessel Активный участник

    1.585
    0
    Http сonnection вполне достаточно. Даже предпочтительней. Возможно для компактности придется писать данные напрямую в поток. Используй для этого класс-обертку DataOutputStream (DataInputStream).

    А вот заморачиваться на клиетской стороне с ICQ или Jabber идея плохая. Эту задачу лучше поручить серверу-приложений. Пусть сервлет хавает ваши данные с мобильника, а потом уже обрабатывает и отсылает их хоть куда и по любому протоколу.

    Имейте ввиду - ресурсы телефона очень ограничены. На клиентской стороне помещайте минимум вычислений.

    Классы из пакета javax.comm принадлежат J2SE.
     
  6. Pashtet

    Pashtet Активный участник

    37.035
    5.162
    DirectX,
    Точно не скажу, но в прошлом году со мной заканчивал парень. Дипломник Игнатьева. Уже точно не помню что у него за девайс был, но помню, что он либо реализовал, либо планировал передачу данных с него через BT и микруха у него была....