SASGIS

Веб-картография и навигация

SAS.Планета (SASPlanet)

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

Re: SAS.Планета (SASPlanet)

Сообщение mega-art » 29 авг 2008, 10:57

Bigbambr писал(а):Конечно, в протоколе общения с NMEA есть какой-то косяк. Но, полагаю, пока наш уважаемый Азя не решится приобрести себе приемник - пропатчить его не удасться. Я вот как-то читал, про протокол NMEA, и припоминается, что программа должна посылать на сом-порт иннициализирующий сигнал.

Раз другие проги нормально, значит они в курсе как открывать порт и это надо просто найти. В инете попробую поискать в выходные...
mega-art
Соображающий
 
Сообщения: 93
Зарегистрирован: 09 авг 2008, 14:48
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.

Re: SAS.Планета (SASPlanet)

Сообщение Bigbambr » 29 авг 2008, 11:21

http://www.olexa.com.ua/gps/garmin_interface/

Здесь требуется сделать небольшое отступление. Прибор поддерживает несколько физических протоколов. Каждый из них требует своих настроек COM-порта. Поскольку на фирменный протокол нашлось наибольшее количество документов, я начал исследовать его. Для дальнейших экспериментов с аппаратом в его настройках необходимо установить в Навигаторе протокол garmin в меню настроек протокола.

Как инициализировать Порт
Windows использует для записи и чтения из порта созданный для этого файл. Рассмотрим инициализацию порта подробнее.

function AsyncInit(port: PChar): PChar; var fSuccess : bool; // результат инициализации порта m : string; // временная текстовая переменнаяbegin hCom: =Createfile(port, GENERIC_READ+GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0); { hCom – дескриптор созданного файла. Он описываетя в другом модуле как переменная типа дескриптор в секции Public. Этот дескриптор будет использоваться в других процедурах и функциях для установки параметров порта, чтения, записи и закрытия порта. Прочитать про функцию CreateFile (если интересно) можно в хелпе MS SDK. Изложено подробно, но бестолково. Для начала достаточно знать, что это работает...} if (hCom = INVALID_HANDLE_VALUE) then begin m:='Порт открыт неуспешно'; end; {Теперь проверим, окрылся ли порт. Если hCom отрицательный, то ясно, что-то не так. Скорее всего, нужно задать другой порт. Вопрос, кстати сказать, довольно сложный. Все зависит от установленного оборудования (модемы и пр.). Теперь сохраним первоначальные установки порта.Это нужно для того, чтобы перед закрытием программы восстановить эти установки. Конечно, закрывать программу первое время придется при помощи трех клавиш, так что до восстановления дело дойдет не скоро.} fSuccess := GetCommState(hCom, dcb_); BaudRate := dcb_.BaudRate; ByteSize := dcb_.ByteSize; Parity := dcb_.Parity; StopBits := dcb_.StopBits; if not(fSuccess) then begin m:='Порт открыт неуспешно'; end; AsyncInit:=PChar(m); end;
Если порт открыт успешно, то теперь надо установить его параметры. Кстати, теперь станет ясно, что такое dcb_. Это, как становится ясно после прочтения SDK – хелпа, такая структура, в которой содержатся все установки для устройства коммуникации, последовательного порта в частности. Из всего многообразия нам нужны только четыре параметра – скорость, размер, четность и количество стоповых битов. Перемененную dcb_ , которая имеет тип DCB, опишем как глобальную переменную где угодно, лишь бы она сохранялась на время всего выполнения программы. Да, забыл сказать, я все операции с инициализацией и установками порта сделал функциями, результатом которых является текстовая информация, чтобы сразу можно было вставлять в Messagebox и видеть результаты выполнения.
Bigbambr
Постигающий Дао
 
Сообщения: 118
Зарегистрирован: 21 июл 2008, 09:22
Откуда: Астрахань, Россия
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: SAS.Планета (SASPlanet)

Сообщение Bigbambr » 29 авг 2008, 11:24

Если мы хотим принять из Навигатора какие либо данные, мы посылаем ему запрос на передачу. Для этого мы формируем пакет с идентификатором Pid_Command, куда включаем Идентификатор Протокола Приложения, в котором закодирована команда Навигатору. Иными словами, Навигатору говорится, чего, собственно, мы от него хотим. Например, мы хотим, чтобы он начал передачу треклога. Пакет, соответственно будет такой:

