JSON

 

工业控制(十六进制)比json高效,但难解析

一接收到就是一帧 (一帧数据350个字节)

帧:

--就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。 一帧就是一副静止的画面,连续的帧就形成动画,如电视图象等。 我们通常说帧数,简单地说,就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。高的帧率可以得到更流畅、更逼真的动画。每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅。

花括号内的所用东西都叫字符串

JSON使用:

  1. 构建串口读程序;
  2. 读到哪里读多长,定义存储字符数组。UBUF(串口缓存区)   char  UBUF[512]
  3. 构建解析程序,自定义解析方法

所用函数:strstr();memset();memcpy(); sscanf(); atof();sprint();指针,s(开始),e(结尾)

  1. 解析后输出验证正确性。

函数中有return 结束次函数

 

 

 

JSON 数据格式

       JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

1.花括号{}    数据包

2.数据间隔   (一双)

3.双引号

4.数据和数据之间  逗号  

Example:

        { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

 

基础结构

JSON建构于两种结构:

1. “名称/对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 associative array)。

2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

C语言数据解析(JSON历程)

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

#define MAXLEN 80

float T,W;

void parseUDPPackage2( char *p);//数据解析

char BUFS[MAXLEN]="TYPE:32002\r\nTEMP:20.4C\r\nBAT:7.1V(EXT)\r\nWT:15.06g\r\n";

int main( )

{

parseUDPPackage2(BUFS);//解析函数声明

printf("获取到的温度是:%.2f\n",T);

printf("获取到的重量是:%.2f\n",W);

}

void parseUDPPackage2(char *p)//数据解析

{

 puts(p);

       if(strstr(p,"TYPE:") !=NULL)//如果找到了开头标识TYPE:往下找

        {

             char *s,*e;//定义首尾指针

             char temp[20];//定义temp临时数组

          if(strstr(p,"TEMP:")!=NULL)//如果找到了TEMP:不为空  就是找到了

          {

             //-----------查询温度处理--------------

            s=strstr(p,"TEMP:");//返回TEMP:的指针给s

               if(s==NULL) //如果为空退出程序   就是没找到

               return;

            s = strstr(s,":");//在TEMP:的指针出找出:的指针位置返回给s

               if(s==NULL) //如果为空退出程序

               return;

            e=strstr(s,"\r\n");//在:的基础上查找\r\n结束标志返回给e找到开头和结束的指针位置

               if(e==NULL)// 如果为空退出程序

               return;

            memset(temp,0x00,20);//先清零

            memcpy(temp,s+1,e-s-1);//存入找到的数据

            //T=atof(temp);//将数组中的字符浮点数转换成浮点类型数据

            sscanf(temp,"%f",&T);    //和atof功能一致

            //-----------查询重量处理--------------

            s=e;//把尾部指针给头部

            s=strstr(s,"WT:");//返回WT:的指针给s

                if(s==NULL) //如果为空退出程序

                return;

            s = strstr(s,":");//在TEMP:的指针出找出:的指针位置返回给s

                if(s==NULL) //如果为空退出程序

                return;

            e=strstr(s,"\r\n");

                if(e==NULL)

                return;

            memset(temp,0x00,20);

            memcpy(temp,s+1,e-s-1);

            sscanf(temp,"%f",&W);

          }

        }

}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值