Хотелось бы услышать мнение тех, кто работал с сабжем. Интересует несколько моментов. Дано: 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. Вот тут не вполне понятна концепция. Как лучше и какие грабли тут ждут? Посоветуйте какие-нибудь ресурсы на эту тему, плиз.
Класс 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/ Ну и Яндекс с Гуглем, разумеется
О, спасибо за развёрнутый ответ! Буду копать дальше. Насчёт закрытого ком-порта сонэрика нашёл подтверждение в документации - надо будет махнуться на время на Siemens. Попутно выяснил, что для полного счастья в программировании на J2ME достаточно поставить NetBeans и MetBeans Mobile Pack - поразительно удобная вещь. Сонэриковский SDK нужен лишь для программирования специфических фишек типа 3D-графики, да pdf'ки там есть со списком реально поддерживаемых интерфейсов и техническими характеристиками конкретных моделей. добавлено через 10 минут Ещё по поводу передачи данных через Интернет. Ведь там главная загвоздка - обеспечить связь точка-точка, а это зачастую проблематично. Возникла следующая идея: сделать связь точка-точка посредством ICQ. То есть взять исходники JIMM и слегка их попотошив сделать программу на его основе, где сообщения будут слаться на заданный номер ICQ. При таком подходе можно даже переделав Mirandу организовать эдакий туннель.
Не советую возиться с ICQ напрямую - завязываться на закрытый протокол, патчить Миранду... Лучше взять сразу J2ME клиента для Jabber, например Bombus, и поднять Jabber-сервер с транспортом в ICQ (если нужно организовать отсылку на ICQ-номера). Получится гораздо изящнее и надежнее (нет завязки на буржуинские серверы, меньше лишних сущностей). К тому же, JIMM и Миранда под лицензией GPL, а Bombus - BSD. Разница, я думаю, понятна.
Http сonnection вполне достаточно. Даже предпочтительней. Возможно для компактности придется писать данные напрямую в поток. Используй для этого класс-обертку DataOutputStream (DataInputStream). А вот заморачиваться на клиетской стороне с ICQ или Jabber идея плохая. Эту задачу лучше поручить серверу-приложений. Пусть сервлет хавает ваши данные с мобильника, а потом уже обрабатывает и отсылает их хоть куда и по любому протоколу. Имейте ввиду - ресурсы телефона очень ограничены. На клиентской стороне помещайте минимум вычислений. Классы из пакета javax.comm принадлежат J2SE.
DirectX, Точно не скажу, но в прошлом году со мной заканчивал парень. Дипломник Игнатьева. Уже точно не помню что у него за девайс был, но помню, что он либо реализовал, либо планировал передачу данных с него через BT и микруха у него была....