serialgps.cpp 1.2 KB

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