serialgps.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "serialgps.h"
  2. #include "../utils/global.h"
  3. #include "paregnrmc.h"
  4. SerialGPS::SerialGPS(QObject *parent) : QObject(parent) { setupSerialPort(); }
  5. // 打开串口的函数
  6. void SerialGPS::openSerialPort() {
  7. const QString portName = gpsPort;
  8. const qint32 baudRate = 9600;
  9. if (!serialPort.isOpen()) {
  10. serialPort.setPortName(portName);
  11. serialPort.setBaudRate(baudRate);
  12. if (serialPort.open(QIODevice::ReadWrite)) {
  13. } else {
  14. emit openError();
  15. }
  16. }
  17. }
  18. // 关闭串口的函数
  19. void SerialGPS::closeSerialPort() {
  20. if (serialPort.isOpen()) {
  21. serialPort.close();
  22. }
  23. }
  24. void SerialGPS::sendData() {
  25. if (serialPort.isOpen()) {
  26. // serialPort.write(data.toUtf8());
  27. }
  28. }
  29. void SerialGPS::readData() {
  30. QByteArray data = serialPort.readAll();
  31. emit dataReceived(data);
  32. PareGNRMC parser;
  33. RMCData m_data = parser.parseRMC(data);
  34. storedGNRMCData = m_data;
  35. emit gnrmcDataReceived(storedGNRMCData);
  36. emit storedGNRMCDataUpdated(storedGNRMCData); // 发出信号
  37. }
  38. RMCData SerialGPS::getStoredGNRMCData() const { return storedGNRMCData; }
  39. void SerialGPS::setupSerialPort() {
  40. openSerialPort();
  41. connect(&serialPort, &QSerialPort::readyRead, this, &SerialGPS::readData);
  42. }