GPS хакерского разлива: программа
Содержание:
1. GPS;
2. NMEA-0183;
3. Алгоритм Брезенхема;
4. Железо и NEO-6M;
5. Программа (Вы читаете данный раздел).
Она должна отображать текущее положение приемника, скорость, направление движения, факторы снижения точности, время, дату, а еще показывать в полярной системе координат используемые спутники. Вот примерно так, как это делает u-center на рис. ниже.
Как только строка line от Neo-6M принимается контроллером, происходит ее разбитие на токены (массив charTokens) — на подстроки, которые в исходной строке разделены запятыми.
Теперь можно разобранную информацию смело выводить на экран (рис. выше).
Теперь ты знаешь, что в GPS тоже нет ничего сложного (если не лезть в дебри), а если тебе хочется понять суть спутниковой навигации, то добро пожаловать на курс от Стэнфорда «GPS: An Introduction to Satellite Navigation, with an interactive Worldwide Laboratory using Smartphones» (coursera.org/course/gpslab) или от Университета Миннесоты «From GPS and Google Maps to Spatial Computing» (class.coursera.org/spatialcomputing-001) на Coursera.
А в качестве домашнего задания я поставлю перед тобой три задачи: 1. Добавить возможность записи трека. 2. Заменить монохромный экран на цветной. 3. Вместе с WizFi220 снабдить устройство возможностью получения A-GPS.
Если возникли вопросы, пиши мне. Удачи!
1. GPS;
2. NMEA-0183;
3. Алгоритм Брезенхема;
4. Железо и NEO-6M;
5.
Она должна отображать текущее положение приемника, скорость, направление движения, факторы снижения точности, время, дату, а еще показывать в полярной системе координат используемые спутники. Вот примерно так, как это делает u-center на рис. ниже.
Как только строка line от Neo-6M принимается контроллером, происходит ее разбитие на токены (массив charTokens) — на подстроки, которые в исходной строке разделены запятыми.
char *token = malloc(strlen(line) + 1);
char *token2 = malloc(strlen(line) + 1);
int currentTokenNumber = 0;
int currentCharlnTokenNumber = 0;
strcpy(token, line);
char *delimeter =
while (token != NULL) {
token2 = strpbrk(token + 1, delimeter); if (token2 == NULL) { delimeter =
token2 = strpbrk(token + 1> "*");
}
/* Копируем часть строки между разделителями */ currentCharlnTokenNumber = 0;
/* Очищаем значение токена */
memset(charTokens[currentTokenNumber]> ' '^ MAX_TOKEN_LENGTH);
for (char *ch = token + 1; ch PDOP = atof (charTokens[15]);
fixInfo->HDOP = atof (charTokens [16]);
fixInfo->VDOP = atof(charTokens[17]);
char *token2 = malloc(strlen(line) + 1);
int currentTokenNumber = 0;
int currentCharlnTokenNumber = 0;
strcpy(token, line);
char *delimeter =
while (token != NULL) {
token2 = strpbrk(token + 1, delimeter); if (token2 == NULL) { delimeter =
token2 = strpbrk(token + 1> "*");
}
/* Копируем часть строки между разделителями */ currentCharlnTokenNumber = 0;
/* Очищаем значение токена */
memset(charTokens[currentTokenNumber]> ' '^ MAX_TOKEN_LENGTH);
for (char *ch = token + 1; ch PDOP = atof (charTokens[15]);
fixInfo->HDOP = atof (charTokens [16]);
fixInfo->VDOP = atof(charTokens[17]);
Теперь можно разобранную информацию смело выводить на экран (рис. выше).
FIN
Теперь ты знаешь, что в GPS тоже нет ничего сложного (если не лезть в дебри), а если тебе хочется понять суть спутниковой навигации, то добро пожаловать на курс от Стэнфорда «GPS: An Introduction to Satellite Navigation, with an interactive Worldwide Laboratory using Smartphones» (coursera.org/course/gpslab) или от Университета Миннесоты «From GPS and Google Maps to Spatial Computing» (class.coursera.org/spatialcomputing-001) на Coursera.
А в качестве домашнего задания я поставлю перед тобой три задачи: 1. Добавить возможность записи трека. 2. Заменить монохромный экран на цветной. 3. Вместе с WizFi220 снабдить устройство возможностью получения A-GPS.
Если возникли вопросы, пиши мне. Удачи!