基于百度地图Web API的物联设备调试工具(一)
2017-06-08 10:44
176 查看
该工程源于一个测试工具的开发, 涉及到串口收发, 网络数据收发, Qt与Js的交互, 经纬度距离计算等.
效果如下:
![](https://img-blog.csdn.net/20170608110327077?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveVRhb1NreQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170608110404422?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveVRhb1NreQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
串口相关
网络相关
Web相关
定位相关, Qt与Js的交互, 经纬度距离计算等见 基于百度地图Web API的物联设备调试工具(二)
效果如下:
串口相关
//串口轮询 void Frame::fillPortsInfo() { static const QString blankString = QObject::tr("N/A"); QString description; QString manufacturer; QString serialNumber; int i = 0; ui->comboBoxSerial->clear(); foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { QStringList list; description = info.description(); manufacturer = info.manufacturer(); serialNumber = info.serialNumber(); list << info.portName() << (!description.isEmpty() ? description : blankString) << (!manufacturer.isEmpty() ? manufacturer : blankString) << (!serialNumber.isEmpty() ? serialNumber : blankString) << info.systemLocation() << (info.vendorIdentifier() ? QString::number(info.vendorIdentifier(), 16) : blankString) << (info.productIdentifier() ? QString::number(info.productIdentifier(), 16) : blankString); QString portName = list.first(); ui->comboBoxSerial->insertItem(i, portName); i++; } } //打开串口 void Frame::openSerialPort() { serial->setPortName(ui->comboBoxSerial->currentText()); serial->setBaudRate(QSerialPort::Baud115200); serial->setDataBits(QSerialPort::Data8); serial->setParity(QSerialPort::NoParity); serial->setStopBits(QSerialPort::OneStop); serial->setFlowControl(QSerialPort::NoFlowControl); if (serial->open(QIODevice::ReadWrite)) { ui->console->setEnabled(true); ui->console->setLocalEchoEnabled(true); ComFlag = true; return; } else ComMcuFlag = false; } //读串口 connect(serial, SIGNAL(readyRead()), this, SLOT(SerialReadData())); void Frame::SerialReadData() { QByteArray data = serial->readAll(); ui->console->putData(data); } //写串口 void Frame::SerialWriteData(const QByteArray &data) { serial->write(data); }
网络相关
//略
Web相关
TCP Server接收到移动终端上传得位置数据(GPS, LBS, WIFI等)后, 解析相关数据, 构建Web请求字符串, 发送Http请求. QNetworkRequest request; QString reqUrl; QString infoStr; QNetworkAccessManager* manager; //发送GPS请求 reqUrl.sprintf("http://api.map.baidu.com/geoconv/v1/?coords=%.6f,%.6f&ak=申请的key&output=xml", lng.a, lat.a); infoStr=QString("设备:%1 电量:%2 %3").arg(imei).arg(dev_voltage).arg(dev_utc); request.setAttribute(QNetworkRequest::User,infoStr); request.setUrl(QUrl(reqUrl)); manager->get(request); //发送LBS请求 reqUrl.sprintf("http://api.gpsspg.com/bs/?oid=5039&key=4153C361801F6CA3A06087702FD1994F&bs=%x,%x,%d,%d&to=2&output=xml", mcc.a, mnc, lac.a, ceilid.a); infoStr=QString("设备:%1 电量:%2 %3").arg(imei).arg(dev_voltage).arg(dev_utc); request.setAttribute(QNetworkRequest::User,infoStr); request.setUrl(QUrl(reqUrl)); manager->get(request); //Http响应处理 connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(httpReplyFinish(QNetworkReply*))); void Frame::httpReplyFinish(QNetworkReply* reply) { QString result = reply->readAll().simplified(); QString url = reply->url().toString(); QVariant userData = reply->request().attribute(QNetworkRequest::User); QString userDataStr = userData.value<QString>(); if (url.contains("api.gpsspg.com")) { //在这里解析返回的addrsss, roads, latitude, longitude略 //定位并添加标注 JyGAPI->GisShowAddressWithTitle(lat.a,lng.a, userDataStr); itemStr.sprintf("L: %.6f,%.6f", lat.a, lng.a); pos_vec.push_back(itemStr); item = new QStandardItem(itemStr); standardItemModel->setItem(pos_vec.size()-1, item); } else if (url.contains("api.map.baidu.com")) { //在这里解析纠偏后的经纬度, 略 //定位并添加标注 JyGAPI->GisShowAddressWithTitle(dlat,dlng, userDataStr); itemStr.sprintf("G: %.6f,%.6f", dlat, dlng); pos_vec.push_back(itemStr); item = new QStandardItem(itemStr); standardItemModel->setItem(pos_vec.size()-1, item); } }
定位相关, Qt与Js的交互, 经纬度距离计算等见 基于百度地图Web API的物联设备调试工具(二)
相关文章推荐
- Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器的状态。 可以
- GUIDReporter:辅助调试USB设备的一个小工具
- 由基于qml,c++的串口调试工具浅谈qml与c++混合编程
- ADB(调试桥)- 设备管理工具
- 前端调试工具 for PC与移动设备
- 基于WEB应用开发的java程序员必备工具(脚本调试工具、java剖析工具)
- Android无线调试及手机设备与PC同屏工具——Chrome插件Vysor
- 远程调试spark源码(基于java的调试工具)
- 基于c语言中调试工具的用法汇总(不包含gdb)
- 使用PC的adb工具通过wifi(TCP方式)调试安卓设备
- 四极管: Android开发调试I2C设备驱动 i2cdetect 工具的使用
- 10个基于浏览器的JavaScript调试工具分享
- toolkit02:使用adbWireless工具无线连接Android设备做真机调试
- 基于Linux调试工具strace与gdb的常用命令总结
- uC/Probe 嵌入式设备在线调试工具
- 10个基于浏览器的JavaScript调试工具
- 基于c语言中调试工具的用法汇总(不包含gdb)
- uC/Probe 嵌入式设备在线调试工具
- 一款功能强大的设备调试、接口调试工具