Garmin USB напрямую

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

Модераторы: Tolik, zed

Garmin USB напрямую

Сообщение vasketsov » 07 окт 2011, 15:42

Регулярно подрубаю навигатор к сасу. Задолбалось юзать всякие костыли и прокладки.
Предлагаю сделать прямую поддержку. Бесплатно. Быстро.
Кодил сам лично своими руками, на основе Garmin SDK и мануалов к 18-му ресиверу.
Правда пришлось и с отладчиком посидеть и поглядеть, чего всякие ozi делают.
В общем вот тестовая софтина в аттаче.
Желающие потестить - запускайте её при подключенном навигаторе Garmin через USB.
Она выдаст на экран некоторую инфу по девайсу + данные по координатам и спутникам, которые в "боевой" ситуации будут юзаться уже по-боевому.
Так что на размер внимания не обращайте, там много лишнего пока что.
Выданную инфу кидайте сюда (что лучше) или мне в личку или почту (что хуже), лучше не принтскринами, а в текстовом виде (здесь - в тэг SPOILER).
Главное что надо - это модель девайса, версия прошивки и список поддерживаемых протоколов.
Остальное - если там не будет ошибок и неизвестных данных - можно в принципе и не кидать. См. ниже мою версию данных.
Если будут ошибки или вообще не заработает - тем более отпишитесь.

PS. От греха подальше в строке с координатами замените координаты на любые другие понравившиеся, достаточно просто изменить целое число градусов.
Других данных о местоположении, которые бы позволяли его идентифицировать, программа не выводит.
Если будете запускать из консоли в виде "vsagarminusb.exe > a.txt" - там в конце "Press ENTER to close" - не забываем жать Enter.

Список протестированных приборов:
Gpsmap 76csx - благодарности уходят vasketsov.
Oregon 550 - благодарости уходят garl.
Вложения
vsagarminusb.zip
третья версия
(62.92 KiB) Скачиваний: 481
Последний раз редактировалось vasketsov 10 окт 2011, 15:46, всего редактировалось 8 раз(а).

За это сообщение автора vasketsov поблагодарил:
ingener (06 апр 2013, 17:10)
vasketsov
Специалист
 
Сообщения: 727
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 153 раз.

Re: Garmin USB напрямую

Сообщение vasketsov » 07 окт 2011, 15:45

CREATED
CONNECTED
SESSION STARTED
DEV_INFO: Product_ID=292, Software_version=400
GPSMap76CSX Software Version 4.00
VERBMAP Rec Routable Hwy Basemap, ATL v2 2.00
VERSMAP XXXXXXXX 0.00
VERGPROM International Marine POI 1.00
SIRFGPS GSC3f Software Version 3.00

PROTOCOLS:
скрытый текст: показать
A010
A100
A1010
A1011
A201
A301
A400
A500
A600
A601
A700
A800
A801
A900
A902
A903
A904
A905
A907
A908
A914
A916
A917
A918
D110
D202
D210
D302
D312
D501
D600
D601
D700
D800
D801
D900
D907
D908
D909
D910
D911
D917
D918
L001
P000
T001

