From 1b85bb40e4aab49d757a03ed1e268b5a7818277b Mon Sep 17 00:00:00 2001 From: Grant Date: Tue, 19 Nov 2019 19:06:20 -0800 Subject: [PATCH] Add GPS Parsing --- CMakeLists.txt | 6 ++++- FaultManager.cpp | 63 +++++++++++++++++++++++++++++++++++++++++------- FaultManager.hpp | 9 ++++++- 3 files changed, 67 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 641ee8a..a800a1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) find_package( OpenCV REQUIRED ) find_package( Ebus REQUIRED ) -find_package( Qt5 COMPONENTS Widgets Network DBus Sql REQUIRED ) +find_package( Qt5 COMPONENTS Widgets Network DBus Sql Positioning SerialPort REQUIRED ) set(CMAKE_AUTOMOC ON) @@ -27,6 +27,8 @@ include_directories( ${Qt5Network_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS} ${Qt5Sql_INCLUDE_DIRS} + ${Qt5Positioning_INCLUDE_DIRS} + ${Qt5SerialPort_INCLUDE_DIRS} ) add_executable( FaultFinder @@ -47,4 +49,6 @@ target_link_libraries( FaultFinder ${Qt5Network_LIBRARIES} ${Qt5DBus_LIBRARIES} ${Qt5Sql_LIBRARIES} + ${Qt5Positioning_LIBRARIES} + ${Qt5SerialPort_LIBRARIES} ) \ No newline at end of file diff --git a/FaultManager.cpp b/FaultManager.cpp index c1b3181..dc155d1 100644 --- a/FaultManager.cpp +++ b/FaultManager.cpp @@ -1,33 +1,78 @@ #include "FaultManager.hpp" FaultManager::FaultManager(QObject *parent) : QObject(parent) +{ + bool res; + + res = OpenDatabase(); + + if (!res) { + qCritical() << "Failed to open database connection."; + exit(15); + } + + res = OpenSerial(); + + if (!res) { + qCritical() << "Failure to open GPS serial device."; + exit(16); + } + + StartGPS(); +} + +FaultManager::~FaultManager() +{ + db.close(); + gps->stopUpdates(); + serial->close(); +} + +bool FaultManager::OpenDatabase() { db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("FaultDatabase"); db.setUserName("user"); db.setPassword("faultfinder"); - bool success = db.open(); - - if (!success) { - qCritical() << "Failed to open database connection."; - exit(15); - } + return db.open(); } -FaultManager::~FaultManager() +bool FaultManager::OpenSerial() { - db.close(); + serial = new QSerialPort(); + serial->setPortName("ttyUSB0"); + serial->setBaudRate(QSerialPort::Baud4800); + serial->setDataBits(QSerialPort::Data8); + serial->setParity(QSerialPort::NoParity); + serial->setStopBits(QSerialPort::OneStop); + serial->setFlowControl(QSerialPort::NoFlowControl); + return serial->open(QIODevice::ReadOnly); +} + +void FaultManager::StartGPS() +{ + gps = new QNmeaPositionInfoSource(QNmeaPositionInfoSource::RealTimeMode); + gps->setDevice((QIODevice *)serial); + gps->startUpdates(); } void FaultManager::SaveImage() { QSqlQuery query; + // Get GPS Location + QGeoPositionInfo position = gps->lastKnownPosition(true); + QGeoCoordinate coorinate = position.coordinate(); + + qInfo() << coorinate.isValid(); + qInfo() << coorinate.longitude(); + qInfo() << coorinate.latitude(); + qInfo() << coorinate.altitude(); // Save Image to Filesystem //QSaveFile // Save to Database - query.exec("INSERT"); + //query.exec("INSERT"); } \ No newline at end of file diff --git a/FaultManager.hpp b/FaultManager.hpp index 446361c..94b505d 100644 --- a/FaultManager.hpp +++ b/FaultManager.hpp @@ -6,6 +6,8 @@ #include #include #include +#include +#include class FaultManager: public QObject { @@ -17,8 +19,13 @@ public: void SaveImage(); private: + bool OpenDatabase(); + bool OpenSerial(); + void StartGPS(); QSqlDatabase db; - + QSerialPort *serial; + QNmeaPositionInfoSource *gps; + }; #endif \ No newline at end of file