Совместное использование строки NMEA GPS с NTP

752
Ozean

Я использую GPS в качестве часов для NTP. Он отлично работает и NTP открывается /dev/gps0и читает его нормально. У меня также есть программа, которая может открываться /dev/gps0для чтения (и записи) на устройство GPS, чтобы я мог обрабатывать информацию и настраивать ее. Как я могу запустить оба одновременно?

Я не хочу использовать gpsd, и я хотел бы найти способ разделить последовательный порт, не делая что-то, что может сломать NTP. Сокат, псевдо-терминал? Как я могу сделать это легко?

1
NTP поддерживает программные часы, которые обмениваются данными с NTP с использованием общей памяти. Если ваше программное обеспечение GPS может помещать информацию о времени в общую память, NTP может получить ее. [Здесь] (http://www.sput.nl/time/shm_linux_clock.c) приведен пример кода, который я написал много лет назад. David Schwartz 7 лет назад 0
Я уже делал это раньше с общей памятью (gpsd также использует общую память). Проблема заключается в том, что «клиент» хочет запустить NTP, а затем хочет вторую программу, которая может «подключиться» к последовательному устройству по мере необходимости. Я думал о posix_openpt, но мне было интересно, есть ли какой-нибудь лучший способ. Ozean 7 лет назад 0
Вы можете изменить код NTP или написать свой собственный код, чтобы он работал как тройник. David Schwartz 7 лет назад 0
в зависимости от машины вы можете установить другой физический последовательный порт, затем использовать один для nema и pps другой как последовательный порт, тогда как другие указали использовать драйвер общей памяти из ntp. user3788685 7 лет назад 0
Спасибо за помощь. Я решил эту проблему, открыв псевдо-терминалы для ntp и один для процесса, который анализирует строки nmea. т.е. ntpfd = posix_openpt (O-RDWR | O_NOCTTY); grantpt (ntpfd); unlockpt (ntpfd); ptsname_r (ntpfd, buff, sizeof (buff)). Buff содержит имя псевдотерминала. То же самое для parserfd, затем я открываю и читаю gps и отправляю то, что получаю, на эти fd. Связал псевдо-терминал, связанный с ntpfd, с / dev / gps0. Ozean 7 лет назад 1
@Ozean Please post this solution as an answer to your question for the benefit of future users with the same question. Thanks for contributing to SuperUser. Twisty Impersonator 7 лет назад 0

1 ответ на вопрос

-1
Claude Frantz

Я игнорирую причину, по которой вы не пользуетесь gpsd. Сам я предлагаю вам использовать его, потому что это, вероятно, самое простое решение. Если вы хотите получить доступ к предложениям NMEA, используйте программу "gpspipe" во время работы gpsd. Вы, вероятно, будете иметь то, что вы хотите.

Welcome to Super User. Your post needs to be expanded. A good [answer](http://superuser.com/help/how-to-answer) includes specific instructions ([not just links](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/8259#8259) to them) and an explanation as to how or why the answer addresses the OPs question. Please edit your post to add detail explaining how your solution addresses the OPs question. Twisty Impersonator 7 лет назад 0

Похожие вопросы