文档章节

机智云之消息处理的源码分析

天蓬小猪
 天蓬小猪
发布于 2015/04/28 13:00
字数 868
阅读 644
收藏 5

在我们通过编辑工具打开了我们的工程以后,我们需要来看看这些底层代码都做了什么样的操作,直接上源码

...
while(1)
	{
		MessageHandle();//今天主要分析这个MessageHandle的操作
		KEY_Handle();		
		IR_Handle();
		DHT11_Read_Data(&Device_ReadStruct.Temperature, &Device_ReadStruct.Humidity);
		ReportDevStatusHandle();
	}
...

我们打开MessageHandle的函数定义,代码如下:

void MessageHandle(void)
{
	Pro_HeadPartTypeDef   Recv_HeadPart;//定义接收到的心跳包的通讯格式
	memset(&Recv_HeadPart, 0, sizeof(Recv_HeadPart));//设置接收到的心态包内容
	memset(&UART_HandleStruct.Message_Buf, 0, sizeof(16));//设置Message内容
	if(UART_HandleStruct.Package_Flag)//假如完整的接收到一个包
	{
		
		UART_HandleStruct.Message_Len = UART_HandleStruct.UART_Cmd_len + 4;		
		memcpy(&UART_HandleStruct.Message_Buf, UART_HandleStruct.UART_Buf, UART_HandleStruct.Message_Len );					
		memcpy(&Recv_HeadPart, UART_HandleStruct.Message_Buf, sizeof(Recv_HeadPart));
		memset(&UART_HandleStruct.UART_Buf, 0, sizeof(UART_HandleStruct.Message_Buf));		
		UART_HandleStruct.Package_Flag = 0;
		UART_HandleStruct.UART_Count = 0;
		//进行数据包校验
		if(CheckSum(UART_HandleStruct.Message_Buf, UART_HandleStruct.Message_Len) != UART_HandleStruct.Message_Buf[UART_HandleStruct.Message_Len - 1]) 
		{
			Pro_W2D_ErrorCmdHandle();//假如出错,就跳转至处理错误的函数
			return ;		
		}
		switch (Recv_HeadPart.Cmd)//假如正确的接收到了包数据以后,根据命令的类型去完成不同的操作
		{
			case Pro_W2D_GetDeviceInfo_Cmd://获取设备信息命令
				Pro_W2D_GetMcuInfo();
				break;
			case Pro_W2D_P0_Cmd://P0操作命令
				Pro_W2D_P0CmdHandle();		 
				break;
			case Pro_W2D_Heartbeat_Cmd://心跳包命令						
				Pro_W2D_CommonCmdHandle();
				printf("Pro_W2D_Heartbeat ...\r\n");	
				break;						
			case Pro_W2D_ReportWifiStatus_Cmd://报告WIFI状态命令
				Pro_D2W_ReportDevStatusHandle();
				break;
			case Pro_W2D_ErrorPackage_Cmd://包信息错误
				Pro_W2D_ErrorCmdHandle();
				break;
			
			default:
				break;
		}	
	}
		
}

以上的这个函数主要做了一下的事情:

1、接收到某个包信息,不管这个包信息是来自哪里,只要能够被机智云接收到,并且符合机智云的通讯格式就能够被它就收到。当机智云接收到这个包信息以后,就要开始拆包分析对应的数据。

2、从完整的包中拆解除对应的命令,其中命令包括上述的几种类型。

3、根据对应的是命令,完成对应的操作信息。

经过这样三个步骤以后,我们就完成了对包信息的分析处理,这样就为我们通过机器想云平台通讯提供了基础。

通过上面的分析 我们能够了解到,机器与云平台交换的时候,首先是通过我们的WIFI模块来通过数据包的形式去链接网络平台,当我们接收到了来自网络的相关数据包以后,我们的机器在进行对应的包信息拆解分析,最后,我们将对应的控制指令分解出来,通过串口的形式去操作我们本地的硬件设备,如此一来,我们就完成控制命令的交换,实现了遥控的功能。


总结一下:

如何来实现设备远程遥控控制:

1、有统一的通讯格式,来搭载着不同设备之间交互的数据

2、在统一的通讯数据格式的基础上,进行包分析,分解出对应的控制指令。

3、本地设备来通过串口将对应的数据操作命令传达到下位机中,然后执行对应的数据操作操作指令。

通过以上的数据信息,我们就能够在一个云平台的位置进行管理各个地方设备的分布式管理了。同时这样,我们的逼格也就上升到了相当高的一个BIG了。

© 著作权归作者所有

天蓬小猪

天蓬小猪

粉丝 514
博文 43
码字总数 41879
作品 1
深圳
后端工程师
私信 提问
通过 PaaS 平台进行物联垂直行业 SaaS 开发

万物互联时代,任何一个行业都有把“物”与“人”连接后形成整体解决方案的需求,我们看到在电子消费品、交通能源、工业机械、健康医疗等垂直行业都有成功的案例。比如充电桩物联SaaS云,通过...

物联网小能手
2016/11/15
358
0
五步玩转低成本高效智能硬件App开发

我们知道,开发者开发智能硬件App通常有三个通用功能需要开发:用户登陆、设备联网配置和设备控制,一般都是拿第三方的SDK进行三个功能的开发,其中用户登陆和设备联网配置会花费开发者大量精...

物联网小能手
2016/11/15
744
0
秒懂智能设备联网工作机制,机智云让你从小白变身大神

物联网一直被认为是继计算机和移动互联网之后颠覆人们生活的第三次革命。 在传统的智能产品开发过程中,个人/团队不仅需要搭建服务器、开发APP、做硬件,还要让三者互通互联,通常来,这种研...

物联网小能手
2016/12/22
279
0
开源硬件之智能家电(app开源)

(所有代码托管在 git@osc :https://git.oschina.net/dantang) 机智云空气净化器 空气污染是每个城市人所面临的最大健康威胁,就算你在室内你也需要时刻关注空气质量情况。 智能空气净化器,...

物联网小能手
2016/07/18
20
0
开源硬件:10 款 IOT 开源产品 (国内首发)

10 款 iot 开源产品,国内首发。所有软件都托管在开源中国码云平台! 机智云空气净化器 空气污染是每个城市人所面临的最大健康威胁,就算你在室内你也需要时刻关注空气质量情况。 智能空气净化...

物联网小能手
2016/07/19
13K
39

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
16
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部