14 : QObject(parent), m_data(data)
17 m_serial =
new QSerialPort(
this);
30 m_serial->setPortName(portName);
31 m_serial->setBaudRate(QSerialPort::Baud9600);
33 if (!m_serial->open(QIODevice::ReadOnly)) {
34 qCritical() <<
"? Erreur : Impossible d’ouvrir le module GPS sur le port" << portName;
35 if(m_data) m_data->setGpsOk(
false);
40 m_nmeaSource =
new QNmeaPositionInfoSource(QNmeaPositionInfoSource::RealTimeMode,
this);
41 m_nmeaSource->setDevice(m_serial);
44 connect(m_nmeaSource, &QNmeaPositionInfoSource::positionUpdated,
45 this, &GpsTelemetrySource::onPositionUpdated);
48 m_nmeaSource->startUpdates();
50 qDebug() <<
"? GPS D�marr� (Mode Qt Positioning) sur" << portName;
57 m_nmeaSource->stopUpdates();
59 m_nmeaSource =
nullptr;
63 if (m_serial->isOpen()) {
68void GpsTelemetrySource::onPositionUpdated(
const QGeoPositionInfo &info) {
73 m_data->setGpsOk(
true);
75 QGeoCoordinate coord = info.coordinate();
76 m_data->setLat(coord.latitude());
77 m_data->setLon(coord.longitude());
81 if (info.hasAttribute(QGeoPositionInfo::GroundSpeed)) {
82 speedMs = info.attribute(QGeoPositionInfo::GroundSpeed);
83 m_data->setSpeedKmh(speedMs * 3.6);
87 if (info.hasAttribute(QGeoPositionInfo::Direction)) {
88 double course = info.attribute(QGeoPositionInfo::Direction);
101 m_data->setGpsOk(
false);
102 qDebug() <<
"GPS : En attente de satellites (No Fix)...";
GpsTelemetrySource(TelemetryData *data, QObject *parent=nullptr)
Constructeur de la source GPS.
~GpsTelemetrySource()
Destructeur. Assure la fermeture propre du port série.
void stop()
Arrête l'acquisition GPS et libère le port matériel.
void start(const QString &portName="/dev/serial0")
Démarre l'acquisition des données GPS. Configure le port série (baudrate) et lance le parsing NMEA en...
Classe représentant les données en temps réel du véhicule. Cette classe hérite de QObject et centrali...
Rôle architectural : Source de télémétrie GPS branchée sur un flux NMEA série.
Rôle architectural : Modèle central de télémétrie partagé entre les modules C++ et l'interface QML.