Unit_ID=XXXXXXXX
API_Version=1
USB_Packet_Size=64
COORD: signal
svid=25, snr=2440, elev=27, azmth=166, status=5
svid=13, snr=2540, elev=6, azmth=346, status=21
svid=31, snr=2830, elev=19, azmth=248, status=21
svid=21, snr=3340, elev=43, azmth=220, status=21
svid=29, snr=2770, elev=75, azmth=106, status=21
svid=10, snr=3200, elev=3, azmth=23, status=17
svid=2, snr=2570, elev=10, azmth=58, status=5
svid=30, snr=2630, elev=54, azmth=211, status=21
svid=6, snr=2380, elev=2, azmth=283, status=1
svid=5, snr=2970, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0
(D800_Pvt Data_Size = 64)
(fix=3, h_err=10.3, v_err=4.5, alt=198)
(lon=XX.6359053, lat=XX.8525966, heading=-137)
(full_speed=0.2 km/h, v_speed=0 m/s)
COORD: Abort_Transfer
COORD: signal
svid=25, snr=2420, elev=27, azmth=166, status=5
svid=13, snr=2540, elev=6, azmth=346, status=21
svid=31, snr=2820, elev=19, azmth=248, status=21
svid=21, snr=3340, elev=43, azmth=220, status=21
svid=29, snr=2790, elev=75, azmth=106, status=21
svid=10, snr=3200, elev=3, azmth=23, status=17
svid=2, snr=2560, elev=10, azmth=58, status=5
svid=30, snr=2640, elev=54, azmth=211, status=21
svid=6, snr=2370, elev=2, azmth=283, status=1
svid=5, snr=2970, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0
(D800_Pvt Data_Size = 64)
(fix=3, h_err=10.3, v_err=4.5, alt=197.1)
(lon=XX.635911, lat=XX.8525943, heading=-29)
(full_speed=0.5 km/h, v_speed=-0.1 m/s)
svid=25, snr=2440, elev=27, azmth=166, status=5
svid=13, snr=2540, elev=6, azmth=346, status=21
svid=31, snr=2830, elev=19, azmth=248, status=21
svid=21, snr=3340, elev=43, azmth=220, status=21
svid=29, snr=2770, elev=75, azmth=106, status=21
svid=10, snr=3200, elev=3, azmth=23, status=17
svid=2, snr=2570, elev=10, azmth=58, status=5
svid=30, snr=2630, elev=54, azmth=211, status=21
svid=6, snr=2380, elev=2, azmth=283, status=1
svid=5, snr=2970, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0
COORD: signal
svid=25, snr=2400, elev=27, azmth=166, status=5
svid=13, snr=2540, elev=6, azmth=346, status=21
svid=31, snr=2810, elev=19, azmth=248, status=21
svid=21, snr=3340, elev=43, azmth=220, status=21
svid=29, snr=2800, elev=75, azmth=106, status=21
svid=10, snr=3190, elev=3, azmth=23, status=17
svid=2, snr=2570, elev=10, azmth=58, status=5
svid=30, snr=2660, elev=54, azmth=211, status=21
svid=6, snr=2370, elev=2, azmth=283, status=1
svid=5, snr=2980, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0
(D800_Pvt Data_Size = 64)
(fix=3, h_err=10.4, v_err=4.5, alt=196.4)
(lon=XX.6359153, lat=XX.8525937, heading=107)
(full_speed=0.4 km/h, v_speed=-0.1 m/s)
svid=25, snr=2440, elev=27, azmth=166, status=5
svid=13, snr=2540, elev=6, azmth=346, status=21
svid=31, snr=2830, elev=19, azmth=248, status=21
svid=21, snr=3340, elev=43, azmth=220, status=21
svid=29, snr=2770, elev=75, azmth=106, status=21
svid=10, snr=3200, elev=3, azmth=23, status=17
svid=2, snr=2570, elev=10, azmth=58, status=5
svid=30, snr=2630, elev=54, azmth=211, status=21
svid=6, snr=2380, elev=2, azmth=283, status=1
svid=5, snr=2970, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0
COORD: signal
svid=25, snr=2390, elev=27, azmth=166, status=5
svid=13, snr=2550, elev=6, azmth=346, status=21
svid=31, snr=2800, elev=19, azmth=248, status=21
svid=21, snr=3350, elev=43, azmth=220, status=21
svid=29, snr=2800, elev=75, azmth=106, status=21
svid=10, snr=3190, elev=3, azmth=23, status=17
svid=2, snr=2590, elev=10, azmth=58, status=5
svid=30, snr=2670, elev=54, azmth=211, status=21
svid=6, snr=2370, elev=2, azmth=283, status=1
svid=5, snr=2970, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0
(D800_Pvt Data_Size = 64)
(fix=3, h_err=10.5, v_err=4.5, alt=195.8)
(lon=XX.6359176, lat=XX.8525938, heading=93)
(full_speed=0.4 km/h, v_speed=-0.1 m/s)
svid=25, snr=2440, elev=27, azmth=166, status=5
svid=13, snr=2540, elev=6, azmth=346, status=21
svid=31, snr=2830, elev=19, azmth=248, status=21
svid=21, snr=3340, elev=43, azmth=220, status=21
svid=29, snr=2770, elev=75, azmth=106, status=21
svid=10, snr=3200, elev=3, azmth=23, status=17
svid=2, snr=2570, elev=10, azmth=58, status=5
svid=30, snr=2630, elev=54, azmth=211, status=21
svid=6, snr=2380, elev=2, azmth=283, status=1
svid=5, snr=2970, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0
COORD: signal
svid=25, snr=2370, elev=26, azmth=166, status=5
svid=13, snr=2540, elev=5, azmth=346, status=21
svid=31, snr=2790, elev=19, azmth=248, status=21
svid=21, snr=3350, elev=43, azmth=220, status=21
svid=29, snr=2800, elev=75, azmth=106, status=21
svid=10, snr=3190, elev=3, azmth=23, status=17
svid=2, snr=2580, elev=10, azmth=58, status=21
svid=30, snr=2680, elev=54, azmth=211, status=21
svid=6, snr=2370, elev=2, azmth=283, status=1
svid=5, snr=2990, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0
(D800_Pvt Data_Size = 64)
(fix=3, h_err=10.6, v_err=4.5, alt=195.3)
(lon=XX.6359194, lat=XX.8525945, heading=112)
(full_speed=0.5 km/h, v_speed=-0.1 m/s)
svid=25, snr=2440, elev=27, azmth=166, status=5
svid=13, snr=2540, elev=6, azmth=346, status=21
svid=31, snr=2830, elev=19, azmth=248, status=21
svid=21, snr=3340, elev=43, azmth=220, status=21
svid=29, snr=2770, elev=75, azmth=106, status=21
svid=10, snr=3200, elev=3, azmth=23, status=17
svid=2, snr=2570, elev=10, azmth=58, status=5
svid=30, snr=2630, elev=54, azmth=211, status=21
svid=6, snr=2380, elev=2, azmth=283, status=1
svid=5, snr=2970, elev=38, azmth=68, status=21
svid=12, snr=65436, elev=1, azmth=152, status=0
svid=16, snr=65436, elev=13, azmth=317, status=0

