资源简介
先在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
相关资源
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
- 多项式求和(数据结构C 版)
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- 用C 实现的对网络上的ARP数据包进行
- Microsoft基本类库 (MFC)(C 库)
评论
共有 条评论