Add GPS Parsing

This commit is contained in:
2019-11-19 19:06:20 -08:00
parent 005f6241f5
commit 1b85bb40e4
3 changed files with 67 additions and 11 deletions

View File

@@ -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}
)

View File

@@ -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");
}

View File

@@ -6,6 +6,8 @@
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSaveFile>
#include <QNmeaPositionInfoSource>
#include <QSerialPort>
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