DISCONNECTED
vasketsov
Специалист
 
Сообщения: 727
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 153 раз.

Re: Garmin USB напрямую

Сообщение zed » 07 окт 2011, 21:47

Это касается только гарминов или протокол стандартный?
Хитрости GoogleEarth - то, чего вы не знаете о гугле
Аватара пользователя
zed
Гуру
 
Сообщения: 1519
ICQ: 357167611
Зарегистрирован: 16 авг 2008, 20:21
Откуда: Беларусь, Могилёв
Благодарил (а): 37 раз.
Поблагодарили: 177 раз.

Re: Garmin USB напрямую

Сообщение garl » 07 окт 2011, 22:07

в понедельник попробую на Oregon 550. патченом.
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Специалист
 
Сообщения: 941
ICQ: 275245033
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар
Благодарил (а): 30 раз.
Поблагодарили: 100 раз.

Re: Garmin USB напрямую

Сообщение vasketsov » 08 окт 2011, 00:35

zed писал(а):Это касается только гарминов или протокол стандартный?

Только гарминов.
Протокол стандартный гарминовский. Краеугольный анус гармина в том, что по разным оценкам от "многие" до "подавляющее большинство" их не умеет по USB кидаться данными NMEA.

Garmin Device Interface Specification
May 19, 2006
Это я к тому, что протокол старый и не менялся, только новые вызовы добавляются.

По идее должно работать на всех, с некоторыми оговорками.
Оговорки вида "на некоторых планшетных авиационных навигаторах работает не протокол А, а протокол Б, там такие-то ограничения, нет таких-то полей,...".
Но в принципе должно работать. На обычных пользовательских уж точно. Если нет - список поддерживаемых протоколов поможет понять, почему не работает и как сделать чтоб работало.
vasketsov
Специалист
 
Сообщения: 727
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 153 раз.

Re: Garmin USB напрямую

Сообщение garl » 10 окт 2011, 08:37

Garmin OREGON 550 Patched Version 4.50
Версия ПО GPS 5.00
патчился для поддержки jnx
Код: Выделить всё
C:\>vsagarminusb.exe
CREATED
EGarminUSB_Fatal_Exception: SetupDiEnumDeviceInterfaces (error_code=259)
Press ENTER to close

неясно одно: при подключении он детектится как 2 съёмных диска.
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Специалист
 
Сообщения: 941
ICQ: 275245033
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар
Благодарил (а): 30 раз.
Поблагодарили: 100 раз.

Re: Garmin USB напрямую

Сообщение vasketsov » 10 окт 2011, 11:58

garl писал(а):SetupDiEnumDeviceInterfaces (error_code=259)

