ARDUINO解析GPS数据,读取出来GPRMC帧数据
测试板子使用ARDUINO MEGA2560
#include <TimerOne.h>
#define GPSSerial Serial1
#define DebugSerial Serial
const unsigned int bufferLength = 600;
char RxBuffer[bufferLength];
unsigned int ii = 0;
char EER_GPS_Buffer[24] = {"$GPRMC,,V,,,,,,,,,,N*7F"};
struct
{
unsigned char CMD;
unsigned int LengthA;
char fixed[20];
unsigned char id_length;
char id[20];
unsigned char LengthB1;
unsigned char LengthB2;
char api_key[50];
} login;
struct
{
unsigned char CMD;
unsigned char LengthA;
unsigned char mark;
unsigned char type;
unsigned char LengthB1;
unsigned char LengthB2;
char streamA[24];
char id[20];
char streamB[27];
char GPS_Buffer[150];
char streamC[7];
} Save_Data;
void setup(){
GPSSerial.begin(9600);
DebugSerial.begin(9600);
Timer1.initialize(1000);
Timer1.attachInterrupt(Timer1_handler);
DebugSerial.println("setup end!");
}
void loop(){
DebugSerial.println("loop start!");
getGPSData();
DebugSerial.println("loop end!");
}
unsigned long Time_Cont = 0;
void Timer1_handler(void)
{
Time_Cont++;
}
void getGPSData(){
char *GPS_BufferHead, *GPS_BufferTail;
clrRxBuffer();
Time_Cont = 0;
while (Time_Cont < 2000)
{
readBuffer();
if ((GPS_BufferHead = strstr(RxBuffer, "$GPRMC,")) != NULL)
{
if ((GPS_BufferTail = strstr(GPS_BufferHead, "\r\n")) != NULL)
{
if(GPS_BufferTail > GPS_BufferHead)
{
memcpy(Save_Data.GPS_Buffer, GPS_BufferHead, GPS_BufferTail - GPS_BufferHead);
DebugSerial.println("-----1------");
DebugSerial.println(Save_Data.GPS_Buffer);
break;
clrRxBuffer();
}
}
}
}
if(Time_Cont >= 2000)
{
memcpy(Save_Data.GPS_Buffer, EER_GPS_Buffer, 24); //输出错误信息
}
DebugSerial.println("-----2------");
DebugSerial.println(Save_Data.GPS_Buffer);
memset(Save_Data.GPS_Buffer, 0, sizeof Save_Data.GPS_Buffer); //使用后清空数据
DebugSerial.println("-----3------");
DebugSerial.println(Save_Data.GPS_Buffer);
clrRxBuffer();
}
void readBuffer(){
while (GPSSerial.available())
{
RxBuffer[ii++] = GPSSerial.read();
if (ii == bufferLength)clrRxBuffer();
}
}
void clrRxBuffer(void)
{
memset(RxBuffer, 0, bufferLength); //清空
ii = 0;
}
ARDUINO解析GPS数据,读取出来GPRMC帧数据的更多相关文章
- 从文件中读取yuv和h264数据
1.从文件中读取h264数据 参考ffmpeg avc.c写的从文件中一帧帧读取h.264数据的demo #include <stdio.h> #include <stdlib.h& ...
- 如何在ADO中使用数据读取器(DataReader)读取数据
DbDataReader类型(实现IDataReader接口)是从数据源获取信息最简单也最快速的方法. 数据读取器是只读向前的效据流.井且一次返回一条记录.因此.只有当你向数据源提交 Select 查 ...
- 【转载】PyTorch系列 (二):pytorch数据读取
原文:https://likewind.top/2019/02/01/Pytorch-dataprocess/ Pytorch系列: PyTorch系列(一) - PyTorch使用总览 PyTorc ...
- tensorflow 1.0 学习:十图详解tensorflow数据读取机制
本文转自:https://zhuanlan.zhihu.com/p/27238630 在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找 ...
- TensorFlow数据读取
TensorFlow高效读取数据的方法 TF Boys (TensorFlow Boys ) 养成记(二): TensorFlow 数据读取 Tensorflow从文件读取数据 极客学院-数据读取 十 ...
- tensorflow之数据读取探究(1)
Tensorflow中之前主要用的数据读取方式主要有: 建立placeholder,然后使用feed_dict将数据feed进placeholder进行使用.使用这种方法十分灵活,可以一下子将所有数据 ...
- 十图详解tensorflow数据读取机制
在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下 ...
- 十图详解TensorFlow数据读取机制(附代码)
在学习TensorFlow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下 ...
- TensorFlow的数据读取机制
一.tensorflow读取机制图解 首先需要思考的一个问题是,什么是数据读取?以图像数据为例,读取的过程可以用下图来表示 假设我们的硬盘中有一个图片数据集0001.jpg,0002.jpg,0003 ...
随机推荐
- uva507 - Jill Rides Again(最长连续和)
option=com_onlinejudge&Itemid=8&page=show_problem&problem=448">题目:uva507 - Jill ...
- lodash 移除假值数组 compact
创建一个移除了所有假值的数组.例如:false.null. 0."".undefined, 以及NaN 都是 “假值”. <!DOCTYPE html> <htm ...
- C中的C文件与h文件辨析
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 .编译阶段,首先编译成纯 ...
- Android EditText 输入password是否可见
设置password不可见 etAfter.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 设置password可见 etA ...
- Nigix加入Hello World模块
详细资料:<深入理解Nginx> 1.编写第三方模块 建立文件夹hello,里面有两个文件: ngx_http_mytest_module.c #include <ngx_confi ...
- CentOS6.8 编译安装LNMP
思路:根据Linux系统以及公司网站系统的信息,选择合适的安装包进行安装 一.查看系统信息 # uname -a # 查看内核/操作系统/CPU信息 # /etc/issue # 查看操作系统版本 # ...
- SQL数据库从高版本到低版本的迁移,同时解决sql脚本文件太大无法打开的尴尬问题
as we known,sql数据库高版本向低版本还原是不太可能但是又经常会碰到的事,今天实测了一种方法 步骤:任务—>生成脚本—> 下一步->高级,选择数据库版本和编写脚本数据类型 ...
- Python Windows文件操作
获得目录和文件名 os.getenv()获取环境变量 os.putenv()设置环境变量 os.getcwd() 获得当前目录 os.chdir(‘要设置的当前目录’) os.listdir() 返回 ...
- php函数总结(闭包函数,匿名函数)
php函数总结 1.普通函数 2.变量函数 function myfun($a) { echo $a; } $b = "myfun"; $b("test"); ...
- nginx 内置变量大全
HTTP核心模块支持一些内置变量,变量名与apache里的对应.比如 $http_user_agent,$http_cookie等表示HTTP请求信息的变量.更多变量:$args, 请求中的参数; $ ...