реклама на сайте
подробности

 
 
> Extended GPS Week Number (1024 added), нужна формула
kan35
сообщение Dec 24 2012, 04:39
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Здравствуйте

Решил попробовать инциализировать координаты в sirfStar4, но столкнулся с тем, что нужно вычислять неделю и день недели в нем (а эти данные не присутствуют в явном виде в NMEA строках). Помогите формулой или алгоритмом или даже куском кода, который вычисляет эти 2 числа.

Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kan35
сообщение Dec 24 2012, 08:19
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Может кому пригодится.
CODE

int what_day(short year, char month, char day)
{
int a = (14 - month) / 12;
int y = year - a;
int m = month + 12 * a - 2;
return (7000 + (day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) % 7;
}

int what_week(short year, char month, char day)
{
unsigned short start_year = 1999;
unsigned char start_month = 8;
unsigned char start_day = 22;
const unsigned char daysinmonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// count days in 1999 after aug 22
unsigned long day_counter = daysinmonth[start_month-1] - start_day;
for (;start_month <= 11; start_month++)
{
day_counter += daysinmonth[start_month-1];
}

for (;start_year < year-1; start_year++)
{
if (start_year%4)
day_counter += 365;
else
day_counter += 366;
}

for (start_month = 1; start_month < month; start_month++)
{
if ( start_month == 2 && !(year%4))
day_counter += 29;
else
day_counter += daysinmonth[start_month-1];
}

day_counter += day;

return day_counter/7 + 1024;
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016