trk1 : TByteArr3 = ($0a,$02,$06,$00)
Первый байт - Pid_Command. Говорит навигатору о том, что это – команда.

Второй байт – длина данных в пакете (опа, а ведь заложено куча возможностей, команд может быть не 255, а значительно больше).

Третий байт – команда Cmnd_Transfer_Trk. Указывает Навигатору, что надо начать передачу данных треклога.

Ноль.

Заголовок, контрольная сумма и постфикс опущены для ясности. Данные приведены в Hex.

Передающее устройство в ответ на команду отправить данные выдает пакет Pid_Records, в котором содержится информация о количестве передаваемых записей. Получив сигнал ACK, устройство начинает последовательную передачу пакетов с пользовательскими данными. После передачи одного пакета с записью (точки треклога, например), Устройство должно остановиться и подождать ответа ACK, после чего выдает очередной пакет с данными. Навигатор это делает сам, при написании программы мы должны это помнить и при передаче Навигатору данных должны дожидаться от него ответа. Соответственно, приводится проверка контрольной суммы и времени ожидания. После того, как все записи переданы, Передающее устройство выдает пакет Pid_Xfer_Cmplt. Этот пакет говорит о том, что достигнут конец данных (передача закончена). Одновременно на дисплее Навигатора появится надпись Transfer Complete – Передача Выполнена. Дальнейшая задача программы - расшифровать данные и использовать для нужд пользователя.
Bigbambr
Постигающий Дао
 
Сообщения: 118
Зарегистрирован: 21 июл 2008, 09:22
Откуда: Астрахань, Россия
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: SAS.Планета (SASPlanet)

Сообщение feya » 29 авг 2008, 11:25

Bigbambr
Я читал ету доку когда делал gps
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: SAS.Планета (SASPlanet)

Сообщение Bigbambr » 29 авг 2008, 11:54

вероятно, команда иннициализации гдето проваливается. а эмулятору - пофиг. он данные дает не ожидая иннициализации.
Bigbambr
Постигающий Дао
 
Сообщения: 118
Зарегистрирован: 21 июл 2008, 09:22
Откуда: Астрахань, Россия
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: SAS.Планета (SASPlanet)

Сообщение feya » 29 авг 2008, 12:04

Надо будет какнить купить приемник. Мож кто посоветует нормальный эмулятор?
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: SAS.Планета (SASPlanet)

Сообщение mega-art » 29 авг 2008, 12:13

azya писал(а):Надо будет какнить купить приемник. Мож кто посоветует нормальный эмулятор?

Могу посоветовать что-нить этой фирмы.http://www.globalsat.ru/catalog/razdely_kataloga/gps_priemniki/ Занимаются серьезно и качественно за доступную цену. Блютузовские для сотовых подойдут, но бывает отваливаются так же, как и гарнитуры. BU-353 у нас в Екб можно купить уже дешевле 2500р. Были бы мы в одном городе, дал бы на недельку поюзать... Эмуляторы не посоветовал бы, все-таки железка конкретнее.
mega-art
Соображающий
 
Сообщения: 93
Зарегистрирован: 09 авг 2008, 14:48
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.

Re: SAS.Планета (SASPlanet)

Сообщение feya » 29 авг 2008, 12:54

mega-art
Я ж эмулятор просил посоветовать) ГПС приемник пока купить не могу, у мя свадьба на носу, деньги все туды.
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: SAS.Планета (SASPlanet)

Сообщение Bigbambr » 29 авг 2008, 13:23

НЕ ЖЕНИСЬ!
после свадьбы программу точно забросишь!!!! :D
Bigbambr
Постигающий Дао
 
Сообщения: 118
Зарегистрирован: 21 июл 2008, 09:22
Откуда: Астрахань, Россия
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: SAS.Планета (SASPlanet)

Сообщение Bigbambr » 29 авг 2008, 13:45

Кто ж знает, какой эмулятор лучше?
Можно только предположить, что у тебя сом-порт открывается только на чтение. Или попробовать команду иннициализации послать несколько раз подряд.
Bigbambr
Постигающий Дао
 
Сообщения: 118
Зарегистрирован: 21 июл 2008, 09:22
Откуда: Астрахань, Россия
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Пред.След.

Вернуться в SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

cron