serialgps.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "serialgps.h"
  2. SerialGPS::SerialGPS() {}
  3. // 打开串口的函数
  4. void SerialGPS::openSerialPort() {
  5. const QString portName = "COM9";
  6. const qint32 baudRate = 9600;
  7. if (!serialPort.isOpen()) {
  8. serialPort.setPortName(portName);
  9. serialPort.setBaudRate(baudRate);
  10. if (serialPort.open(QIODevice::ReadWrite)) {
  11. // 提示打开串口
  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. // qDebug() << "storedGNRMCData:" << parser.rmcDataToString(storedGNRMCData);
  37. }
  38. RMCData SerialGPS::getStoredGNRMCData() const { return storedGNRMCData; }
  39. void SerialGPS::setupSerialPort() {
  40. openSerialPort();
  41. connect(&serialPort, &QSerialPort::readyRead, this, &SerialTool::readData);
  42. }