ИСПРАВЛЕНИЯ (уже!): Прошу прощения, в режиме без записи в файлы программа обращалась к несуществующему файлу и падала. Вот исправленный вариант: (Добавление) Здравстуйте коллега и тезка! Спасибо за выложенный пример. Я долго искал нечто подобное. Спецификацию РИНЕКС-протокола я читал и не раз, но ответов на свои вопросы не увидел. Ваши комментарии всегда внятны, поэтому, если не возражаете, у меня есть вопросы. Вот 2 блока данных: 3 4 000 MARKER NAME 1 MARKER NUMBER 2.1000 0.0000 0.0000 ANTENNA: DELTA H/E/N --> THIS IS THE START OF A NEW SITE <-- COMMENT 11 5 23 8 18 51.0000000 0 10 2 16 4 20 13 7 23 30 10R83 2 1 --> START OF KINEMATIC DATA <-- COMMENT 11 5 23 8 19 51.0000000 0 10 2 16 4 20 13 7 23 30 10R83 В заголовка файла MARKER NAME=2322, а здесь MARKER NAME=000 (и далее инкрементно до 031). В заголовка файла MARKER NUMBER=<NONE>, а здесь MARKER NUMBER=1 (и далее инкрементно до 32). Это особенности программы приемника + конвертера? Но не это главное. Между этими блоками 60 сек. и 60 записей приемника в РИНЕКС. START OF A NEW SITE - это начало новой станции для РИНЕКСА? Последующие (до START OF KINEMATIC DATA) есть что? Как их понимает и что с ними должна делать программа постобработки? После START OF KINEMATIC DATA 11 5 23 8 19 51.0000000 -- 11 5 23 8 23 49.0000000 без малого 4 мин измерений. Каждая секунда/эпоха пишет что? Некую точку на трассе из ~240 точек или что-то иное? Как их понимает и что с ними должна делать программа постобработки? РИНЕКС-строки 3 4 и 2 1 кодируют что? В первой строке каждой эпохи 11 5 23 7 58 28.0000000 0 11 32 2 16 4 20 13 7 23 30 10R83 после секунд (28.0000000) стоит 0 - я вычитал (протокол РИНЕКС), что это флаг эпохи. Перечитывая протокол РИНЕКС я записал себе (даже в main.c): EpochFlag - флaг тeкущeй эпoxи (для СТАТИКИ = 0, изменять: для КИНЕМАТИКИ = 2 для OnTheFly = 5 (при начале движения и переходе к кинематике) Простите великодушно за обилие вопросов. Я хочу научить свою программу правильно писать в РИНЕКС обычную топо-съемку.
Для chnav В приемниках на SirfStar-II и SirfStar-III бинарные данные имеют различия в представлении (и декдировании соответственно) не только для float и double, но и для integer и short integer (даже 1-байтовые данные представлены по разному - например MID-28 SincFlag). Вот что пришлось делать: void ParsingSirfStarMessages(int MessageNum) { ... ... dblNum = bRoll(8); // для SirfStar double и float требуется перестановка байтов memcpy(&dMsg, dblNum, 8); MID1C.PR = dMsg; // Pseudo Range (m) ...... memcpy(&ucMsg, &ByteArray, 1); MID1C.SincFlags = ucMsg; // binflags = tobin(MID1C.SincFlags); // преобразовать байт в стоку битов strcpy(strTmp, binflags); ...... } BYTE* bRoll(unsigned int numBytes) { unsigned char* dblNum; BYTE dblBytes[8]; if (!blnSS3) // for SirfStar-II { if (numBytes == 8) { dblBytes[0] = ByteArray[i+7]; dblBytes[1] = ByteArray[i+6]; dblBytes[2] = ByteArray[i+5]; dblBytes[3] = ByteArray[i+4]; dblBytes[4] = ByteArray[i+3]; dblBytes[5] = ByteArray[i+2]; dblBytes[6] = ByteArray[i+1]; dblBytes[7] = ByteArray; } if (numBytes == 4) { dblBytes[0] = ByteArray[i+3]; dblBytes[1] = ByteArray[i+2]; dblBytes[2] = ByteArray[i+1]; dblBytes[3] = ByteArray; } if (numBytes == 2) { dblBytes[0] = ByteArray[i+1]; dblBytes[1] = ByteArray; } dblNum = dblBytes; return dblNum; } if (blnSS3) // for SirfStar-III { if (numBytes == 8) { dblBytes[0] = ByteArray[i+3]; dblBytes[1] = ByteArray[i+2]; dblBytes[2] = ByteArray[i+1]; dblBytes[3] = ByteArray; dblBytes[4] = ByteArray[i+7]; dblBytes[5] = ByteArray[i+6]; dblBytes[6] = ByteArray[i+5]; dblBytes[7] = ByteArray[i+4]; } if (numBytes == 4) { dblBytes[0] = ByteArray[i+3]; dblBytes[1] = ByteArray[i+2]; dblBytes[2] = ByteArray[i+1]; dblBytes[3] = ByteArray; } if (numBytes == 2) { dblBytes[0] = ByteArray[i+1]; dblBytes[1] = ByteArray; } dblNum = dblBytes; return dblNum; } } // End Function bRoll() char* tobin(BYTE b) { char res[] = " "; int k=0; for (int i = 8 - 1; i >= 0; i--, k++) { if ((b & (1 << i)) != 0) res[k] = '1'; else res[k] = '0'; } return res; } chnav ! Поправьте меня, если что не так. И еще: как интерпретировать биты из MID-28 SincFlag, не могу понять.
Кто-то спрашивал, где есть GlobalSat BT-308 - вот нашел: http://www.ebayclub.ru/modules/ebay/ite ... gory=14675
Обновленная версия программы работы с БЫТОВЫМИ приемниками/навигаторами Garmin-SirfStar и GlobalSat-SirfStar с чипсетами SirfStar-II и SirfStar-III под ОС Windows-XP. Изменения/дополнения см. в файле INFO.txt Хотелось бы услышать и увидеть результаты полевого тестирования и даже постобработки (если получится) от геодезистов. P.S. По записи в RINEX-OBS файл информации об изменении высоты антенны (реальная необходимость при кинематической съемке) и кодировании точек, снимаемых в кинематике (а это очень привлекательно), я уже не раз задавал вопрос на этой и других конференциях. Но "знатоки" на него не захотели (не смогли?) ответить. Пришлось ответить самому. Посмотрите эти строки в RINEX-файлах в следующем прилагаемом LOG-архиве GNSS-Monitor2_LOG-files.zip Возможно я и не прав, пусть выскажутся те, кто понимает вопрос.
А это файлы-примеры работы программы GNSSmonitor2_WinXP с теми приборами, которые смог подключить. То есть по каждому приемнику/навигатору: - бинарный файл, - файл парсинга бинарных сообщений, - RINEX-OBS файл, - файл вычисленных геоцентрических координат точек по каждой эпохе, - файл усредненных геоцентрических координат для каждой кодированной точки. А для самых пытливых файл диалога программы с приемником (через COM-порт) - запрос/ответ в формате HTM, записанный программой Free Serial Port Monitor Этот файл можно посмотреть в web-браузере. В нем команды программы приемнику и ответы приемника в 16-ричном представлении. Может представлять интерес для программистов. P.S. Эти файлы ТОЛЬКО ПРИМЕРЫ. Запись велась с балкона дома - с одной стороны стена дома, с другой - деревья в листве. Поэтому спутников мало, записи "рваные". Те кто заинтересован и имеет возможность, запишите свои файлы в поле (желательно на точках с известными координатами в системе WGS) и опубликуйте их здесь.
У меня есть возможность выехать на полигон, постоять на точках с известными координатами в СК 42, но нет 2 ноутбуков. Если бы Ваша программа (конечно, я понимаю, что это трудно) была перекомпилирована на WMobile, я бы с удовольствием съездил в поле.
Я этим сейчас и занимаюсь. Универсальной на все мобайлы пока не получается. Уточните версию на Вашем девайсе: Windows-2003 (v4.2), Mobille-5, Mobile-6.
Это версия программы для работы под ОС Win-CE/Mobile. Проверена работа с наладонниками под ОС 2002, 5 и 6. Время от старта программы до ее готовности к записи данных от 10 до 20 сек, в зависимости от модели приемника. ОСОБОЕННО критично время между стартом приемника и стартом программы. Приемник должен набрать некоторое количество данных (3d-фиксация, эфемериды спутников). Поэтому не стоит судорожно тыкать в кнопки, лучше подождать сообщения программы о том что все необходимые данные получены и можно нажать кнопку "ACCEPT". Если программа запущена, а приемник еще не "определился" в пространстве, то будет тихое завершение работы программы. В одном архиве с программой лежат примеры ее работы с 5 разными приемниками. Несколько слов о халяве. Не только бесплатного сыра не бывает. За все так, или иначе приходится платить. В данном случае платой будут (надеюсь) ваши файлы работы программы в поле, а также замечания/соображения о том, как лучше представить выходные данные для последующей их обработки. Обработки не только в программах постобработки от известных фирм, но и в некоторых самоделках принимающих данные из выходного файла координат (точек) и загружающего их в ....CAD в виде точек, полилиний (треков) и текстов-кодов точек. Тут я еще не все продумал. Особенно важно/интересно как представлять в RINEX файле данные съемки коды точек.
Начал тестировать kinematic на только что приобретенном б/у magellan triton 2000. Запускаю переименованием в tocopy.exe. Первое замечание: у всех созданных файлов дата создания 14,04,2006 и время примерно одинаковое для всех- чего не может быть. Второй момент: Непонятно пока почему иногда при переключении на магеланновскую программу. прибор не видит спутники. галку "переключить на nmea при выходе"поставил. А так спасибо. файлы собираются. У меня до базы 244 километра. Решение получается 0,5 метра большинство. Один раз получилось 1,7 метра причем количество эпох было больше чем в других файлах. Продолжаю изучать.
Оффтоп (Move your mouse to the spoiler area to reveal the content) Вставка "пятачка" - Нельзя ли сделать шапку этой ветки и туда сложить варианты проги, инстукции и т.д. что не рыскать по всем страницам?
Чето ерунда получается. разница между записями с одного места в разное время достигает десятков метров. Я чето не догоняю видимо. Наверное база далеко. Хотя не 40 метров же разбег. Записи какието рваные получаются. Скриншот приложил. Обрабатываю в topcon tools 7.1.Записываю kinematic-ом 0.11 (Добавление) На тритоне как не бился, GNSS-Monitor2 запустить не получилось.
Палыч, я бы сделал, но не знаю как. Может-быть модератора попросим? Не смог "побороть" майкросовтовский крестик закрытия программы в ОС WinCE/Mobile, а еще одну кнопку для закрытия некуда вставлять. Этот крестик и заголовок главного окна по-разному ведут себя под разными ОС. Поэтому сделал 2 варианта (в основном из-за навигатора Mitac MIO C520). Подскажите кто знает, что делать с фазой полученной с SirfStar-II, она выдается в метрах, а в RINEX-OBS по-моему надо показывать ее в циклах. С Garmin все ясно - там фаза в циклах. Если кто надумает ответить, то пожалуйста правильную формулу пересчета, а не "блям-блям". Сравниваю свои файлы с файлами программы chnav и вижу разницу также в измерении DOPLER - его я пишу в PINEX таким, как в описании протокола SirfStar, а надо вероятно переводить из метров в Герцы. Может chnav прояснит ситуацию. Плохо я знаю SirfStar. Если из-за фазы в метрах будет каша, то отключите фазовые измерения уже в программе постобработки - пусть останется только кодовое измерение, пока не прояснится с пересчетом. Выкладываю подработанные файлы программы для ОС Win-Desktop и Win-CE/Mobile.
Отвечаю сам себе, вроде разобрался: магеланновская программа работает на скорости 9200 в nmea режиме. следовательно такие настройки и ставить в kinematik.- в разделе "переключить на nmea при выходе"
О Доплере замолвите слово! Garmin & SirfStar-II chipsets (eTrex, GPS72, GPSMap60) Message_16 (decimal 22): ====================================================== ' из DeltaPR получается Doppler=DeltaPR/Lambda, Lambda=c/L1, c=2.99792458, L1=1575420000 Const Lambda = 0.19029367279836488047631742646405 DeltaPR As Single ' Delta_Pseudorange_rate (m/s) - 32 bit и получаются доплеры такого порядка: 35000.000 Hz GlobalSat & SirfStar-II SirfStar-III chipsets (BT-3xx, ...) Message_1C (decimal 28): ====================================================== // 1. Carrier frequency may be interpreted as the measured Doppler on the received signal. // The value is reported in metres per second but can be converted to hertz using the Doppler equation: // Doppler frequency / Carrier frequency = Velocity / Speed of light, where Doppler frequency is in Hz; Carrier frequency = // 1,575,420,000 Hz; Velocity is in m/s; Speed of light = 299,792,458 m/s. const float KDOPLER = 5.255035469; // Carrier frequency / Speed of light = 1575420000 Hz / 299792458 m/s if (MID1C.CountPhErr==0 && MID1C.CountLPow==0) Dopler[MID1C.SVID] = MID1C.C1 * KDOPLER; // Carrier-Frequency (m/Sec) --> Doppler frequency (Hz) и получаются доплеры несколько иного порядка: 95000.000 Hz Так как правильно вычислять эти доплеры, кто объяснит? Об эфемеридах спутников ================= Эфемериды спутников В НАЧАЛЕ работы программы выдают приборы SirfStar-II и совсем не хотят выдавать их приборы SirfStar-III. В случае постобработки сессии (и статики и кинематики) эфемериды можно взять из интернета и тогда они не нужны в программе. Но если днем сделана съемка, а вечером ее надо обработать, то интернет не поможет - там еще нет данных от различных базовых станций. Поправки к измеренным "ровером" точкам "база" может вычислять опираясь на ТЕКУЩИЕ ЭФЕМЕРИДЫ. Изменение будет такое: программа после нажатия кнопки "STOP" запрашивает эфемериды, записывает их в конце бинарного файла и только потом завершает работу. Из приемников Garmin GPS25/35 я получал эфемериды и из них программа делала RINEX-NAV файл. Так нужны, или не нужны эти эфемериды? Об "устаревших" навигаторах ========================== Так случилось, что купил я первым навигатор Garmin GPSMap 60cx - за красоту. Хороший прибор, но никаких "сырых" данных не выдает. Это особенность Гармина+СирфСтара при переходе с чипсета SirfStar-II на чипсет SirfStar-III. Потом купил приемник Garmin GPS-35 на чипсете SirfStar-II. Его бинарный протокол совершенство для постобработки, всего 2 сообщения общим размером 300 байт. Но в этих байтах есть и псевдодальность и фаза и доплер, а также позиция и скорости вычисленные приемником. Но нет дисплея и входа для внешней антенны. Я проштудировал, что выпускает Гармин на SirfStar-II и купил навигаторы GPS-72 и eTrex Venture, а хотелось GPSMap60 (без всяких буковок). В первых двух нет разъема для внешней антенны. У последнего такой разъем есть, но самого навигатора нет НИГДЕ в продаже. Три недели назад нашел у америкосов, под рубрикой REFURBISHED (восстановленный/отремонтированный). Рискнул и купил. Сегодня получил и включил на тестирование. Количество спутников и уровки сигналов близко к BT-338 (SirfStar-III) Я не обнаружил ни царапинки ни пятнышка на корпусе, на стекле дисплея и внутри. Через 10 минут он стал выдавать сырые данные на 6-7-8-9 спутников. Рядом лежала внешняя антенна ANT GPS/GLONASS T-AT112 SMA-M 5M (TELCAB итал.) соединенная с GlobalSat BT-308, который находил с нее сырые данные на 3-4 спутника. Все это конечно первые впечатления, но они весьма приятные. Вот только найти переходник антенного кабеля SMA--на--MCX, у меня пока есть SMA--на--MMCX. К чему я все это? По моим наблюдениям производители бытовых навигаторов не вернутся к выдаче пользователю сырых измерений. Залезать внутрь прибора и искать пути разблокировки этой выдачи могут/захотят/сделают совсем немногие, а получив положительный результат скорее всего не обнародуют. А приборы Гармина и СирфСтар на чипах SS-II пока еще есть в продаже у очень прагматичных америкосов и китайцев. И цены на них приемлемые. И проработать такие приборы могут 3-5 лет. Жаль, что наши спутниковые деляги увлечены получением денежки от госструктур, транспорта и т.п. Поэтому дешевых приемников на 2 навигационных созвездия в близкой перспективе не видно. Американцам это надо в сослагательном наклонении. Европейцы никак не одолеют своего Галилея (а китайцы похоже перехватят у них частоты сделав рабочее созвездие первыми). То есть "Европа нам не поможет", "однозначно". Если только китайцы с корейцами не "выручат" - они успевают везде.<br><br>Тема закрыта! Продолжение в теме "Программа работы с бытовыми навигаторами в практике геодезиста - 2".
В последние 18 месяцев у меня не было никаких программ постобработки спутниковых измерений. И только на днях нашел TopconTools-6 и GNSS-Solutions (спасибо за подсказку в старых темах В.Шуфотинскому). Как же я был "обрадован" тем, что мои RINEX'ы никуда не годятся. И ведь никто из читателей/писателей этой темы не сказал мне об этом. Ай-яй-яй коллеги!!! 1. Исправлены ошибки форматирования строк в RINEX-OBS файле. Но и после этих исправлений RINEX-OBS файл "понимает" программа Topcon-Tools, а GNSS-Solutions сообщает, что формат файла неправильный. 2. В обеих вариантах (Win-Desktop и Win-CE/Mobile) появилось наполнение окна Meassurement (Измерения). Информация в этом окне несколько различается для разных приемников (зависит от того, кто и что из них может выдать). 3. Добавлена обработка бинарного протокола очень интересного навигатора Garmin GPSMap-60 (без всяких дополнительных букв). Он построен на чипсете SirfStar-II и оказалось, что в нем одновременно присутствуют почти все Messages навигаторов серии Garmin eTrex/GPS-72 и сообщение Message_34 полностью повторяющее Message_29 приемника Garmin GPS-25/35. Пока остановился на том, что программа будет работать с ним по набору сообщений eTrex'а, дальше будет видно. Примеры работы программы с разными приемниками выложу немного позже. Я до сих пор не знаю, как правильно обрабатывать Phase и Doppler из протокола SirfStar (MID-28). Где же знатоки, которые подскажут? Прошу помощи! В архиве-приложении Mobile-версия проверена только на наладоннике HP iPaq 4700 (WinCE 4.2), но должна работать и на Mobile-5.
Обещал я проверить программу GNSSMonitor в поле на полигоне, да не выходило никак. И вот в субботу спонтанно решил все-таки обещанное сдержать. В комплект с двумя НР 214-ми, на которые установлена GNSSMonitor, взял для проверки 2 ВТ-308 с внешними антеннами. Сразу результаты: 1. Результатов нет, просто потому что ничего не было записано. Делал все, как написано в прилагающемся к програме info: write files---выбираю Sirf II----порт, скорость----жму Start----соединение вроде произошло (вроде - потому что не знал, как проверить, что соединился с приемником). Внизу в двух строках было написано : for 27 sat almanac found, for 0 sat ephemer found. Ждал-ждал, нажал Accept, и в строке даже побежали байты, т.е. по сути соединение было выполнено и принимались данные, а вот только никуда не записывались. И так я простоял около 4 часов то с одним приемником, то с другим. 2. Уходить ни с чем из поля было бы досадно, и я записал файлы через программу kinematic (благо она была сохранена на кпк). 3. Обработать эти файлы не удалось ни в ТГО, ни в Топкон Tools. Чуть позже выложу эти файлы и прошу помощи в обработке или поясните, почему программы не хотят их обрабатывать.
Оффтоп (Move your mouse to the spoiler area to reveal the content) А пчему не русский интерфейс программы?(ради любопытства ) (Добавление) landsurveyor Сделайте пож шапку этой темы и сложить туда все варианты проги и инструкции с помощью автора.