Вложений: 7
APRS I-net Position Sender (J2ME): о проекте
По мотивам темы "Альтернативные способы определения координат".
Программа APRS Position Sender предназначена для отправки на сервер APRS сообщения о нахождении себя в определенном месте. Места и их координаты выясняются заранее. Как только прибыли на определенное место - выбрали его из списка и нажали "Оправить". Таким образом APRS сервер будет знать где вы.
Список мест представляет из себя набор файлов и папок. Структуру вложенности папок вы выдумываете сами - так, как Вам удобно. А в папках располагаете файлы с координатами.
- Каждый файл - это одно место
- Название файла - это обозначение места (так, как оно будет выглядеть в списке)
- содержимое файла - это координаты и комментарий маяка (например, описание места)
Пример. Если я езжу на работу, то получается следующее количество мест: Дом, работа, остановки автобуса. Следовательно я создаю два файла:
ФАЙЛ|Содержимое
Дом.txt|58.01.83N 038.51.13E Fly e135 - inet "At home"{jAPRS}
Работа.txt|58.01.83N 038.51.13E Fly e135 - inet "At work"{jAPRS}
На работу и с работы я еду на автобусе №12. Поэтому я могу создать папку "12 автобус". В этой папке я создаю файлы с названиями остановок:
01-Автовокзал.txt|58.02.08N 038.51.32E Autowokzal {jAPRS}
02-Мн.Восток.txt|58.02.08N 038.50.85E Magazin Wostok {jAPRS}
03-ул.Гагарина.txt|58.02.13N 038.50.33E Ulica Gagarina {jAPRS}
04-ул.Труда.txt|58.02.49N 038.50.40E Ulica truda {jAPRS}
05-ЖД вокзал.txt|58.02.56N 038.50.03E Veleznodorovnyi wokzal {jAPRS}
06-Сенной рынок.txt|58.02.99N 038.50.20E Sennoy rynok {jAPRS}
07-Юбилейный.txt|58.03.14N 038.50.08E Uniwermag Ubileinyi {jAPRS}
08-ЮбПлощадь.txt|58.03.22N 038.49.65E Ubileinaya ploshad' {jAPRS}
09-НПО Сатурн.txt|58.03.32N 038.48.89E OAO NPO Saturn {jAPRS}
10-Бассейн.txt|58.03.36N 038.48.23E Bassein {jAPRS}
11-ул.Танкистов.txt|58.03.39N 038.47.82E Ulica tankistov {jAPRS}
12-ул.Солнечная.txt|58.03.42N 038.47.29E Ulica solnechnaja {jAPRS}
13-пл.Жукова.txt|58.03.42N 038.47.29E Ploshad' Zhukova {jAPRS}
Теперь, пока еду в автобусе - я от нечего делать могу отправлять свою текущую позицию, выбрав файл с нужной позицией. Использование файлов и вложенных папок делает программу очень гибкой в плане выбора.
Кроме этого в программе есть возможность выбора позывного и значка, которым будет отображаться станция на карте (не зависимо от того, под каким паролем происходит соединение с APRS сервером).
Программа состоит всего из нескольких пунктов меню. Думаю, что сложности вызвать они не должны: Параметры соединения с сервером APRS (имя, порт, пользователь, пароль); Параметры станции (позывной и значек); Отправка координат (вызывается просмотрщик файловой системы телефона - ищите файлы там, куда разместили, будте внимательны с ограничениями на имена файлов); Подсказка и выход.
Рекомендации по созданию файлов с координатами.
Рекомендую координаты определять через http://aprs.fi/ в режиме спутника (фото со спутника). В нужных координатах ставим маркер и копируем с него координаты в текстовый файл, туда же и комментарий:
58°1.77' N 38°50.88' E - Detskiy sad {jAPRS}
Повторяем для всех нужных точек. Затем добавляем незначащиенули (по вкусу):
58°01.77' N 038°50.88' E - Detskiy sad {jAPRS}
Затем заменяем "°" на "." во всем файле. Потом "' N" на "N", а "' E" на "E". Должно получиться:
58.01.77N 038.50.88E - Detskiy sad {jAPRS}
Потом каждую строчку сохраняем в отдельный файл и называем его соответствующим именем. Ну ежели кому-то будет очень тяжело все это - напишу программку на дельфе, которая поможет в переделках.
Программа разрабатывалась без учета тач телефонов и всяких там бантиков и красивостей, но работает и на тач даже без виртуальной клавиатуры (как на моем), т.к. все стандартное. Из требований к телефону - только работа с интернет и работа с файловой системой. Программа протестирована на моем реальном сотовом телефоне Fly E135 - это такой практически начального уровня телефон с тачскрином. Результат получается примерно такой:
2011-03-25 22:13:43 UTC: UA3MQJ>APZJME,TCPIP*,qAC,T2UKRAINE:=5801.83N/03851.13E[Fly e135 - inet "At home"{jAPRS}
2011-03-25 22:14:53 UTC: UA3MQJ>APZJME,TCPIP*,qAC,T2UKRAINE:=5802.08N/03851.32E[Autowokzal {jAPRS}
2011-03-25 22:15:57 UTC: UA3MQJ>APZJME,TCPIP*,qAC,T2UKRAINE:=5802.08N/03851.32EUAutowokzal {jAPRS}
2011-03-25 22:17:01 UTC: UA3MQJ>APZJME,TCPIP*,qAC,T2UKRAINE:=5802.08N/03850.85EUMagazin Wostok {jAPRS}
2011-03-25 22:17:24 UTC: UA3MQJ>APZJME,TCPIP*,qAC,T2UKRAINE:=5802.13N/03850.33EUUlica Gagarina {jAPRS}
Замеченные проблемы в работе. Ммм, ну в общем под JAVA ME я пишу впервые и эту программу разрабатывал всего около суток, поэтому наверняка есть какие-либо проблемы и ньюансы. Из того, что я заметил - телефон долго висит после того, как нажал YES при отправке и OK после просмотра. Наверное потому, что я устанавливаю соединение только на момент отправки. Но работает и так, в общем - то. Положу еще денег на телефон и буду пробовать дальше. Исходные коды под нетбинс прилагаются.
Вложений: 1
Новая версия. Двухсторонний обмен сообщениями
Очередное обновление программы.
Теперь можно не только отправлять сообщения, но и получать их!!!
То есть реализован полноценный двухсторонний обмен сообщениями.
Прогресс!!! hi hi
Для отправки сообщений пользоваться тем же пунктом "Send Message".
Для чтения сообщений выбрать пункт "Inbox".
Теперь после отправки сообщения попадаем не на основной экран, а на экран Inbox. На этом экране видны Все сообщения: сообщения от ВСЕХ станциий и отправленные Вами сообщения. Так же для удобства в окне Inbox есть возможность сразу перейти к отправке нового сообщения, нажатием "Send".
ВАЖНО! По умолчанию в программе в качестве фильтра установлено значение "/". Это значит, что НИКАКИЕ пакеты от сервера к нам приходить не будут. В том числе и сообщения. Для получения сообщений нужно соответствующим образом изменить фильтр для приема пакетов, среди которых могут быть сообщения. Очень важно правильно составить фильтр, чтобы приходило то, что нужно и не приходило много ненужного, т.к. траффик - деньги GPRS.
Примеры фильтров:
"/" - не придет никаких сообщений в ответ, но можно отправлять свои координаты и собщения;
"UT/US/UR/UA/UB/R/" - будут приходить пакеты от станций, позывные которых начинаются с UT, US, UR, UA, UB и R.
"RV3DHC/UA1TDZ/" - будут приходить пакеты только от этих двух станций.
И так далее. Читайте, пожалуйста, инструкцию по составлению фильтров. Пробуйте фильтр на UI-View. Там есть нюансы со звездочками в фильтре...
Тестировал на эмуляторе и на Fly 135. Скринов не прилагаю, думаю и так все понятно.
Исходные пакеты от меня к RV3DHC:
Код:
2011-10-03 08:44:39 UTC: UA3MQJ-12>APRS,TCPIP*,qAS,UA3MQJ::RV3DHC :?DX
2011-10-03 08:45:19 UTC: UA3MQJ-12>APRS,TCPIP*,qAS,UA3MQJ::RV3DHC :?APRSS
2011-10-03 08:45:54 UTC: UA3MQJ-12>APRS,TCPIP*,qAS,UA3MQJ::RV3DHC :?PING?
Исходные пакеты от RV3DHC ко мне:
Код:
2011-10-03 08:44:40 UTC: RV3DHC>APU25N,TCPIP*,qAC,T2RUSSIA::UA3MQJ-12:No stations have been heard except via a digipeater.
2011-10-03 08:45:19 UTC: RV3DHC>APU25N,TCPIP*,qAC,T2RUSSIA::UA3MQJ-12:Tony in Troitsk (near Moscow), KO85pl, use UI-View32 V2.03
2011-10-03 08:45:56 UTC: RV3DHC>APU25N,TCPIP*,qAC,T2RUSSIA::UA3MQJ-12:Path - UA3MQJ-12>APRS,TCPIP*
Данные взяты с aprsfi.
Спасибо.
Вложений: 1
Новая версия. Отправка объектов.
Обновил версию:
http://japrs.googlecode.com/svn/APRS...InetSender.jad
http://japrs.googlecode.com/svn/APRS...InetSender.jar
Добавлена возможность отправки объектов.
Отправка осуществляется тем же пунктом меню, что и отправка маяка.
Пункт переименован из Send Position в Send Pos/Obj. При выборе файла, программа автоматически по содержимому текстового файла определяет тип файла(позиция или объекты).
Для того, чтобы отправлять объекты нужно создать файл в котором будет список объектов
Пример:
Код:
;Objects
*UA3MAD /r 58.01.83N 038.51.23E Echo Repeater 435
UA3MAO /r 58.01.83N 038.51.24E Repeater 435
В первой строке файла объектов должно быть написано ;Objects (нужно для определения типа файла).
Далее следуют объекты. Формат написания понятный: позывной, значек, координаты, комментарий.
Звездочка (*) перед позывным - признак того, что при повторной передаче маяка по таймеру этот объект тоже будет отправлен.
Отправка происходит от имени(позывного) станции.