串口读取gps信息php,Linux串口读取GPS数据
一、相关概念
1.GPS(Global Positioning System):全球卫星定位系统
美国的24颗卫星不停地给地面发GPS信号,只要有一台GPS接收设备,就能定位出你所在的位置高度和速度了,它与电子地图的结合就是通常所说的GPS功能
二、连接方式
1.串口:计算机通常通过串口读取gps数据(蓝牙的gps也使用虚拟串口)
2.步骤:
1)普通串口设备
打开串口->设置串口->读取数据->恢复串口->关闭串口
2)蓝牙设备
开启蓝牙->与gps设备连接->打开串口->读取数据->关闭串口->与gps设备断开->关闭蓝牙
3)注意
连接gps蓝牙设备如需要连接密码,设置为0000(蓝牙默认密码)
用蓝牙gps设备一般不用对串口进行设置
三、gps数据格式
1.从串口中读出的是文本数据,每次读出一行,一般情况下,一秒种能收到多行数据
2.有效数据以$GP开头,分为$GPGGA、$GPGSA、$GPGSV、$GPRMC…
3. $GPGGA 是GPS定位的主要数据,通过解析它得到经度、纬度、海拔高度、时间、卫星使用情况等基本信息,其中每项用逗号分隔,共十四个逗号,举例如下:
$GPGGA,064746.000,4925.4895,N,00103.9255,E,1,05,2.1,-68.0,M,47.1,M,,0000*4F
$GPGGA(语句标识头),064746.000(UTC时间),4925.4895(纬度),N(纬度半球),00103.9255(经度),E(经度半球),1(定位质量指示),05(使用卫星数量),2.1(水平精确度),-68.0(海拔高度),M(高度单位),47.1(大地水准面高度),M(高度单位),(差分 GPS数据期限),0000(差分参考基站标号)*4F(校验)(结束标记回车换行)
四、例程
1.功能描述
假设蓝牙模块与gps已连接成功,蓝牙的虚拟串口设备是ttyB2
实现从蓝牙设备连接读取100条数据,解析后(经度/纬度/海拔/卫星个数)显示出来
2.代码
#include
#include
#include
#include
#include
#include
void parseData(char *buf)
{
int ret, nQ, nN, nB, nC;
char cX, cY, cM1, cM2;
float fTime, fX, fY, fP, fH, fB, fD;
if (buf == NULL)
return;
ret = sscanf(buf,
"$GPGGA,%f,%f,%c,%f,%c,%d,%02d,%f,%f,%c,%f,%c,%f,%04d%02x",
&fTime, &fX, &cX, &fY, &cY, &nQ, &nN, &fP, &fH, &cM1, &fB,
&cM2, &fD, &nB, &nC);
printf("x: %c %f, y: %c %f, h %f, satellite: %d\n",
cX, fX, cY, fY, fH, nN);
}
int main(int argc, char **argv)
{
int fd, i, ret;
char buf[1024] =
"$GPGGA,064746.000,4925.4895,N,00103.99255,E,1,05,2.1,-68.0,M,47.1,M,,0000*4F\r\n"; // 此处赋值用于测试
if ((fd = open("/dev/ttyB2", O_RDWR)) == -1)
return -1;
// set fd: tcsetattr... 直接连接串口的设备需要在此设置波特率
for (i = 0; i < 100; i++)
{
ret = read(fd, buf, 1024);
if (ret > 1)
{
if (strstr(buf, "GPGGA") != NULL)
parseData(buf);
}
}
// restore fd: tcsetattr... 直接连接串口的设备需要在此恢复波特率
close(fd);
}
串口读取gps信息php,Linux串口读取GPS数据相关推荐
- Linux下读取smBIOS源码,Linux下读取SMBIOS信息
来源:http://www.linuxde.net/2013/02/12499.html uefi shell下使用smbiosview linux下使用dmidecode 或者amidecode(a ...
- linux串口上网的简单实现,Linux串口上网的简单实现(3)
方法rebuild_header().Linux2.x使用的rebuild_header()例程在本文的附加源程序中,这里不再说明. 编写用户空间串口通信程序 控制串口的server应用程序完成非常简 ...
- python中读取word信息_Python实现批量读取word中表格信息的方法
本文实例讲述了Python实现批量读取word中表格信息的方法.分享给大家供大家参考.具体如下: 单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个py ...
- linux虚拟机系统如何读取u盘文件,linux如何读取U盘
sclzwj 于 2010-01-05 18:55:22发表: 学习了. sclzwj 于 2010-01-05 18:54:21发表: 学习了. zhmymichael 于 2010-01-05 1 ...
- linux串口进控制台加密码,linux 串口serial设置登陆密码
一. 如果是有这个文件 vi /etc/inittab 打开 修改/etc/inittab文件 把 ::askfirst:-/bin/sh tty2::askfirst:-/bin/sh 等全部注掉 ...
- linux通过串口读取文件,Linux 串口读写(二)
例子 下面是一个简单的读取串口数据的例子,使用了上面定义的一些函数和头文件 /************************************************************* ...
- 身份证读取设备开发解决方案:2、Android下通过usb转串口读取身份证信息
身份证读取设备开发解决方案:2.Android下通过usb转串口读取身份证信息 文章目录 身份证读取设备开发解决方案:2.Android下通过usb转串口读取身份证信息 1. 前言 2. 准备 3. ...
- Linux 串口编程三 使用termios与API进行串口程序开发
在 termios 结构体以及内部终端控制标志中,并非所有的参数对于实际的物理串口都是有效的,在使用过程中也不需要对于所有标志的作用都有所理解.事实上,快速掌握一项技术的核心点也是一种学习能力.对于使 ...
- Linux 串口编程二 深入了解 termios
前言 这一系列串口编程重点在应用层编程,但是在讲解原理与相关概念时需要对驱动框架有个基础的认识.如果只是浅尝辄止,以后在遇到串口驱动与应用层程序调试难免遇到瓶颈.关于 tty驱动架构参见我的其他博客: ...
- Linux 串口编程四 串口设备程序开发
Linux 串口编程和程序相对来说是很简单的,之所以用博客连载来展示,主要是想在学会使用的基础上掌握相关背景,原理以及注意事项.相信在遇到问题的时候,我们就不会对于技术的概念和 API 的使用浅尝辄止 ...
最新文章
- 抓包工具 tcpdump 用法说明
- 百度开放AI应用学习!
- 基于double-check模式尝试将消息放到batch中
- 信号处理之filter去噪
- Mp4v2封装H264+AAC为MP4
- pytorch 查看当前学习率_pytorch实现查看当前学习率
- lvm-snapshot:基于LVM快照的备份
- 点分治经典_动态点分治
- 在asp.net中备份还原SQL Server数据库
- 腾讯视频下载下来的视频在哪里
- c++语言代码游戏,c++小游戏(贪吃蛇)源程序
- snmpset对象不可写_别再问了,好吗?Java字符串一定是不可变的
- 常见摄像机外部接口类型
- 天霆:桌面虚拟化正处于导入期
- Centos7修改系统默认启动项
- 移动金融客户端应用软件备案、中国支付清算协会“聚合支付”业务备案、工业和信息化部网站备案系统(ICP备案)
- 管理员必须知道的RADIUS认证服务器的部署成本
- 多肽TAT接枝/功能肽RGDC修饰荧光碳量子点/碳量子点修饰多肽LyP-1的制备研究
- 谈谈对Python爬虫的理解
- ecshop系统下载
热门文章
- java高级能力_java高级技术工程师该具备哪些能力?
- java前后端开发文档汇总
- NOIP2013普及组初赛
- 网络安全--文件分离工具 foremost
- 【脑洞探究】等公交该站在哪儿比较合适?——关于减少吸入空气污染物(pm2.5 or 雾霾等)而选择合适等候公交车位置的探究
- Android seekbar进度正负值
- 旭荣管理软件怎么修改小票内容_美萍超市管理软件——让管理回归轻松
- python制作的炫酷动画_【实战】这个炫酷的播放粒子效果,你也可以学会!使用Web动画API制作...
- 打印流(处理流)——PrintStream,PrintWriter
- mysql 分割后循环,mysql实现字符串分割SPLIT函数的四种方法