serialgps.cpp 1.2 KB

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