serialgps.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "serialgps.h"
  2. SerialGPS::SerialGPS()
  3. {
  4. }
  5. // 打开串口的函数
  6. void SerialGPS::openSerialPort()
  7. {
  8. const QString portName = "COM9";
  9. const qint32 baudRate = 9600;
  10. if (!serialPort.isOpen()) {
  11. serialPort.setPortName(portName);
  12. serialPort.setBaudRate(baudRate);
  13. if (serialPort.open(QIODevice::ReadWrite)) {
  14. //提示打开串口
  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. // qDebug() << "storedGNRMCData:" << parser.rmcDataToString(storedGNRMCData);
  43. }
  44. RMCData SerialGPS::getStoredGNRMCData() const
  45. {
  46. return storedGNRMCData;
  47. }
  48. void SerialGPS::setupSerialPort()
  49. {
  50. openSerialPort();
  51. connect(&serialPort, &QSerialPort::readyRead, this, &SerialTool::readData);
  52. }