Модераторы: Alexeis
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Инициализация GPS модуля 
:(
    Опции темы
danilsl
Дата 7.4.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет.
Пишу прогу на кпк. Ей нужно обращаться к GPS модулю. На данный момент координаты я уже получаю, осталась только одна проблема: слишком долгая инициализация модуля.
Как обращаться к апи я не знаю, так что просто открываю порт, на котором сидит gps и считываю данные. Проблема на открытии порта. Я его открываю в цикле, по 10 попыток в секунду. И этот цикл может висеть минут по 10. Причём скачаная с нета прога определяет координаты секунд за 20. Как можно ускорить процесс открытия порта?
Пишу в 2005-й студии на C#. К порту обращаюсь компонентой SerialPort. Никаких полей кроме скорости не трогал, а скорости перебрал уже все. Никакого эффекта. Номер порта открываю тот, что указан в настройках кпк для доступа к нему нескольких приложений одновременно.
PM MAIL   Вверх
t_rex
Дата 7.4.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 11.10.2006
Где: Украина, г. Запор ожье

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



А на http://codeproject.com вроде был готовый кусок кода по работе с GPS через API, и там инициализация проходила в отдельном потоке чтобы не тормозить GUI.
--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей
PM MAIL WWW ICQ Skype GTalk   Вверх
Artemon
Дата 7.4.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



1. Порт нужно открывать ТОЛЬКО 1 раз, затем деажать его открытым, а в цикле читать из него информацию.

2. Читать порт обязательно нужно в отдельном потоке, иначе приложение не будет отвечать на любые взаимодействия пользователя с ним (это касается случая синхронного обращения к порту).

3. Есть такое понятие как альманах. Если устройство долгое время не включается и лежит с разряженой батареей, то альманах теряется и для начала получения корректных координат требуется примерно минута.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
danilsl
Дата 8.4.2009, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Дело в том, что порт я один раз и открываю. Условие выхода из цикла, который открывает порт
Код

serialPort1.IsOpen==true;

А все остальные итерации возвращают IOException. 
Цикл выполняется до открытия порта. Дальше начинается чтение.
И ещё. В C# пришлось перейти из JAVA, в срочном порядке. Изначально хотел написать эту прогу на джаве, но оказалось, что конкретный девайс её не поддерживает. Времени на изучения языка не было(начальство срочно требует результат), поэтому не успел разобраться с потоками. По этой причине циклы открывающие порт и читающие с него данные выполняются как события таймера. Примерно так
Код

private void OpenPort()
        {
            try
            {
                serialPort1.Open();
            }
            catch (Exception) { }
        }
private void timer1_Tick(object sender, EventArgs e){
      if (serialPort1.IsOpen)
            {
                ProcessData(ReadPort());
            }
            else
            {
                OpenPort();
      if (serialPort1.IsOpen)
                {
                    label1.Text = "Reading data...";
                    progressBar1.Value = 0;
                }
            }
}

А чтоб не висеть на чтении, то перед ним я проверяю свойство serialPort1.BytesToRead. Вот эта радость (открытие порта) и висит.
Момент открытия порта и начала чтения данных однозначно определяет строка label1.Text = "Reading data..."; Так что тормозов на чтении нет однозначно. Да и координаты на карту гис как в аптеке проставляются. Вот ещё бы порт пошустрее открыть...
PM MAIL   Вверх
Experimenter
Дата 23.4.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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"); }
PM WWW ICQ   Вверх
myk
Дата 3.9.2009, 05:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



подскажите чего делать при таком раскладе.

serialPort1.Open(); выполняется без ошибки(IOExeption) если я GPS(встроенный) включаю в ДубльГис иначе порт не открывается. видимо есть какие то функции включения GPS приемника ничего найти немогу подскажите.
PM MAIL   Вверх
sn0wmen
Дата 28.11.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть замечательный чип ublox5
Единственное пока устройство на нем представленное в России - это http://npkintec.ru/index.php?section=catalog&razdel=3
Кстати российские разработчики.
Для этого чипа на сайте производителя есть целая куча различных программ для конфигурирования и работы с устройством. http://u-blox.com/en/firmware.html
Очень много полезного можно узнать и опробовать. Устройство довольно простое и надежное. Ребята-разработчики - молодцы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование мобильных устройств"
Alexeis

Раздел посвящен программированию мобильных устройств.

Все остальные вопросы по мобильным устройствам (КПК, смартфоны, телефоны, фотоаппараты и т.п),
не имеющие отношения к программированию, просьба размещать в разделе КПК, смартфоны, мобильники

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Платформы Windows Mobile и Windows Embedded | Следующая тема »


 




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


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

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