Linux应用开发-GPS电子围栏设计

1. 前言 gps电子围栏这个功能是地图的一个扩展技术功能,通过地图经纬度在地图上圈一个范围,在这个范围内进出可以在服务器上进行实时记录,提示警报。现在的共享单车、共享汽车都有这个功能,限制车辆只能在某一个范围内使用,超出后就自动断电或者作出提示。要实现这个地理围栏,就需要实时获取当前的经纬度,然后调用地图sdk接口进行处理,完成围栏逻辑设计。
这种地理围栏应用的场景非常多,比如:
(1)上面说的共享单车,超出区域断电;
(2)小孩子的儿童手表、可以设置地理围栏,家长可以给孩子设置一个地图范围,如果孩子离开了这个范围,父母的就可以收到通知,方便知道孩子当前位置在哪里,防止走丢;
(3)4s店的车子也会设置电子围栏,当试驾、试乘离开规定的范围会通知4s店。
在完成gps围栏功能之后,通过得到的gps数据还可以做很多相关的事情,比如:导航路线规划,行走的路线记录、实时定位等。
这篇文章就采用linux开发板来实现这个gps围栏功能,这个项目分为了两个部分:1. 服务器部分 2. 设备部分
设备端就是实时采集gps模块得到的经纬度,通过网络上传给服务器,服务器调用百度地图、高德地图的api接口,根据规划的地理围栏范围进行判断,在地图上绘制当前设备所在的位置,还可以画出轨迹线。
2. 项目实现代码 当前文章讲的就是设备端的实现,如何读取gps坐标、转换、上传到服务器的流程。
gps模块是串口接口,linux开发板有串口接口,如果串口接口不够用,也可以把模块接到ch340这种usb转ttl模块上,再插在开发板的usb口上,在/dev下会生成ttyusbx节点。linux下串口编程有一套标准的接口,编程非常方便。
读取串口数据可以采用 poll、select、epoll机制等。也可以使用异步通知机制:fasync。串口配置的时候可以配置每次读取的超时时间,方便知道什么时候一包数据接收完毕了。
gps模块也支持配置,正常情况下gps模块会将接收的卫星所有数据返回来,如果想要提高效率,可以设置gps模块,让它只是返回想要的字段,这样接收数据解析数据效率就高很多。
2.1 gps坐标数据读取 下面这份代码是接收gps经纬度的串口代码。


关于Eventloop的概念
透析Uber匹兹堡计划:一场30万人的无人驾驶公共测试
如何在滑动开关应用中使用感应开关
虹科分享 | 专为创意专业人士设计的Thunderbolt适配器
Testbench的基本组成和设计规则
Linux应用开发-GPS电子围栏设计
将GaN用于射频应用的所有优势
物联网的发展真的有表面看上去这么光鲜吗?
基于OpenCV3.0的BM、SGBM和GC算法对比
微型水质监测站,多参数水质在线监测系统
电话机器人的应用让我们的工作变得更简单
高频变压器的生产制作规范
关于被动同心转向式多履带全向移动机器人的设计
手机红外技术的优缺点
基于义齿压力测量的微型电容式传感器研制工艺及封装测试
总结必买小米6的四大理由──雷军好人啊!
诺基亚推出ReefShark芯片组以及对此组合的详细分析
IGBT表面的“果冻”有什么作用?
OPPOR17雾光渐变色高清图集
直流伺服电机的速度和位置控制原理是什么?