Автор Тема: модуль к Writelog для полевого дня  (Прочитано 3771 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ra9ftm

  • Пользователь
  • **
  • Сообщений: 31
  • Репутация: +6/-0
модуль к Writelog для полевого дня
« : 26 Июнь 2008, 08:00:06 »
Представляю вашему вниманию для тестирования переделанный модуль от DL1EFD.
Прошу писать ваши замечния!
Нужно проверить все ли четко в сети будет работать, хотя проблем быть не должно.


Вот readme:

Модуль для Чемпионата РФ на УКВ
версия 0.1 от 26.06.2008
На основе IARU V/U/S contest модуля DL1EFD.
by ra9ftm Email: ra9ftm (at) yandex.ru


файлы vhffd.dll и vhffd.txt положить в writelog\programs

регистрация модуля как обычно: regsvr32 vhffd.dll
-------------

Расстояние между QTH-локаторами не всегда совпадают с тем, что считает ua4nal
(иногда больше - иногда меньше)

Алгоритм полностью взял у dl1efd, он ниже. Если кто-то хочет сделать
исправления, милости просим...

long CVHFFD::PointsForQso(QsoPtr_t q)
{
   static const double pi = 3.14159265358979323846;

   char *loc = q->var_part+AYG_POS;

   if ( !IsValidLocator( q->var_part+AYG_POS ) )
       return 0;
   
   double myLong=-180.0, hisLong=-180.0;
   double myLat=-90.0, hisLat=-90.0;

   myLong += (m_MyGrid[0]-'A')*20 + (m_MyGrid[2]-'0')*2;
   myLat += (m_MyGrid[1]-'A')*10 + (m_MyGrid[3]-'0');

   hisLong += (loc[0]-'A')*20 + (loc[2]-'0')*2;
   hisLat += (loc[1]-'A')*10 + (loc[3]-'0');

   myLong += (m_MyGrid[4]-'A'+0.5)/12.0; // 0.5 for centre of the square
   myLat += (m_MyGrid[5]-'A'+0.5)/24.0;

   hisLong += (loc[4]-'A'+0.5)/12.0;// 0.5 for centre of the square
   hisLat += (loc[5]-'A'+0.5)/24.0;

   // convert to radians
   myLong = myLong*pi/180.0;
   myLat  = myLat*pi/180.0;
   hisLong= hisLong*pi/180.0;
   hisLat = hisLat*pi/180.0;

   // now we have latitude and longitude, we can calculate the distance
   double distance;
   distance = 111.2 * 180.0 *
      acos( sin(hisLat)*sin(myLat) +
      cos(hisLat)*cos(myLat)*cos(hisLong-myLong) ) / pi;

   distance += 0.00001; // so that the same locator gives 1 point else

   int score = (long)ceil( distance );

   if (q->band == 1) score*=4;
   if (q->band == 2) score*=10;

   return score;

}


-------------

Вот такой каламбур изменений относительно модуля dl1efd,
для себя пометки делал, возможно обывателю будет не понятно: =)



QTH_LOC: можно ввести 4 символа локатора и уже покажет примерное направление и дальность
но мульт за такой локатор не начисляется и очки не прибавляются :)
P.S. или все же сделать чтоб считались??


подсчет очков по условиям "Чемпионата РФ на УКВ"
убраны лишние диапазоны
убрал подсчет и отображение стран (DXCC)


Поправил EDI. Его не кушала прога UA4NAL. Импортировать нужно именно его.

С ADIF ничего сделать не могу. Оказывается проге UA4NAL нада чтобы каждое QSO было в отдельной строке.
За это модуль не отвечает.

Cabrillo генерит в один большой файл за все диапазоны.



! Не забудьте зайти в меню Setup->Sort order and serial numbers и отметить там "Separate by band" :)
Также поставьте свой локаторв меню Contest->Parameter setup


переделал Summary sheet




-----------------
« Последнее редактирование: 28 Июнь 2008, 09:57:17 от ra9ftm »

Оффлайн RA3AQ

  • УКВ комитет
  • Ветеран
  • *****
  • Сообщений: 2489
  • Репутация: +257/-48
  • QRA: KO85sp
Re: модуль к Writelog для полевого дня
« Ответ #1 : 26 Июнь 2008, 10:19:41 »
Было бы хорошо для вычисления расстояний использовать модель Земли ввиде элипсоида WGS84 как это рекомендует IARU R1 .
Достаточно точную формулу можно найти здесь http://www.movable-type.co.uk/scripts/latlong-vincenty.html

Еще есть формула, которую использует K1JT в WSJT http://svn.berlios.de/wsvn/wsjt/WSJT/trunk/GeoDist.f
73 de RA3AQ

Оффлайн ra9ftm

  • Пользователь
  • **
  • Сообщений: 31
  • Репутация: +6/-0
Re: модуль к Writelog для полевого дня
« Ответ #2 : 26 Июнь 2008, 18:09:57 »
пришлось еще пару критический испавлений сделать.

Последнюю версию можно здесь забрать http://ua9fbv.narod.ru/NEWS/DOCs/misc/Schemes/Sch.htm

Последняя версия 0.4
« Последнее редактирование: 26 Июнь 2008, 18:16:06 от ra9ftm »

Оффлайн ra9ftm

  • Пользователь
  • **
  • Сообщений: 31
  • Репутация: +6/-0
Re: модуль к Writelog для полевого дня
« Ответ #3 : 07 Июль 2008, 12:18:12 »
Глюк WriteLog: пропускает переданные номера.
Как его "сделать":
включаем диапазон 144, вводим позывной, переключаем на 432, затем обратно.
Затем можем стереть позывной (ctrl-w), снова вводим позывной, ай, а номер пропускает....

Исправляется так (только на той машине в сети, на которой такое допустили):
Setup->Sort order and numbering.., отметить Total of all bands, ok
Setup->Sort order and numbering.., отметить Separate by bands, ok

еще исправляет (вроде) Contest -> recalculate score.

Пенка скорее не в модуле, а в самом Writelog'e. Но постараюсь к след. году исправить  :)

P.S. надеюсь никто не накололся с 5% пропущенных номеро

Оффлайн ra9ftm

  • Пользователь
  • **
  • Сообщений: 31
  • Репутация: +6/-0
Re: модуль к Writelog для полевого дня
« Ответ #4 : 13 Август 2008, 12:10:11 »
Вот что мне ответил таки автор Writelog'a:
Mike,
Thank you for persisting in reporting the serial number bug. I confirm
I can reproduce it and will fix it in the next beta version (10.68E)
Wayne


А также по моей просьбе реализовал дополнительные функции в интерфейсе к Writelog (в свое время нужно было для ОЗЧР, оперативно изменять позывной и передаваемый номер =) ):

void SetFKeyMsgDigital(short MsgNumber, BSTR Value);
BSTR GetFKeyMsgDigital(short);
void SetFKeyMsgVoice(short MsgNumber, BSTR Value);
BSTR GetFKeyMsgVoice(short MsgNumber);


Оффлайн ra9ftm

  • Пользователь
  • **
  • Сообщений: 31
  • Репутация: +6/-0
Re: модуль к Writelog для полевого дня
« Ответ #5 : 26 Август 2008, 08:44:24 »
в новой версии WL на офсайте исправлена эта бага с пропуском номеров по моей просьбе.

P.S. да, кстати: у кого "проблемы" с новыми версиями ВЛ - обращайтесь.