Это значит, что программа просто вообще не видит гармин.
По идее подключенных к компу приёмников может быть несколько - у них будут разные "имена".
Так вот на определении этого списка "имён" прога и обламывается.
В общем-то рецепт один - поиграться с настройками, чтобы приёмник подключался НЕ как внешний диск (есть правда ещё вариант, но это скорее шаманство, чтобы девайс думал, что подключен к зарядке, а не к компу, вроде в инете что-то было на эту тему). Когда подключено как внешний диск - работать не будет точно, там же в частности прямой доступ к треку открывается (хотя возможно там как раз можно мониторить лог именно таким образм, в общем почитаю про OREGON 550 что найду).

Например, на GPSMAP 76CSX в настройках интерфейса есть выбор:
Garmin
NMEA In/NMEA Out
Text Out
Выкл.

Ну и собственно Mass Storage.
На первых двух у меня прога работает, на вторых двух даже не пробовал и не собираюсь.
vasketsov
Специалист
 
Сообщения: 727
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 153 раз.

Re: Garmin USB напрямую

Сообщение garl » 10 окт 2011, 12:18

vasketsov писал(а):Например, на GPSMAP 76CSX в настройках интерфейса есть выбор:
Garmin
NMEA In/NMEA Out
Text Out
Выкл.

Ну и собственно Mass Storage.
На первых двух у меня прога работает, на вторых двух даже не пробовал и не собираюсь.

ну опция такая есть, но от неё ничего не зависит. всёравно подключается как влэш диски (сам прибор + карточка)
может есть какая команда перключения из режима флэшки в режим приёмника?
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Специалист
 
Сообщения: 941
ICQ: 275245033
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар
Благодарил (а): 30 раз.
Поблагодарили: 100 раз.

Re: Garmin USB напрямую

Сообщение vasketsov » 10 окт 2011, 12:28

А например Google Earth может к нему подключиться? Как PVT или как NMEA?
Или GPSMapEdit?
Не зря ж у девайса в характеристиках написано
Подключение USB
Поддержка стандарта NMEA 0183 есть


Вообще согласно оригинальному мануалу, в режиме Garmin Spanner создаётся виртуальный ком-порт и через него льётся NMEA (то есть по идее и сейчас должно работать в сасе), а в режиме Garmin Serial должно валиться через USB в формате PVT.
Последний раз редактировалось vasketsov 10 окт 2011, 12:47, всего редактировалось 1 раз.
vasketsov
Специалист
 
Сообщения: 727
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 153 раз.

Re: Garmin USB напрямую

Сообщение garl » 10 окт 2011, 12:44

ура заработало

скрытый текст: показать
C:\>vsagarminusb.exe
CREATED
CONNECTED
SESSION STARTED
DEV_INFO: Product_ID=896, Software_version=450
Oregon 550 Patched Version 4.50
VERBMAP Worldwide Autoroute DEM Basemap, NR 4.00
VERSMAP Дороги России. РФ. Топо. Версия 6.07. 0.00
VERTZMAP Time Zone Map 7.00

PROTOCOLS:

Unit_ID=<Мой_Код_прибора>
API_Version=1
USB_Packet_Size=512
COORD: signal
ANOTHER SIZED: (Packet_Type=20, Packet_ID=248, Data_Size=109)
ANOTHER SIZED: (Packet_Type=20, Packet_ID=253, Data_Size=108)
COORD: Abort_Transfer
COORD: signal
svid=2, snr=65436, elev=62, azmth=113, status=20
svid=4, snr=65436, elev=29, azmth=50, status=20
svid=5, snr=65436, elev=4, azmth=134, status=20
svid=9, snr=65436, elev=29, azmth=184, status=20
svid=10, snr=65436, elev=13, azmth=83, status=20
svid=12, snr=65436, elev=82, azmth=48, status=20
svid=14, snr=65436, elev=11, azmth=278, status=20
svid=25, snr=65436, elev=55, azmth=307, status=20
svid=27, snr=65436, elev=19, azmth=177, status=20
svid=29, snr=65436, elev=30, azmth=253, status=20
svid=30, snr=65436, elev=10, azmth=303, status=20
svid=31, snr=65436, elev=9, azmth=326, status=20
(D800_Pvt Data_Size = 64)
EInvalidOp: Invalid floating point operation
Press ENTER to close
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Специалист
 
Сообщения: 941
ICQ: 275245033
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар
Благодарил (а): 30 раз.
Поблагодарили: 100 раз.

След.

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

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

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

cron