Qt连接GPS模块实现调用高德地图交互显示经纬度信息的功能

最近需要设计一个qt界面,在里面通过串口接收并解析出gps模块的经纬度信息,再通过调用高德地图的api进行地图的显示,作为入门qt的项目踩了不少坑,特将这个项目开源出来,供初学者参考学习。项目链接放下边啦,欢迎大家star~

https://github.com/daviddou2023/qt_screen_gps

一. 项目简介

本项目主要实现了电脑和L76K模块连接,模块连接天线把接收到gps数据从串口传给电脑,设计qt界面实现串口数据的接收和解析,并调用高德地图的api进行地图的3D显示。

1. 项目目录

图1 项目目录

2. 项目环境准备

(1)硬件准备

L76K GPS模块
USB转ttl模块

(2)软件准备

笔者采用的是Qt 5.15.2环境,因为需要用到Qt WebEngine 所以采用Desktop Qt 5.15.2 MVSC2019 64bit编译器,具体配置可参考笔者的另一篇文章https://blog.youkuaiyun.com/daviddou2022/article/details/140703079

Qt编译器配置

3. 效果展示

可以看到打开串口后可以解析并显示出接收到的经纬度信息,并调用高德api进行地图显示(上图是2D显示),最终实现了3D显示。 

二. 各部分代码介绍

1. project文件

QT       += core gui widgets serialport webenginewidgets

QMAKE_PROJECT_DEPTH = 0
msvc {
    QMAKE_CFLAGS += /utf-8
    QMAKE_CXXFLAGS += /utf-8
}

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

这里需要注意的是因为使用到了Qt WebEngine所以需要加入以下一段代码

QT       += core gui widgets serialport webenginewidgets

QMAKE_PROJECT_DEPTH = 0
msvc {
    QMAKE_CFLAGS += /utf-8
    QMAKE_CXXFLAGS += /utf-8
}

具体踩坑过程可以参考笔者上一篇https://blog.youkuaiyun.com/daviddou2022/article/details/140703079 说多了都是泪啊

2. mainwindow.h文件

一些函数的声明和库的引用

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSerialPort>
#include <QTimer>
#include <QWebEngineView>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_openMyCom1_clicked(); // 打开串口按钮的槽函数
    void on_closeMyCom1_clicked(); // 关闭串口按钮的槽函数
    void readMyCom1(); // 读取串口数据的槽函数

private:
    void Com1Init(); // 初始化串口
    void sendInitializationCommand(); // 发送初始化指令
    void clear_gps(); // 清除GPS显示数据
    void parseGPSData(const QString &data); // 解析GPS数据
    void processBuffer(); // 处理缓冲区数据

    Ui::MainWindow *ui;
    QSerialPort *myCom1; // 串口对象
    bool isComOpen1; // 串口是否打开的标志
    QTimer *readTimer; // 定时器对象
    QWebEngineView *mapView; // 地图视图对象
    QString bu
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值