Автор |
Сообщение |
|
Дата: 05 Сен 2008 21:04:58
#
GenaSPB
А можно - запрограммировать его на приём в другой программе - а потом запустить мою?
Или, при штатном завершении управляющей программы приёмник выключается? Тогда - через task manager - End Process (не End Task) - и запустить мою.
При такой методке удаётся запустить Вашу программу, но проявляется несколько вещей:
Программа начинает надолго задумываться.
Значение с-метра так и не работало, единственное что, несколько раз показало значение 1
Приёмник в таком режиме вырубается автоматом примерно через 30сек. Типа по таймауту что ли...
|
|
Дата: 05 Сен 2008 22:53:49
#
geka
Спасибо за проверку... Нужно железо. Живое.
|
Реклама Google
|
|
|
Дата: 06 Сен 2008 00:10:04
#
Еще актуально? Есть человек в Москве, который может попробовать реализовать.
|
|
Дата: 06 Сен 2008 00:17:38
#
Deorf
Да, актуально.
|
|
Дата: 06 Сен 2008 14:32:13
#
Всем добрый день..
Некоторая информация по приемникам GPS
По результатам собственных исследований))
http://www.gpsportal.ru/articles_info/?nid=760a32b55dfd3f00a4a3fedb4b7f9dca
http://ru.wikipedia.org/wiki/NMEA
"...К сожалению, приемники с USB –портом не поддерживают NMEA протокол, ограничивая его настройки только протоколом «Garmin».."
Из статьи следует
1. Каждый производитель лепит свои стандарты
2. Существенная зависимость от чипсета
Вчера тестил два устройства - вроде так и есть.. Нашел интересную возможность - допустимо подключать девайсы через переходник RS-232/USB
Т.е. можно старые девайсы подключать. А так надо программировать не под NMEA, а под конкретное устройство.
И обязательно выставлять в девайсе нужные протоколы.
Еще выход из положения - подключить библиотеку с драйверами. Так и буду делать... |
|
Дата: 06 Сен 2008 15:23:20
#
geka, , добрый день.
Я смотрел коды для управления pcr1000, внизу результаты.
1. Как я понял, сначала должна проходить команда инициализации устройства - установки частоты, режима работы и т.д.
Она у меня выглядит так (отрывок):
int init( int fd, int init_done, char *input_buffer ) {
char output[100];
if ( init_done < 5 ) {
if ( ( cmd_line.debug_level >= 1 ) & ( cmd_line.daemon == 0 ) )
// Проверяем работу портов
fprintf( stdout, "Sending Radio Init String
" );
strcpy( output, "H101x0dx0aG300x0dx0a" );
write( fd, output, strlen( output ) );
init_done++;
}
return init_done;
}
2. Затем программа начинает соб-но работать с девайсом,
там след шаги а) послать массив данных б) получить ответ и
начинать разбор ответа (такой своеобразный "парсинг").
3. Наконец, по окончанию работы программа закрывает порты.
Думаю, когда вы включаете программу для управления от Icom - там проходит инициализация (включаются все настройки).
Ес-но, после этого можно делать запрос к данных, но, видимо,
нужно какое-то подтверждение.
Еще кое-что... В программе, которую я смотрел, все сделано на структурах.
Вот отрывок:
struct radio_report { char squ[ 8 ]; char sig[ 8 ]; char foffset[ 8 ];
char pwr[ 8 ]; int ok; int ng; int count; char input_buffer[ 256 ];
int report_enable; double last_freq; int last_mode; int last_filter;
} rpt ;
struct radio_command { char volcmd[ 8 ]; char squcmd[ 8 ];
char agccmd[ 8 ]; char if_shiftcmd[ 8 ]; char attncmd[ 8 ];
char nbcmd[ 8 ]; char off_cmd[ 8 ]; char freq_command[ 32 ];
} cmd ;
struct command_line { int init_radio ,init_volume, init_squelch;
int init_if_shift, init_attn, init_agc, init_nb; int default_mode, default_filter; int opt_d; int opt_off; int loop; int convert; int debug_level; char port[ 32 ]; char default_port[ 32 ]; char filter[ 16 ], mode[ 16 ]; char volume[ 16 ]; char squelch[ 16 ]; char if_shift[ 16 ]; int assigned_port; char raw_mode[ 16 ]; char raw_filter[ 16 ]; int init_done; double freq; char freq_command[ 32 ]; char freq_command_output[ 32 ]; int daemon;
} cmd_line ;
|
|
Дата: 25 Сен 2008 18:08:14
#
Я сам писал проги с полным управлением айкомами. Никаких библиотек под винду не надо, всё делается на API. Но вы в курсе, насколько кривой с-метр у айкомов ? Толком по нему ничего не померять.
|
|
Дата: 25 Сен 2008 18:16:03
#
wolandy
Нужен относительный показометр не претендующий на точность и линейность.
Хотя вопрос "кривизны" спорный - R-20 тут недавно обмерили на ГСС, так получилась даже какая-никакая, но все же цена деления...
|
|
Дата: 25 Сен 2008 18:39:20
#
вот как под винду хп и 2000 делается примерно/ что айком, что гпс через ком-порт юзать
rpu.hCOM=CreateFile(".com3",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if (rpu.hCOM==INVALID_HANDLE_VALUE)
{rpu.Err=1;continue;}//error open port
SetupComm(rpu.hCOM,1600,1600);
if ( !BuildCommDCB("9600,n,8,2",&rpu.DCB) )
{rpu.Err=2;continue;}//error from control-device string
rpu.DCB.fDtrControl=DTR_CONTROL_DISABLE;
rpu.DCB.fRtsControl=RTS_CONTROL_DISABLE;
rpu.DCB.fDsrSensitivity=false;
rpu.DCB.fNull=false;
if (!SetCommState(rpu.hCOM,&rpu.DCB)) {rpu.Err=3;continue;}//error Setup port
а запись чтение как обычно WriteFile, ReadFile
|
|
Дата: 25 Сен 2008 18:39:51 · Поправил: wolandy (25 Сен 2008 18:43:15)
#
вместо ".com3" там должно быть "четыре слеша точка два слеша (обратных) com3" , что-то не пропускается такая комбинация в сообщение
|
|
Дата: 26 Сен 2008 00:34:14 · Поправил: GenaSPB (26 Сен 2008 00:36:34)
#
Вообще-то исходники скелета с ком-портом давно выложены в этой теме - но на всякий случай оттуда копирую.
Добавление пррефикса требуется только для больших номеров портов (кажетс, больше 4 или 9).
CString PortNameArrange(LPCTSTR shortPortName)
{
OSVERSIONINFO osinf;
osinf.dwOSVersionInfoSize = sizeof osinf;
if (::GetVersionEx(& osinf) == FALSE)
return shortPortName;
const BOOL bIsW9X = (osinf.dwPlatformId != VER_PLATFORM_WIN32_NT);
if (bIsW9X == FALSE)
{
return CString(_T("%%%%?%%")) + shortPortName;
}
return shortPortName;
}
вместо процентиков - бэкслэши поставить (форум не даёт вставить текст)
|
|
Дата: 31 Окт 2009 11:56:03
#
Так дело ничем и не закончилось. Жаль.
|
|
Дата: 31 Окт 2009 12:00:44 · Поправил: Rulez Reloaded (31 Окт 2009 12:02:40)
#
Lotus
Угу. Программист, готовый взяться за реализацию, так и не нашелся.
|
SilentУчастник
с мая 2005 г. Сокол, Вологодская обл. CQ de RA1QLL! Сообщений: 4466
|
Дата: 31 Окт 2009 12:53:51
#
Я пробивал эту тему у нас в ВГПУ, думал, может кто возьмет на диплом, но все забоялись. Тепрь только если на следующий год найдется желающий.
|
|
Дата: 31 Окт 2009 14:56:12
#
У меня, кажется есть человек, готовый за подобное взяться. Требуется уточнение технического задания, количества желающих и суммы денег программисту.
|
|
Дата: 31 Окт 2009 15:24:32
#
Может за основу принять эти данные ?
Я, из эгоистических соображений, кое что подправил...
Нужен некий Win32-софт для приемника, который умеет работать с GPS и одним из распостраненных приемников (оптимально ICOM PCR1000).
Задача: логгировать значение S-метра приемника и одновременно с ним: время, координаты, высоту над уровнем моря.
Записывать эти данные раз в n секунд/минут в файл или некую быструю/маленькую СУБД.
Потом (в "оффлайне") эти данные нужно будет экспортировать в XML (KML) с целью последующей визуализации в Google Earth в виде треков с цветными точками (никакого отображения или расчета зон не требуется - то есть, речь идет о банальной визуализации кучи точек). Каждая точка должна иметь цвет в зависимости от уровня принимаемого сигнала.
В силу своих эгоистических потребностей, я хотел бы, чтобы данные от приёмника шли в "онлайне" прямо на экран ноутбука в виде слоя для Mapinfo. Ну и записывались при этом, чтобы имелась возможность посмотреть записанное ранее.
|
Реклама Google |
|