机智云开发手册
- 格式:doc
- 大小:710.94 KB
- 文档页数:15
STC micro TM宏晶科技深圳国芯人工智能有限公司技术支持网站:资料更新日期:2022/3/07第1章初学STC32M4 的准备工作俗话说万事开头难,学习一门新的知识,难的往往不是知识本身,而是如何快速上手,需要什么资料和开发环境。
一旦上手后,深入的学习就相对容易些了。
1.1 初学者重要提示◆关于学习方法问题,可以看附件章节A。
◆学会STC32M4 相关资源的获取方法,做到心中有数,否则心里老是没底。
◆ STC32M4携带了DTCM 和ITCM ,ITCM 用于运行指令,也就是程序代码,DTCM 用于数据存取,特点是跟内核速度一样。
◆ STC32M4 系列配套标准库。
1.2 开发环境说明◆ IDE:支持MDK 开发环境⚫MDK 推荐使用MDK5.26 正式版及其以上版本。
◆调试器使用ULINK2。
◆配套开发板是深圳国芯的:STC32-M4 开发板,MCU 是STC32M4。
1.3 STC32M4开发资源查找学习一款新的芯片,需要大家从官方获取两方面的资料,一个是相关的技术文档,比如参考手册、数据手册、应用笔记等;另一个是软件包,官方在软件包中提供了外设驱动库和基于此库的大量例程。
学习STC32M4主要下载哪些相关手册呢?主要有以下几个,这几个手册是我们经常要使用到的,不光学习STC32需要这类手册,学习FPGA、DSP也是这些类型的手册,熟练查阅和使用这些手册也是电子工程师必备的知识之一。
◆参考手册(Reference Manual)对芯片每个外设的具体描述和功能介绍,比如我们要查USART ,S PI ,DMA 相关寄存器和功能的介绍就可以使用这个手册。
◆数据手册(Data Sheet)在我们要画PCB 的时候用到这个手册的情况比较多,这个手册上面有关于这个系列芯片的引脚定义、电气特性、机械封装、料号定义等信息。
◆ Cortex-M3/M4 权威指南这也是非常重要的参考资料,对于有兴趣了解M3/M4 内核的同学,这个资料相当重要,了解了内核才能更好的利用M3/M4。
大华网络SDK编程手册VERSION 3.1.8(Build 070321)2007-3-21版权所有侵权必究前言非常感谢您使用我们公司的设备,我们将为您提供最好的服务。
本手册可能包含技术上不准确的地方或印刷错误,欢迎指正。
我们将会定期更新手册的内容。
修订记录目录1 简介 (8)1.1概述 (8)1.2适用性 (9)1.3特色功能 (9)2 设计原则 (11)2.1编程说明 (11)2.2典型调用顺序 (12)3 数据结构定义 (18)3.1客户端数据结构 (18)3.1.1 设备信息结构 (25)3.1.2 时间信息 (26)3.1.3 录像文件信息 (26)3.1.4 设备状态信息 (27)3.1.5 系统配置信息结构 (35)4 接口定义 (36)4.1SDK初始化 (36)4.2状态侦听 (39)4.3字符叠加 (44)4.4设备注册 (45)4.5实时监视 (48)4.6音频控制 (54)4.7数据保存 (56)4.8视频抓图 (63)4.9回放和下载 (64)4.10回放控制 (82)4.11云台控制 (88)4.12实时预览 (93)4.13系统配置 (94)4.14日志管理 (103)4.15透明串口 (105)4.16远程控制 (109)4.17录像控制 (112)4.18系统时间 (114)4.19用户管理 (115)4.20语音对讲 (119)4.21码流统计 (129)4.22IO控制 (130)4.23强制I帧 (131)4.24设置限流 (132)4.25获取设备状态 (133)4.26修改通道名称 (136)4.27DDNS查询IP (136)4.28设备参数配置 (138)5 示例功能实现 (165)5.1连接设备 (166)5.2报警信息获取 (167)5.3系统配置 (168)5.4实时监视 (168)5.5数据保存 (169)5.6回放/下载和进度指示 (169)5.7播放控制 (169)5.8预览 (170)5.9字符叠加 (170)1简介1.1概述欢迎使用大华网络SDK编程手册,网络客户端软件开发包(DVR客户端SDK)是大华网络硬盘录像机、网络视频服务器的配套产品,本文档详细描述了开发包中各个函数实现的功能、接口及其函数之间的调用关系和示例实现。
X5Cloud SDK开发者手册X51.0文档更新至2011-7-8上海英夫迪贝信息科技有限公司电子邮件:support@目录第一章介绍 (1)1.1 X5Cloud概述 (1)1.2 X5Cloud优势 (3)1.4X5Cloud安装和部署先决条件 (3)1.5 如何创建基于X5Cloud的Hello World程序(运行在PC机上) (5)1.6 如何创建基于X5Cloud的Hello World程序(运行在Android的手机、平板上) (7)1.7 X5Cloud应用Android小项目GoodsManagerSys (8)1.8 关于WEB应用发布服务 (9)第二章API的概括 (12)2.1 X5.database (12)2.1.1 X5.database.X5Persist类的描述 (13)2.1.2 X5.database.X5Persist类的使用 (14)2.1.3 X5.database.X5DBResult类的描述 (14)2.1.4 X5.database.X5DBResult类的使用 (14)2.2 X5.file (14)2.2.1 X5.file.X5File类的描述 (14)2.2.2 X5.file.X5File类的使用 (15)2.2.3 X5.file.X5FileResult类的描述 (16)2.2.4 X5.file.X5FileResult类的使用 (17)2.3 X5.eXception (18)2.3.1 X5.eXception.X5EXception类的描述 (18)2.3.2 X5.eXception.X5EXception类的使用 (18)第三章X5 SDK用法举例3.1 X5DB对数据库的操作..................................................................... ...................... (32)3.2 X5File对文件系统的操作..................................................................... ................ (38)第四章X5Cloud应用小项目GoodsManagerSys4.1 GoodsManagerSys项目介绍..................................................................... ................ (45)4.2 GoodsManagerSys的数据访问层..................................................................... . (48)第一章X5Cloud概述INFOBASE X5Cloud是一个用Java语言实现高可用性分布式集群技术的高性价比云计算平台系统。
基于物联网技术的智能插座设计与实现梁志勋;覃有燎;闭吕庆【摘要】利用集成电参数测量传感器芯片进行电能参数的采集前端电路设计,实现了插座的电参数采集功能.系统采用集成Wi-Fi芯片ESP8266作为微处理器和通信芯片,完成了智能插座的下位机单元设计.通过Wi-Fi无线通信网、局域网或者广域网实现数据的远程传输,利用机智云的自助开发平台和Java相关技术进行手机客户端开发,实现了插座的电参数在Android平台终端上实时监测的功能.实验测试表明,将所设计的系统测量数据和专用仪器测量数据进行比较,该系统的测量数据误差小,传输实时性高,具有较高的应用推广价值.【期刊名称】《河池学院学报》【年(卷),期】2018(038)002【总页数】6页(P64-69)【关键词】物联网技术;智能插座;ESP8266;Java【作者】梁志勋;覃有燎;闭吕庆【作者单位】河池学院计算机与信息工程学院,广西河池 546300;河池学院计算机与信息工程学院,广西河池 546300;玉林师范学院电子与通信工程学院,广西玉林537000【正文语种】中文【中图分类】TN2530 引言随着物联网技术的发展,以及人们日益增长的物质需求,近年来国内外学者和厂商纷纷提出了智能家居的概念[1-2],其中智能插座是智能插座是智能家居设备中,重要的组成部分。
现存的各种类型的智能插座中,绝大部分不能实时监测插座的电参数,无法满足用户用电安全的需求,更不能实现远程监控[3-4]。
而本系统所设计的这款插座采用现流行物联网技术,采用电参数测量传感器,并将这些参数通过Wi-Fi局域网或者广域网最终实现远程传输到云服务器,利用Java相关技术进行手机客户端开发,实现了Android平台终端上的智能插座的电参数实时监测。
用户可以通过客户端软件远程控制插座的通断,查看插座的当前状态,以观察其负载上的家用电器状态,以多种功能的智能插座作为系统监测设备[5],使家用电器具备可观测和控制的功能,满足了用户对多功能的需求,在保证用电安全的同时,又实现了传统家家用电器的信息化和智能化,在智能家居应用中具有十分广阔的应用前景。
北京博基兴业科技有限公司 网址:博基兴业——您腾飞的基石! ——您腾飞的基石 博基兴业——您腾飞的基石!BKBK-X86 开发套件硬件 用户手册Rev 1.0 2011 年8 月28 日北京博基兴业科技有限公司Beijing Broadkey High-Tech.Co.,Ltd版权申明本文件由北京博基兴业科技有限公司于 2011 年发布生效。
版权归北京博基兴业科技有限公司所有。
本手 册的信息将根据产品的升级而更改,详情请关注本公司网站。
除获得厂家的书面许可外,不得擅自以任何行式 再生、复印、翻译、传送手册中的任何部分。
♦北京博基兴业科技公司不承担可能包含在这份文件中的任何错误的责任 ♦北京博基兴业科技公司保留更新或维持本用户手册中信息的权力 ♦北京博基兴业科技公司的版权 2011 ♦版权所有 Ver.1.0 2011 版本记录版本号 V1.0 描述 初始版本 日期 2011 年 8 月 28 日目录BK-X86工业电脑 ......................................................................................................................................................... 1 一、系统组成框图 .......................................................................................................................................................... 2 二、选购信息与当前版本 .............................................................................................................................................. 3 2.1 版本和选购 ............................................................................................................................................................... 3 三、结构与尺寸 .............................................................................................................................................................. 4 3.1 BK-X86 BK-X86开发板尺寸....................................................................................................................................... 4 86 3.2 核心板尺寸 ............................................................................................................................................................... 5 3.3 扩展板尺寸 ............................................................................................................................................................... 6 四、核心板 ...................................................................................................................................................................... 7 4.1 硬件资源 ................................................................................................................................................................... 7 4.2 引脚定义 ................................................................................................................................................................... 7 五、扩展板 ...................................................................................................................................................................... 8 5.1 硬件资源 ................................................................................................................................................................. 10 5.2 电气规格 ................................................................................................................................................................. 12 六、硬件详述 ................................................................................................................................................................ 13 6.1 DDR SDRAM 存储器................................................................................................................................................. 13 6.2 CF 卡存储器............................................................................................................................................................. 13 6.3 SATA 硬盘 存储器................................................................................................................................................... 13 6.4 UART 异步串行口.................................................................................................................................................... 13 6.4.1 RS232 接口 ........................................................................................................................................................... 14 6.4.2 混合串行接口 ..................................................................................................................................................... 14 6.5 并行接口................................................................................................................................................................. 15 6.6 5V、12V 硬盘电源接口.......................................................................................................................................... 16 6.7 USB 接口................................................................................................................................................................. 16 6.8 以太网接口............................................................................................................................................................. 16 6.9 视频输入接口........................................................................................................................................................... 16 6.10 音频........................................................................................................................................................................ 17 6.11 LCD 液晶屏接口...................................................................................................................................................... 17 6.12 板上 RTC................................................................................................................................................................ 18 6.13 电源接口............................................................................................................................................................... 18 七、系统启动和配置说明 ............................................................................................................................................ 19 7.1 系统启动 BIOS 设置 ............................................................................................................................................. 19 7.1.1 从 CF 卡启动 ....................................................................................................................................................... 19 7.1.2 从硬盘启动 ......................................................................................................................................................... 19 八、产品保修和技术服务 ............................................................................................................................................ 20 九、产品保修和技术服务 ............................................................................................................................................ 21 联系方式 ........................................................................................................................................................................ 210BK-X86工业电脑X86 Processor Core,1GHz CPU,LOW-Power,High-Performance产品概述BK-X86 是一款面向自动化领域的高性价 比工控主板产品。
机智云技术说明机智云物联平台——技术说明一、机智云是做什么的?机智云是一个物联网/智能硬件云服务平台,提供了一系列物联网硬件开发工具以及服务,包括:硬件接入服务、开放平台服务以及统计分析服务。
二、机智云能帮我做什么?1.免费通过机智云后台的自助接入工具配合GoKit开发板,30分钟可以完成一款物联网设备原型的开发。
让开发者快速把想法变成产品。
2.免费通过机智云后台可视化的设备功能定义工具,硬件厂商可以自助、快速的实现硬件产品的云端接入。
3.机智云免费提供物联网设备网络连接、远程操控、互联互通所必需的云端服务支持。
4.通过机智云后台完成一款设备的功能定义之后,后台自动生成负责底层通信的SDK(应用开发工具包),开发者只需完成界面用户体验层的开发,集成SDK后即完成一款智能硬件App开发。
5.设备接入机智云后,机智云免费提供了设备数据的统计分析和运算处理。
6.通过机智云开放平台,让更多的第三方应用开发者为你提供应用开发服务,同时也提供了智能硬件与第三方智能硬件的互联互通条件。
三、机智云怎么保证稳定和安全?1.机智云系统和网络安全1.1操作系统平台机智云系统搭建在全球服务器使用最多的Linux操作系统平台上,因为它具有一致公认的更好的稳定性、效率性和安全性。
而我们所采用的操作系统是Linux非常成熟的发行版之一CentOS(CommunityEnterprise Operating System),它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成的。
以其稳定性、可靠性和安全性而著称,同时有着强大的英文文档与开发社区的支持。
每个版本的CentOS都会获得十年的支持(通过安全更新方式)。
新版本CentOS大约每两年发行一次,而每个版本的CentOS会定期(大概每六个月)更新一次,以便支持新的硬件。
所以CentOS是很多商业性公司服务器操作系统首选。
目前我们使用了CentOS6.3加固版64位操作系统,包含了很多错误修正、升级和新功能。
GizWits(机智云)平台技术说明书概述 (1)功能要点 (2)基础知识 (5)工作流程 (5)1.设备入网配置流程 (5)2.小循环(LAN)自举流程 (6)3.小循环(LAN)发现流程 (7)4.获取设备密保流程 (7)5.小循环登录流程 (8)6.设备对云端自注册流程 (9)7.关联绑定流程 (10)开发者指引 (10)概述GizWits(机智云)是杰升科技经过对物联网领域多年的积累,沉淀出一系列产品,形成的解决方案平台。
她可以通过机智云网站实时生成客制化的物联网解决方案。
整个解决方案包括:∙移动/桌面应用程序开发包(SDK含设备软件模拟器)∙云端解决方案(手机与设备间远程遥感及遥控、用户行为采集、设备状态采集、大数据分析服务、智能响应与决策等)∙硬件级设备客制化开源参考实现我们相信,当合作伙伴选择GizWits的解决方案时,她可以帮助他们获得进入市场的最快时间,并在市场上保持产品的竞争优势。
机智云平台可以提供以下两种商业合作模式:∙基于开发者帐户免费级的标准服务∙基于合作条款的全方位解决方案o NREo Cloud/MISo Big Datao Outsourcingo Dedicated service∙手机: 图中的Mobile Phone∙Wi-Fi模组: 安装在设备端的无线通讯单元(图中Wi-Fi Module)∙设备主控MCU: 负责具体设备业务逻辑的控制单元(图1中Device MCU)∙云端: 云端服务器(图1中)功能要点∙设备联网必备动作准协议o入网配置(Onboarding, Soft AP/WAC/WPS/Easylink/…)o小循环(LAN)发现/自举(Discovery/Boot)o大循环(WAN)上线/离线(Online/Offline)o大小循环无差异透明传输(xpgcRead/xpgcWrite)∙设备安全控制准协议o大循环(WAN)设备对云端自注册(DID + Passcode)▪用户注册(UID + Password)▪关联绑定(UID + DID)▪认证、授权、计费(3A)▪双安全级别连接(TCP/SSL)o小循环(LAN)▪获取密保(DID + Passcode)▪设备登录(Passcode)∙业务级协议完全自定义o内置数据点简化模型,自定义业务协议o内置数据帧模型,细节定义协议内具体每种收发数据包的二进制布局▪支持五种数据类型:字节、字、双字、限长文本、变长二进制数据∙实时生成解决方案o自定义协议SDK实现▪手机应用开发套件▪桌面应用开发套件▪设备模拟器软件o自定义协议硬件原型实现(基于杰升参考模块列表中型号)▪通讯模块固件▪协议插件源代码(C语言)∙云端大数据分析、o用户▪相关消息推送▪智能响应与决策,例如:∙您所在区域雾霾已散,可以替您开窗换气吗?∙您父亲最近三天血压偏高,需要淘一盒银杏茶吗?∙您家中的电子汤煲已工作六小时,现厨房监测录得少量烟雾,需要断电以防火险吗?∙警告!您西郊别墅走廊处红外检测到人型热源进出,需要打开网络监控或者报警吗?▪产品相关文化、社交服务(酒友圈/高球会/…)o厂商▪用户行为分析▪设备生命周期管理▪设备异常汇报▪设备固件自动升级(OTA,避免小问题大召回)▪智能响应与决策,例如:∙罗帝凡空调自动报障排行,头三位故障码为EEPROM故障、电压保护(P1变频用)故障、过零检测故障∙芬博酒柜本月全球共自动报障32例,28例位于上海市区o九大领域的行业知识提炼基础知识工作流程1.设备入网配置流程a.SoftAp(软AP)b.WAC(苹果)c.Easylink(一键连)2.小循环(LAN)自举流程3.小循环(LAN)发现流程4.获取设备密保流程5.小循环登录流程6.设备对云端自注册流程7.关联绑定流程开发者指引计划完成一个手机应用时,首先你需要使用准协议API,让你的应用与设备之间建立基本连接。
如何使用机智云设备接入SDK来进行APP与设备之间的数据透传本文主要介绍如何使用机智云设备接入SDK来进行APP与设备之间的数据透传。
在APP和MCU之间,有两种数据透传方式:
利用“扩展类型”数据点进行透传
不定义数据点直接进行数据透传,即纯透传
先来了解什么是透传什么是透传?透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理。
这就好比快递邮件,邮件中间有可能通过自行车、汽车、火车、飞机的多种组合运输方式到达您的手上,但您不用关心它们中间经历了哪些。
为什么要透传呢?透传一般都是用来读取远程的串口数据。
例如:网吧内每个上网者都要刷身份证才能上网,但身份证数据库不可能放在每个网吧内。
所以就将读卡器的串口数据通过透传回传到公安局,在公安局的平台上来比对身份证号码。
言归正传,现在进入今天的主题,来谈谈,在机智云APP和MCU之间有哪两种透传方式。
方式一:扩展类型数据点透传
1.定义数据点
在机智云产品管理中的数据点中定义一个拓展类型的数据点,如上图所示:定义数据长度为60个byte(透传情况下,数据长度暂时支持900字节内数据传输)。
2.设备上报数据协议说明
设备MCU按照数据点的定义格式上报透传数据,在完成新产品的定义后,每个新产品都有相应的串口通信协议文档,文档下载路径如下图所示:
在串口通信协议文档文档的4.9部分则有MCU上报数据的格式,如下图:。
v机智云硬件开发指南苏菲菲Just For Friend第一章:通信协议分析———以微信宠物屋为例微信宠物屋是机智云提供的一套完整的基础例程,在了解相关通信流程之后,我们可在该程序基础上开发自己的程序,实现与云服务的对接,进而达到远程控制的目的,接下来我们就来仔细分析下机智云的“M2M”机制到底是如何“跑起来的”。
第一节:文档说明部分详解第一步:我们打开微信宠物屋程序gokit-mcu-master:看到他的目录结构如下其中:MDK_Project即是STM32的程序入口,在分析程序之前我们先来看一下《宠物屋产品设备端开发指南》了解一下该程序实现的功能和串口协议的规定是怎样的。
首先:我们来看产品信息,该处定义了相关的数据点(如何建立数据点请访问)和宠物屋实现的功能,包括:调节RGB三色灯、电机转速、红外探测等。
这些大家了解就行。
其中需要大家特别注意的是“设备识别码”这个关键词,可以看到微信宠物屋的识别码是“6f3074fe43894547a4f1314bd7e3ae0b”,机智云对于每一款产品都会生成唯一的识别码以作区分,待会我们将在程序中找到定义识别码的位置。
其次:我们来看产品信息,可以看到流程图上清楚的介绍了整个协议工作的流程,简单分析一下,其实可以分为两部分处理:第一部分、按键事件发生:主要用于MCU处理按键事件发生后与WIFI的通讯处理。
第二部分、串口事件发生:机智云是通过WIFI模块与MCU以串口通信来实现的,所以下面的这些有关WIFI的事件都可以归类为串口事件的发生,包括:Wifi 发送控制命令、Wifi 发送查询命令、Wifi 发送心跳命令、Wifi 状态更新、外设状态变化。
总体来说,整个系统上电之后的流程如下:1)MCU 先上电,初始化完成后,给模块上电;2) 模块初始化;3) 模块向MCU 询问必要信息,MCU 返回信息(见协议举例);4) 进入正常工作循环;a) 模块给MCU 下发控制命令(见协议举例);b) MCU 返回确认,表示收到命令,正在执行(见协议举例);c) 执行完新控制命令后,无论状态是否发生变化,MCU 都需要通知模块最新状态(见协议举例);d) 若MCU 检测到环境属性变化或者用户在设备上按键引起的状态变化,MCU 需要通知模块最新状态,但是其发送的频率不能快于2 秒每次(见协议举例);e) 若环境状态一直不变化,MCU 需要每隔10 分钟定期主动上报当前状态f) 模块会向MCU 发送心跳,MCU 收到后按照格式返回即可(见协议举例);MCU 连续180 秒收不到模块的数据,即可认为模块异常,可以给模块重新上电;最后:我们来了解具体通讯协议的约定,可以看到命令格式:header(2B)=0xFFFF, len(2B), cmd(1B), sn(1B), flags(2B),DA TA(XB),checksum(1B)说明:1) 包头(header)固定为0xFFFF;2) 长度(len)是指从cmd 开始到整个数据包结束所占用的字节数;3) 命令字(cmd)表示具体的命令含义,详见协议举例;4) 消息序号(sn)由发送方给出,接收方响应命令时需把消息序号返回给发送方;5) 标志位(flag),本产品填写默认0;6) p0 数据区(DA TA),详细参见p0 数据区约定;7) 检验和(checksum)的计算方式为从len~DA TA,按字节求和;8) 所有发送的命令都带有确认,如在200 毫秒内没有收到接收方的响应,发送方;应重发,最多重发3 次;9) 多于一个字节的整型数字以大端字节序编码(网络字节序);10) 数字均用16 进制表示;相信这一部分大家都能看懂,这里不再叙述,接下来看到“p0 数据区约定”,实现如下功能:1)模块向MUC 发送控制命令时携带p0 命令和命令标志位以及可写数据区2)MCU 主动发送状态时或者回复wifi 模块的状态查询时携带p0 命令和完整数据区3)数据区会自动合并布尔和枚举变量,且有严格的顺序,不可任意改变怎么来理解这三个功能呢?我们知道在机智云上定义数据点完成后,系统会自动生成对应的“串口通讯协议”如下图所示:我们下载这份通讯协议文档打开,可以看到具体有如下命令:1)WiFi模组请求设备信息2)WiFi模组与设备MCU的心跳3)设备MCU通知WiFi模组进入配置模式4)设备MCU重置WiFi模组5)WiFi模组向设备MCU通知WiFi模组工作状态的变化6)WiFi模组请求重启MCU7)非法消息通知8)WiFi模组读取设备的当前状态9)设备MCU向WiFi模组主动上报当前状态10)WiFi模组控制设备这些命令中我们只要具体关注8、9、10三条命令即可,我们先来找到第10条命令如下:4)对应上面“p0 数据区约定”中的功能1来看,模块向MUC 发送控制命令时携带p0 命令、命令标志位、及可写数据区三部分命令,至此大家应该清楚了,前6位代表p0 命令、attr_flags(1B)代表命令标志位、attr_vals(6B)代表可写数据区。
这就告诉了我们编写mcu代码时,应该怎么样去识别WIFI发来的控制命令。
那具体要怎么识别呢,往下看协议的注解:1. 是否设置标志位(attr_flags)表示相关的数据值是否为有效值,相关的标志位为1表示值有效,为0表示值无效,从右到左的标志位依次为:bit0: 设置LED_OnOffbit1: 设置LED_Colorbit2: 设置LED_Rbit3: 设置LED_Gbit4: 设置LED_Bbit5: 设置Motor_Speed这里可以清楚的看到attr_flags占1B字节,其中bit0代表设置LED_OnOff......bit5: 设置Motor_Speed,那么对于我们的mcu接收到WIFI发来的控制命令后,我们通过识别attr_flags的每一位即可对应出需要控制的设备,如果还看不懂,一会我们分析mcu 程序。
看完标志位之后我们看attr_vals(6B) 即可写数据区:5)这里可以清楚的看到,只有相关的设置标志位(attr_flags)为1时,数据值才是有效的,需要特别注意的是“p0 数据区约定”约定第三条,数据区会自动合并布尔和枚举变量,且有严格的顺序,不可任意改变。
对应上面的“byte0”合并了“bool”和“enum”类型。
至此p0 数据区约定到此结束,后面在MCU程序中会对应具体代码讲解。
《宠物屋设备端开发指南》通讯写一部分最后一个包头排重约定原则:我们的包头是两个连续的FF FF,如果此包中还有某字节出现FF,仅在传输和接收的时候处理,其他环节按正常数据处理;举例:1) 某设备上报状态帧:FF FF 00 15 05 03 00 00 04 01 01 02 03 01 00 00 00 32 FF20 00 03 7D,除包头外,出现了FF;2) 在程序内部,作为正常的数据去处理;3) 当需要传输时,将除包头外的FF后,增加一个55字节,其他不变;4) 将上述数据处理成:FF FF 00 15 05 03 00 00 04 01 01 02 03 01 00 00 00 32 FF55 20 00 03 7D,长度不变,校验码不变;5) 接收方在接收过程中,如果收到字节是FF,及判断第二个字节是否也是FF,如果是FF,表示一个新包,按照新包处理;6) 如果第二个字节是55,直接丢弃,不算接收长度,继续接收下一个字节;7) 直到按照长度接收完,或者碰到下一个连续的FF FF;这部分代码出现在mcu与WIFI 的串口通讯部分,所以我们一会找到mcu的串口接收程序,简而分析,即可清楚什么是包头排重约定。
《宠物屋设备端开发指南》第4部分协议举例,下节配合mcu程序讲解。
第二节:MCU程序详解(STM32)注意:此节的分析需要读者有一定的STM32开发能力,如果不具备,请先学习STM32。
打开MCU程序,在main.c下我们可以看到这样一段注释:意思已经很清楚了,大部分的命令代码机智云已经为我们实现了,这也是我在讲解《微信宠物屋-机智云接入串口通信协议文档》命令时说只需要关注8、9、10三条指令的原因了,这三条指令对应在protocol.c下的CmdSendMcuP0和CmdReportModuleStatus这两个函数下,即我们开发自己的程序时只需关注这两个函数即可。
首选来看主函数:可以看到主函数下载完成了一堆初始化之后,在循环值进行了三个函数,第一个和第三个是串口事件处理,第二个是按键事件处理(对应之前第一节讲的流程图)。
我们先来看串口事件处理函数MessageHandle(),在这之前,我们需要考虑到串口事件发生的前提是串口已经接收到了数据帧,因此我们需要找到串口再那里接收这些命令的,我们找到串口接收函数,在STM32里串口接收是以串口中断出现的,而库函数里所有的中断都是默认在stm32f10x_it.c下的,所以在c文件下我们可找到void USART1_IRQHandler(void),这就是串口1的中断接收函数。
这段代码我已经做了详细注释,大家可参考上一节的《宠物屋设备端开发指南》下的命令格式和包头排重约定仔细对照查看:void USART1_IRQHandler(void){uint8_t vlue;short i;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){USART_ClearITPendingBit(USART1,USART_IT_RXNE);vlue = USART_ReceiveData(USART1);if(get_one_package ==0)//数据包还没有接收完{if(cmd_flag1 ==0) //初始化为0{if(vlue == 0xff)//接收到第一个0xff{uart_Count = 0;uart_buf[uart_Count]=vlue; //uart_buf[0]=0xffuart_Count++;cmd_flag1 = 1; //第一个0xff收到标志位}return ; //如果没收到返回}if(cmd_flag2 ==0){if(cmd_flag2) //cmd_flag2=1{uart_buf[uart_Count]=vlue;uart_Count++;if(uart_buf[1] == 0xff){cmd_flag2 = 1; //已经收到了第二个0xFF}else{cmd_flag1 = 0; //两个0XFF接收完清标志位}}cmd_flag2 = 1;}uart_buf[uart_Count] = vlue;if(uart_Count >=4 && uart_buf[uart_Count] == 0x55 && uart_buf[uart_Count-1] == 0xFF){} //包头排重else uart_Count++;if(uart_Count == 0x04){cmd_len = uart_buf[2]*256 + uart_buf[3];}if(uart_Count == (cmd_len + 4)) //接收的数据包是否完整{get_one_package = 1; //数据包接收完成标志位cmd_flag1 = 0;}看懂串口接收代码后,我们回到主函数,鼠标右键单击MessageHandle()选择gotodifinitionMessageHandle找到该处理函数:可以看到if(get_one_package)这条语句,只有get_one_package=1的时候下面的程序才会执行,而get_one_package=1就是在串口接收函数里赋值的,表示接收到完整的数据帧。