![]() |
Модераторы: Alexeis |
![]() ![]() ![]() |
|
danilsl |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 15.3.2006 Репутация: нет Всего: нет |
Всем привет.
Пишу прогу на кпк. Ей нужно обращаться к GPS модулю. На данный момент координаты я уже получаю, осталась только одна проблема: слишком долгая инициализация модуля. Как обращаться к апи я не знаю, так что просто открываю порт, на котором сидит gps и считываю данные. Проблема на открытии порта. Я его открываю в цикле, по 10 попыток в секунду. И этот цикл может висеть минут по 10. Причём скачаная с нета прога определяет координаты секунд за 20. Как можно ускорить процесс открытия порта? Пишу в 2005-й студии на C#. К порту обращаюсь компонентой SerialPort. Никаких полей кроме скорости не трогал, а скорости перебрал уже все. Никакого эффекта. Номер порта открываю тот, что указан в настройках кпк для доступа к нему нескольких приложений одновременно. |
|||
|
||||
t_rex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 11.10.2006 Где: Украина, г. Запор ожье Репутация: 1 Всего: 7 |
А на http://codeproject.com вроде был готовый кусок кода по работе с GPS через API, и там инициализация проходила в отдельном потоке чтобы не тормозить GUI.
--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 2 Всего: 20 |
1. Порт нужно открывать ТОЛЬКО 1 раз, затем деажать его открытым, а в цикле читать из него информацию.
2. Читать порт обязательно нужно в отдельном потоке, иначе приложение не будет отвечать на любые взаимодействия пользователя с ним (это касается случая синхронного обращения к порту). 3. Есть такое понятие как альманах. Если устройство долгое время не включается и лежит с разряженой батареей, то альманах теряется и для начала получения корректных координат требуется примерно минута. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
danilsl |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 15.3.2006 Репутация: нет Всего: нет |
Дело в том, что порт я один раз и открываю. Условие выхода из цикла, который открывает порт
А все остальные итерации возвращают IOException. Цикл выполняется до открытия порта. Дальше начинается чтение. И ещё. В C# пришлось перейти из JAVA, в срочном порядке. Изначально хотел написать эту прогу на джаве, но оказалось, что конкретный девайс её не поддерживает. Времени на изучения языка не было(начальство срочно требует результат), поэтому не успел разобраться с потоками. По этой причине циклы открывающие порт и читающие с него данные выполняются как события таймера. Примерно так
А чтоб не висеть на чтении, то перед ним я проверяю свойство serialPort1.BytesToRead. Вот эта радость (открытие порта) и висит. Момент открытия порта и начала чтения данных однозначно определяет строка label1.Text = "Reading data..."; Так что тормозов на чтении нет однозначно. Да и координаты на карту гис как в аптеке проставляются. Вот ещё бы порт пошустрее открыть... |
||||
|
|||||
Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: нет Всего: 17 |
danilsl, а ты SDK для WM5 или WM6 ставил? Там же готовые примеры есть под GPS API. Показано и как обращаться и т.д. и т.п.
-------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
myk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 2.3.2009 Репутация: нет Всего: нет |
подскажите чего делать при таком раскладе.
serialPort1.Open(); выполняется без ошибки(IOExeption) если я GPS(встроенный) включаю в ДубльГис иначе порт не открывается. видимо есть какие то функции включения GPS приемника ничего найти немогу подскажите. |
|||
|
||||
sn0wmen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 28.11.2009 Репутация: нет Всего: нет |
Есть замечательный чип ublox5
Единственное пока устройство на нем представленное в России - это http://npkintec.ru/index.php?section=catalog&razdel=3 Кстати российские разработчики. Для этого чипа на сайте производителя есть целая куча различных программ для конфигурирования и работы с устройством. http://u-blox.com/en/firmware.html Очень много полезного можно узнать и опробовать. Устройство довольно простое и надежное. Ребята-разработчики - молодцы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование мобильных устройств" | |
|
Раздел посвящен программированию мобильных устройств. Все остальные вопросы по мобильным устройствам (КПК, смартфоны, телефоны, фотоаппараты и т.п), |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Платформы Windows Mobile и Windows Embedded | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |