GPS的数据格式是DDMM.MMMMMM

获取到的GPS帧数据比如是:$GNRMC,112317.000,A,3438.1633,N,11224.4992,E,0.19,186.95,240916,,,A*7D

说明

经度112°24.4992′

纬度34°38.1633′

OneNet支持的GPS数据经测试是DD.DDDDD,因此需要转换

经度为 112+24.4992/60 = 112.40832

纬度为 34+38.1633/60 = 34.636055

上传到GPS的数据流为

{"datastreams":[{"id":"location","datapoints":[{"value":{"lon":112.40832,"lat":34.636055}}]}]}

OneNet的GPS坐标是经过百度地图纠偏过的,所以这部分转换交给平台,直接上传上面的数据即可

用Arduino测试下转换计算过程:

char lon_str[] = "11224.4992";
char lat_str[] = "3438.1633"; double longitudeToOnenetFormat()
{
double lon_temp = 0;
long lon_Onenet = 0;
int dd_int = 0;
long mm_int = 0;
double lon_Onenet_double = 0; lon_temp = atof(lon_str);
lon_Onenet =lon_temp*100000; //转换为整数 dd_int = lon_Onenet/10000000; //取出dd mm_int = lon_Onenet%10000000; //取出MM部分 lon_Onenet_double = dd_int + (double)mm_int/60/100000;//换算为Onenet格式
return lon_Onenet_double;
} double latitudeToOnenetFormat()
{
double lat_temp = 0;
long lat_Onenet = 0;
int dd_int = 0;
long mm_int = 0; double lat_Onenet_double = 0; lat_temp = atof(lat_str);
lat_Onenet =lat_temp*100000; //转换为整数 dd_int = lat_Onenet/10000000; //取出dd mm_int = lat_Onenet%10000000; //取出MM部分 lat_Onenet_double = dd_int + (double)mm_int/60/100000;//换算为Onenet格式
return lat_Onenet_double;
} void setup() {
// put your setup code here, to run once: Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
} Serial.println(longitudeToOnenetFormat(),5);
Serial.println(latitudeToOnenetFormat(),5);
} void loop(){ }

串口计算后输出内容

用到double类型,略微有偏差,这个偏差经过计算大概在地图上能差别1米内

112.40832
34.63605

最新文章

  1. SecureCRT中设置 \n 为回车换行,和 \r\n 的行为一致
  2. [Nhibernate]二级缓存(一)
  3. Java项目多数据源配置
  4. Datatable转换Json
  5. 【数论】二进制GCD
  6. miniproject black jack--Fail
  7. int a[5]={1,2,3,4,5}; int *p=(int*)(&a+1); printf("%d",*(p-1)); 答案为什么是5?
  8. fill与memset的区别
  9. 当xcode里点运行出现treating unicode character as whites
  10. Java 8:如何使用流方式查询数据库?
  11. Oracle VM VirtualBox 随系统自动启动虚拟机的方法
  12. WPF 3D:MeshGeometry3D的定义和光照
  13. 内核对象kobject和sysfs(1)——概述
  14. Windows下Java如何调用本地获取mac地址
  15. Git里有些费解的术语和设计
  16. Echarts CPU监控 (折线仪表盘,图例混搭)
  17. 类型转化&WCF不同binding的区别
  18. windows下通过VNC图形化访问Ubuntu桌面环境
  19. 设计模式(11)--Flyweight(享元模式)--结构型
  20. table表格frame属性

热门文章

  1. Laravel之视图和Blade模板引擎
  2. 斯坦福《机器学习》Lesson4感想--1、Logistic回归中的牛顿方法
  3. Windows web服务器搭建---阿里云
  4. iOS时间间隔判断
  5. JS 正则 钱
  6. AngularJS路由 $state服务、路由事件、获取路由参数
  7. stage3D基础五-----Working with 3D cameras(转)
  8. 篇章三:[AngularJS] 使用AngularCSS動態載入CSS
  9. Apache + Tomcat集群 + 负载均衡
  10. 机器学习5—logistic回归学习笔记