资源简介
先在win10系统下搭建vs+qt+qgis环境,然后利用无线数传通过串口通信接收传输的数据并在地图上标注出位置,供大家参考!
代码片段和文件信息
#include
#includeyer.h>
#include
#include“mygis.h“
#include
#include
#include
#include
/////////////////////////////////////////////////////////////////////
# pragma warning (disable:4819)
//#include “stdafx.h“
#include “SerialPort.h“
#include
using namespace std;
//#########################################################################################
int main(int argc _TCHAR* argv[])
{
///////////////////// gis初始化 ///////////////////////////////////////////////////////
//std::cout << “nihao“ << std::endl;
QgsApplication a(argc argv true);
QgsApplication::setPrefixPath(“F://OSGeo4W64/apps/qgis“ true);//QGIS路径
QgsApplication::initQgis();//初始化QGIS应用
///////////////////// 串口初始化 //////////////////////////////////////////////////////
CSerialPort mySerialPort;//首先将之前定义的类实例化
int length = 8;//定义传输的长度
unsigned char *temp = new unsigned char[8];//动态创建一个数组
if (!mySerialPort.InitPort(3 CBR_9600 ‘N‘ 8 1 EV_RXCHAR))//是否打开串口,3就是你外设连接电脑的com口,可以在设备管理器查看,然后更改这个参数
{
std::cout << “initPort fail !“ << std::endl;
}
else
{
std::cout << “initPort success !“ << std::endl;
}
if (!mySerialPort.OpenListenThread())//是否打开监听线程,开启线程用来传输返回值
{
std::cout << “OpenListenThread fail !“ << std::endl;
}
else
{
std::cout << “OpenListenThread success !“ << std::endl;
}
temp[0] = 12;
temp[1] = 17;//632628;
temp[2] = 22;
//temp[3] = 04;
//temp[4] = 05;
//temp[5] = 06;
//temp[6] = 07;
//temp[7] = 00;
//cout << mySerialPort.WriteData(temp 8) << endl;//这个函数就是给串口发送数据的函数,temp就是要发送的数组。
//cout << mySerialPort.GetBytesInCOM() << endl;//这个函数就是显示返回值函数
//delete temp[];
//system(“pause“);
////////////////建图层,打开地图//////////////////////////////////////
mygis w;//创建一个窗体,类似于Qt
QgsVectorlayer*newlayer = new QgsVectorlayer();
QgsMapCanvas*mapCanvas = new QgsMapCanvas();
newlayer = w.createlayer(newlayer);
w.openMap(newlayer);
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//打开串口读取数据
while (1)
{
a.processEvents();//qgis线程
UINT BytesInQue = mySerialPort.GetBytesInCOM();
//** 如果串口输入缓冲区中无数据则休息一会再查询
if (BytesInQue == 0)
{
Sleep(100);
continue;
}
/// 读取输入缓冲区中的数据并输出显示 /
//std::string str;
unsigned char cRecved = 0x00;
int i = 0;
double r[8];
do
{
cRecved = 0x00;
if (mySerialPort.ReadChar(cRecved) == true)
{
//***********************************************************************
std::stringstream ss;
double tm = cRecved;
ss << std::dec << std::setw(2) << std::setfill(‘0‘) << tm;//dec表示10进制
ss << ““;
string a = ss.str();
string b;
transform(a.begin() a.end() back_inserter(b) ::toupper);
////////////////////////////////////
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4748 2020-10-05 19:31 SerialPort.h
文件 3996 2020-11-07 12:19 main.cpp
文件 5203 2020-10-16 21:12 mygis.cpp
文件 375 2020-10-05 19:31 mygis.h
文件 11071 2020-10-05 19:31 SerialPort.cpp
----------- --------- ---------- ----- ----
25393 5
相关资源
- UpdateVersion 修改exedll文件版本源码
- 7,4,3汉明码的仿真程序
- NurbsSurf.rar
- VC开发树列表
- DPMI16Bi.ovl
- 中国象棋代码及设计说明书和用户手
- 可以承载20k并发量的IOCP
- 汇编十六进制排序
- 绘制wav波形图
-
EllipseJig_ob
jectARX - 电子钟,温感,闹铃等功能,PCB-CAM及
- VHDL 的程序
- 蓝桥杯历年真题视频解析
- 进程cpu占用率和内存使用大小获取
- GPS软件接收机
- 《数据结构及算法经典》源代码.
- GD32F303 串口+DMA 收发数据
- 2017 年江苏省梦想杯小学生比赛(参考
- 头文件sha256.h
- DO-WHILE循环语句的翻译程序设计(简单
- QT中实现8个基本对话框
- QT自绘滑条控件Slider,可设置横向和纵
- libcurl.lib 支持HTTPS的静态库
- 拓扑排序输出所有可能的拓扑排序
- qt的小波分解程序
- 本人转载 在此申明 语法树 c 实现 四
- 教学计划编制问题
- gh0st源码笔记_详解.
- logo识别项目
- 根据星历文件计算卫星精确坐标
评论
共有 条评论