• 大小: 10KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: 其他
  • 标签: c++  

资源简介

先在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


评论

共有 条评论