iotkit SDK 为了方便设备上云封装了丰富的连接协议,如 MQTT、CoAP、HTTP、TLS,并且对硬件平台进行了抽象,使其不收具体的硬件平台限制而更加灵活。 通常用户并不需要关心 SDK 底层的实现机制,而只需要了解设备如何通过 SDK 与云端进行数据交互即可,方便用户理解如何使用应用层 API 接口进行业务逻辑编写。这里举例展示了 MQTT 和 OTA 应用的数据交互流程。 MQTT
MQTT 协议工作原理 在 MQTT 协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)和订阅者(Subscribe)。其中消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者,这三者的关系如下图所示: 在 MQTT 协议的实际使用过程中,一般遵循以下流程: 发布者通过代理服务器向指定的 Topic 发布消息。 订阅者通过代理服务器订阅所需要的 To
OneNET 软件包数据的上传和命令的接收是基于 MQTT 实现的,OneNET 的初始化其实就是 MQTT 客户端的初始化,初始化完成后,MQTT 客户端会自动连接 OneNET 平台。数据的上传其实就是往特定的 topic 发布消息。当服务器有命令或者响应需要下发时,会将消息推送给设备。 获取数据流、数据点,发布命令则是基于 HTTP Client 实现的,通过 POST 或 GET 将相应的
WebNet 软件包主要用于在嵌入式设备上实现 HTTP 服务器,软件包的主要工作原理基于 HTTP 协议实现。 HTTP 协议定义了客户端如何从服务器请求数据,以及服务器如何把数据传送给客户端的方式。HTTP 协议采用了请求/响应模型。 客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器通过解析请求头部信息,执行相应的功能模块,并且给客户端发送响
嵌入式系统低功耗管理的目的在于满足用户对性能需求的前提下,尽可能降低系统能耗以延长设备待机时间。高性能与有限的电池能量在嵌入式系统中矛盾最为突出,硬件低功耗设计与软件低功耗管理的联合应用成为解决矛盾的有效手段。现在的各种 MCU 都或多或少的在低功耗方面提供了管理接口。比如对主控时钟频率的调整、工作电压的改变、总线频率的调整甚至关闭、外围设备工作时钟的关闭等。有了硬件上的支持,合理的软件设计就成为
什么是中断?简单的解释就是系统正在处理某一个正常事件,忽然被另一个需要马上处理的紧急事件打断,系统转而处理这个紧急事件,待处理完毕,再恢复运行刚才被打断的事件。生活中,我们经常会遇到这样的场景: 当你正在专心看书的时候,忽然来了一个电话,于是记下书的页码,去接电话,接完电话后接着刚才的页码继续看书,这是一个典型的中断的过程。 电话是老师打过来的,让你赶快交作业,你判断交作业的优先级比看书高,于是电
在计算系统中,通常存储空间可以分为两种:内部存储空间和外部存储空间。内部存储空间通常访问速度比较快,能够按照变量地址随机地访问,也就是我们通常所说的 RAM(随机存储器),可以把它理解为电脑的内存;而外部存储空间内所保存的内容相对来说比较固定,即使掉电后数据也不会丢失,这就是通常所讲的 ROM(只读存储器),可以把它理解为电脑的硬盘。 计算机系统中,变量、中间数据一般存放在 RAM 中,只有在实际
时间是非常重要的概念,和朋友出去游玩需要约定时间,完成任务也需要花费时间,生活离不开时间。操作系统也一样,需要通过时间来规范其任务的执行,操作系统中最小的时间单位是时钟节拍 (OS Tick)。本章主要介绍时钟节拍和基于时钟节拍的定时器,读完本章,我们将了解时钟节拍如何产生,并学会如何使用 RT-Thread 的定时器。 时钟节拍 任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间有关的事
在日常生活中,我们要完成一个大任务,一般会将它分解成多个简单、容易解决的小问题,小问题逐个被解决,大问题也就随之解决了。在多线程操作系统中,也同样需要开发人员把一个复杂的应用分解成多个小的、可调度的、序列化的程序单元,当合理地划分任务并正确地执行时,这种设计能够让系统满足实时系统的性能及时间的要求,例如让嵌入式系统执行这样的任务,系统通过传感器采集数据,并通过显示屏将数据显示出来,在多线程实时系统
Polar Balance 为您提供如何减重或维持体重的个性化指导。这种个性化指导基于您的个人信息与体格信息、活动背景、减重的数量以及达成减重所需的时间。无需单独记录饮食或估算卡路里摄取值。在开始时,您可以选择减重的数量与达成减重所需的时间。您可以选择的最大减重数量为您的体重的 10%。此外,您的体重目标不能低于正常体重 (BMI<18.5)。 您摄入的卡路里与燃烧的卡路里之间的差异根据您每日的能
从Canvas元素中创建纹理贴图。 它几乎与其基类Texture相同,但它直接将needsUpdate(需要更新)设置为了true。 构造函数 CanvasTexture( canvas : HTMLElement, mapping : Constant, wrapS : Constant, wrapT : Constant, magFilter : Constant, minFilter : C
纹理贴图是Threejs一个很重要的内容,游戏、产品720展示、物联网3D可视化等项目程序员加载模型的同时需要处理纹理贴图。 刚开始学习的学习的时候,也没必要去掌握Threejs所有种类纹理贴图的细节,关键是建立一个整体概念,用到的时候,知道需要查找那一节课,但是学习的时候,还是需要都打开相应的案例源码体验一边,跟着文字介绍,调试一下参数,体验感受一下。在以后的开发中遇到没有学过的纹理贴图,知道如
1. 简介 本报告通过选定用户群体,为您提供: 目标群体基础属性,如性别、年龄、消费能力、职业、兴趣偏好等 目标群体线上到访意图及行业变化趋势,助您锁定热点走向,优化内容运营 目标群体线上媒体及APP分布,洞察潜在流量 2. 使用说明 用户理解报告包含基础属性、行为分析、全网分析三个报告类型。 2.1 基础属性 选定要进行分析的目标用户群,点击【开始分析】报告,即可看到目标人群的基础属性:性别、年
内存生命周期 垃圾回收 垃圾回收在计算机科学中是一种自动的内存管理机制。当一个计算机上的动态内存不再需要时,就应该予以释放以让出内存,这种内存资源管理称为垃圾回收。垃圾回收器可以让程序员减轻许多负担,也减少程序员犯错的机会。 特征 垃圾回收基于两个原理: 考虑某个对象在未来的程序运行中将不会被访问; 向这些对象要求归还内存。 然而,最主要的也是最艰难的部分就是找到「所分配的内存确实已经不再需要了」
GitHub: https://github.com/swoft-cloud/swoft-error](https://github.com/swoft-cloud/swoft-error) 简介 Swoft 拥有完善的异常错误处理机制,与 FPM 模式有所不同。Swoft 根据不同的场景类型将错误进行了区分。因此你无需关心在不同场景下的错误如何处理,只需实现对应场景的错误处理逻辑即可。Swoft