Code:
void screen_gps(void)
{
/*Variablendeklaration für Menüebene*/
static char cog_comp [7];
static char sog_comp [7];
static char lat_deg_comp [4];
static char lat_min0_comp [4];
static char lat_min1_comp [5];
static char lon_deg_comp [5];
static char lon_min0_comp [4];
static char lon_min1_comp [5];
if(menu.do_once == 0)
{
glcd_clear_text();
glcd_clear_graph();
glcd_line(0, 9, 239, 9, 1);
glcd_print2_P(0,80, "Kurs:", &Arial__10, 0);
glcd_print2_P(0,98, "Geschw.:", &Arial__10, 0);
/*Funktionsanzeige der Tasten*/
glcd_line(0, 118, 239, 118, 1);
glcd_print(35, 15, "Menü");
}
//gpsdaten auswerten
if(rmc.status == 1)
{
/*Display time*/
if ((rmc.utc_time [2] == '0' && rmc.utc_time [3] == '0') || menu.do_once == 0)
{
char hr_temp [4];
char date_temp [9];
int8_t hr_calc;
hr_temp [0] = rmc.utc_time [0];
hr_temp [1] = rmc.utc_time [1];
hr_temp [2] = '\0';
hr_calc = atoi (&hr_temp [0]);
hr_calc += menu.timezone;
hr_calc += menu.summer;
if (hr_calc < 0)
{
hr_calc += 24;
}
else if (hr_calc >= 24)
{
hr_calc -= 24;
//inc date
}
if (hr_calc <= 9)
{
hr_temp [0] = '0';
menu.temp = 1;
}
else
{
menu.temp = 0;
}
utoa (hr_calc, &hr_temp [menu.temp], 10);
hr_temp [2] = ':';
hr_temp [3] = '\0';
date_temp [0] = rmc.date [0];
date_temp [1] = rmc.date [1];
date_temp [2] = '.';
date_temp [3] = rmc.date [2];
date_temp [4] = rmc.date [3];
date_temp [5] = '.';
date_temp [6] = rmc.date [4];
date_temp [7] = rmc.date [5];
date_temp [8] = '\0';
glcd_print (32, 0, &hr_temp [0]);
glcd_print (0, 0, &date_temp [0]);
}
if ((rmc.utc_time [4] == '0' && rmc.utc_time [5] == '0') || menu.do_once == 0)
{
char min_temp [4];
min_temp [0] = rmc.utc_time [2];
min_temp [1] = rmc.utc_time [3];
min_temp [2] = ':';
min_temp [3] = '\0';
glcd_print (35, 0, &min_temp [0]);
}
glcd_print (38, 0, &rmc.utc_time[4]);
/**/
if (strcmp (rmc.cog, cog_comp) != 0)
{
uint8_t len_cog = (6 - strlen (rmc.cog));
uint8_t i;
for (i = 0; i <= len_cog; i++)
{
glcd_print2_P (80 + (i * 12), 80, " ", &Arial__10N, 0);
}
glcd_print2 ((80 + (len_cog * 12)), 80, &rmc.cog [0], &Arial__10N, 0);
glcd_print2 (200, 80, "°", &Arial__10N, 0);
strcpy (&cog_comp [0], &rmc.cog [0]);
}
if (strcmp (rmc.sog, sog_comp) != 0)
{
uint8_t len_sog = (6 - strlen (rmc.sog));
uint8_t i;
for (i = 0; i <= len_sog; i++)
{
glcd_print2_P (80 + (i * 12), 98, " ", &Arial__10N, 0);
}
if (rmc.sog [0] == 0)
{
glcd_print2_P (116, 98, "-.--", &Arial__10N, 0);
}
else
{
glcd_print2 ((80 + (len_sog * 12)), 98, &rmc.sog [0], &Arial__10N, 0);
}
glcd_print2 (200, 98, "kn", &Arial__10, 0);
strcpy (&sog_comp [0], &rmc.sog [0]);
}
/*print latitude if changed*/
if (strncmp (rmc.lat, lat_deg_comp, 2) != 0 || menu.do_once == 0)
{
strncat (&lat_deg_comp [0], &rmc.lat [0], 2);
strcat (&lat_deg_comp [2], "°");
glcd_print2 (18, 12, &lat_deg_comp [0], &Arial__10N, 0);
}
if (strncmp (&rmc.lat [2], &lat_min0_comp [0], 2) != 0 || menu.do_once == 0)
{
strncat (&lat_min0_comp [0], &rmc.lat [2], 3);
glcd_print2 (71, 12, &lat_min0_comp [0], &Arial__10N, 0);
}
if (strncmp (&rmc.lat [5], &lat_min1_comp [0], 4) != 0 || menu.do_once == 0)
{
strncat (&lat_min1_comp [0], &rmc.lat [5], 4);
glcd_print2 (125,12, &lat_min1_comp [0], &Arial__10N, 0);
}
/*print longitude if changed*/
if (strncmp (rmc.lon, &lon_deg_comp [0], 3) != 0 || menu.do_once == 0)
{
strncat (&lon_deg_comp [0], &rmc.lon [0], 3);
lon_deg_comp [3] = '°';
lon_deg_comp [4] = '\0';
glcd_print2 (0, 38, &lon_deg_comp [0], &Arial__10N, 0);
}
if (strncmp (&rmc.lon [3], &lon_min0_comp [0], 2) != 0 || menu.do_once == 0)
{
strncat (&lon_min0_comp [0], &rmc.lon [3], 3);
glcd_print2 (71, 38, &lon_min0_comp [0], &Arial__10N, 0);
}
if (strncmp (&rmc.lon [6], &lon_min1_comp [0], 4) != 0 || menu.do_once == 0)
{
strncat (&lon_min1_comp [0], &rmc.lon [6], 4);
glcd_print2 (125,38, &lon_min1_comp [0], &Arial__10N, 0);
}
}
else
{
//keine Navigation möglich!
}
//glcd_print2((120-(strlen(rmc.cog)*11)),90, rmc.cog, &Arial__12, 0);
//glcd_print2_P(112, 90, "°", &Arial__12, 0);
//glcd_print2(175,90, rmc.sog, &Arial__12, 0);
menu.do_once = 1;
switch (get_key(CLR))
{
case MENU:
menu.index = 60;
menu.do_once = 0;
break;
}
}//screen_gps
Hat jemand eine Idee woran das liegen kann?
Lesezeichen