SrnsViewer — различия между версиями
Korogodin (обсуждение | вклад) (→Общее) |
Ippolitov (обсуждение | вклад) |
||
Строка 81: | Строка 81: | ||
Слот, вызываемый кнопкой "Exit".Закрывает порт и приложение. | Слот, вызываемый кнопкой "Exit".Закрывает порт и приложение. | ||
− | = | + | |
+ | =Классы= | ||
+ | |||
+ | ==SatView== | ||
Данный класс предназначен для компоновки и отображения графической информации о сигналах с видимых спутников. | Данный класс предназначен для компоновки и отображения графической информации о сигналах с видимых спутников. | ||
− | |||
*SatSnr - класс, предназначенный для передачи информации в виде списка объектов этого класса. Содержит информацию, которую необходимо отобразить, и функции чтения/записи. | *SatSnr - класс, предназначенный для передачи информации в виде списка объектов этого класса. Содержит информацию, которую необходимо отобразить, и функции чтения/записи. | ||
<source lang="cpp"> | <source lang="cpp"> | ||
class SatSnr | class SatSnr | ||
− | |||
QString name;//номер спутника | QString name;//номер спутника | ||
Строка 99: | Строка 100: | ||
*Otobragenie - вспомогательный класс. | *Otobragenie - вспомогательный класс. | ||
− | + | ''Методы'' | |
*void otobrazi(std::list<SatSnr>) - Функция,отображающая входной список.В ней предусмотрена компоновка, выбор отображаемых позиций, функция | *void otobrazi(std::list<SatSnr>) - Функция,отображающая входной список.В ней предусмотрена компоновка, выбор отображаемых позиций, функция | ||
scroll'а.Использует объекты QwtThermo библиотеки Qwt. | scroll'а.Использует объекты QwtThermo библиотеки Qwt. | ||
+ | |||
+ | ==satpolarplot== | ||
+ | Предназначен для отображения положения спутников на полярном графике. | ||
+ | |||
+ | *dataForPolarPlot - класс, предназначенный для передачи информации в виде списка объектов этого класса. Содержит информацию, которую необходимо отобразить, и функции чтения/записи. | ||
+ | <source lang="cpp"> | ||
+ | class dataForPolarPlot | ||
+ | |||
+ | QString name;//номер спутника | ||
+ | QString satSys;//нав. сис-ма | ||
+ | double elevation;//угол места | ||
+ | double azimuth;//азимут | ||
+ | bool inSolution;// Участие в решении | ||
+ | bool slezhenie;// в слежении | ||
+ | double SNR;//с/ш | ||
+ | </source> | ||
+ | |||
+ | ''Методы'' | ||
+ | *void showListOfSatellites(std::list<dataForPolarPlot>) - функция,отображающая входной список.Использует объекты QwtPolarPlot библиотеки QwtPolar. | ||
=Описание работы= | =Описание работы= | ||
− | [[File: | + | [[File:6.png|400px|Скрин окошка программы|thumb]] |
#Доступ к порту (на котором стоит приемник) и его настройка осуществляется посредством библиотеки QSerialPort. | #Доступ к порту (на котором стоит приемник) и его настройка осуществляется посредством библиотеки QSerialPort. | ||
− | #Ежесекундно (QTimer) вызывается слот dodo(), в котором происходит | + | #Ежесекундно (QTimer) вызывается слот dodo(), в котором происходит чтение данных из буфера. |
#Далее происходит идентификация, разбор строк и проверка контрольной суммы(на этом этапе задействованы классы и функции описанные выше). | #Далее происходит идентификация, разбор строк и проверка контрольной суммы(на этом этапе задействованы классы и функции описанные выше). | ||
− | #Следующий этап - компоновка информации в виде объектов класса SatSnr и составление списка из объектов | + | #Следующий этап - компоновка информации в виде объектов класса SatSnr и dataForPolarPlot и составление списка из объектов этих классов. |
#И, наконец, передача списка функции otobrazi() класса SatView. | #И, наконец, передача списка функции otobrazi() класса SatView. | ||
=Дополнительно= | =Дополнительно= |
Версия 18:18, 7 ноября 2013
Содержание |
Общее
Данный проект основан на использовании инструментов библиотеки Qt4. Его задачей является чтение, обработка и отображение информации, приходящей с приемника по текстовому протоколу NMEA 0183 и др.
Описание
Классы
- SatInfoRMC - Класс строки RMC. Содержит в себе всю информацию, содержащуюся в данной строке, и функции для записи/чтения информации из объекта класса.
class SatInfoRMC
private:
QString satSys;
QByteArray timeUTC;//время
char status ;//статус
double latitude;//широта
char nors;//Сев/Южн
double longitude;//долгота
char eorw;//Вост/Зап
double speed;//скорость
double putevoiUgol;//Путевой угол
QByteArray date;//Дата
double MagnitSklon;//Магнитное склонение
char napMS;//Направление магнитного склонения
char regim;//Индикатор режима
QString CheckSum;
- SatInfoGSV - Класс строки GSV. Содержит в себе всю информацию, содержащуюся в данной строке, и функции для записи/чтения информации из объекта класса.
class SatInfoGSV
private:
QString satSys;
int totalNumMes;//число сообщений
int mesNumber;//номер сообщения
int satInView;//полное число видимых спутников
QVector<int> satNumber;//номер спутника
QVector<int> elevation;//высота
QVector<int> azimuth;//азимут
QVector<double> SNR;//с/ш
QString CheckSum;
- SatInfoGSA - Класс строки GSA. Содержит в себе всю информацию, содержащуюся в данной строке, и функции для записи/чтения информации из объекта класса.
class SatInfoGSA
private:
QString satSys;
QString mode1;
QString mode2;
QVector <int> satNamesForFix;
QString PDOP;
QString HDOP;
QString VDOP;
QString CheckSum;
- Имена функций для записи/чтения , как правило, состоят из названия переменной с префиксом set/get.
Функции
- QString CalcalateCheckSum(QByteArray stroka)
Функция подсчета контрольной суммы строки.
- SatInfoGSV GetInfoGSV(QByteArray stroka)
Парсер строки GSV.
- SatInfoGSA GetInfoGSA(QByteArray stroka)
Парсер строки GSA.
- SatInfoRMC GetInfoRMC(QByteArray stroka)
Парсер строки RMC.
Слоты
- dodo()
Слот, вызывающийся ежесекундно. Содержит набор операций по чтению, обработке и отображению информации.
- goAway()
Слот, вызываемый кнопкой "Exit".Закрывает порт и приложение.
Классы
SatView
Данный класс предназначен для компоновки и отображения графической информации о сигналах с видимых спутников.
- SatSnr - класс, предназначенный для передачи информации в виде списка объектов этого класса. Содержит информацию, которую необходимо отобразить, и функции чтения/записи.
class SatSnr
QString name;//номер спутника
double q;// с/ш
bool insat;//участие в решении
QString navsys;//навиг. сис-ма
- Otobragenie - вспомогательный класс.
Методы
- void otobrazi(std::list<SatSnr>) - Функция,отображающая входной список.В ней предусмотрена компоновка, выбор отображаемых позиций, функция
scroll'а.Использует объекты QwtThermo библиотеки Qwt.
satpolarplot
Предназначен для отображения положения спутников на полярном графике.
- dataForPolarPlot - класс, предназначенный для передачи информации в виде списка объектов этого класса. Содержит информацию, которую необходимо отобразить, и функции чтения/записи.
class dataForPolarPlot
QString name;//номер спутника
QString satSys;//нав. сис-ма
double elevation;//угол места
double azimuth;//азимут
bool inSolution;// Участие в решении
bool slezhenie;// в слежении
double SNR;//с/ш
Методы
- void showListOfSatellites(std::list<dataForPolarPlot>) - функция,отображающая входной список.Использует объекты QwtPolarPlot библиотеки QwtPolar.
Описание работы
- Доступ к порту (на котором стоит приемник) и его настройка осуществляется посредством библиотеки QSerialPort.
- Ежесекундно (QTimer) вызывается слот dodo(), в котором происходит чтение данных из буфера.
- Далее происходит идентификация, разбор строк и проверка контрольной суммы(на этом этапе задействованы классы и функции описанные выше).
- Следующий этап - компоновка информации в виде объектов класса SatSnr и dataForPolarPlot и составление списка из объектов этих классов.
- И, наконец, передача списка функции otobrazi() класса SatView.
Дополнительно
Реализовано отображение времени с поправкой на часовой пояс.
P.S.
По аналогии можно без труда реализовать парсер и для других типов строк NMEA.