杰理701N可视化SDK之LED的配置和代码浅析

杰理701N可视化SDK LED的配置

  • LED硬件配置
  • LED状态配置
  • LED状态情景配置
  • LED在SDK中相关代码

杰理可视化工具中可以配置LED的硬件配置和LED状态配置, 在可视化工具中的LED配置选项中设置

LED硬件配置

硬件配置可设置LED名, 推LED使用的IO口以及LED的点亮方式
LED配置选项
SDK发布的标准原理图推荐使用一个IO口使用PWM的方式控制两个LED灯, 使用这种连接方式, 两个LED配置为相同的IO, 并配置使用PWM作为驱动方式, 其中蓝灯BLUE选择PWM低电平, 红灯(RED)选择PWM高电平
LED硬件原理图

LED状态配置

LED状态配置是用户定义不同UI的闪烁方式, 并在后续情景配置中调用该闪烁方式
一个完整的LED显示UI可能会包含多个子状态, 子状态在时间轴上切换, 可以设置LED单次显示或循环显示
LED显示原理示例如下
杰理LED显示原理
工具中的配置项可以配置的参数如下
杰理LED配置
状态名:定义LED UI状态的名称,用户根据UI特征命名即可,该名称在情景配置中 LED显示 中被引用;
LED名:LED硬件配置中定义的名称;
状态:当前时刻设置的LED状态,可设置为亮和灭 ;
时间:设置当前状态持续时间,单位为毫秒(ms);
亮度:设置当前状态亮度,该配置当状态设置为 亮 时起作用,设置为 灭 是无效;
呼吸速率:设置为0时,是普通亮灭效果,设置为非0时,是呼吸效果,值越大,呼吸速率越快,从没到亮的时间越短;
与下一时刻的关系 :支持如下选择:
等待:当时间设置为非0,且不是最后一个子状态时,需要设置为等待,表示在设置为指定状态需要持续一段时间,才切换到下一个子状态;
继续:当时间设置为0,且不是最后一个子状态时,需要设置为继续,表示在设置为指定状态后立即切换到下一个子状态;
结束:当子状态是最后一个子状态,且该UI状态只显示一次,需要配置为结束;
循环:当子状态是最后一个子状态,且该UI状态循环显示,需要配置为循环;

LED状态情景配置

设置好了LED配置之后还需要设置LED显示的配置, LED显示配置是指基于系统事件触发对应LED状态显示的功能
配置界面在情景配置->LED配置选项框中配置
LED状态配置
LED显示配置界面有多个场景编辑卡组成,可以点击右上角的“增加”按键添加,或者点击卡片内的“X”删除,每个卡片可以配置1组事件和UI显示状态的对应关系
场景编辑
LED任务中的UI显示列表在 LED状态配置中定义, UI从一种状态切换到另外一种状态有2种逻辑:

  1. 状态切换: 新的UI状态会覆盖当前的UI状态,举例说明:
    上一次的UI状态是;红灯慢闪;
    新的UI状态是;红灯闪3下;
    切换结果:红灯闪3下,结束后LED处于熄灭状态;
  2. 打断执行: 新的UI状态会打断当前UI状态执行,并在执行完成后,会恢复上一次UI的状态,举例说明
    上一次的UI状态是;红灯慢闪;
    新的UI状态是;红灯闪3下;
    切换结果:红灯闪3下,结束后会恢复红灯慢闪的UI状态;
    前提是需要满足如下约束条件:
    上一次的UI状态是一个周期性显示的UI;
    新的UI状态是一个单次显示的UI;
    如果不满足上述条件,将按照 状态切换 逻辑处理

LED在SDK中相关代码

开机的时候从cfg_tools.bin文件中读取工具里面的配置项
读取LED配置项
APP发送事件消息, 以APP发送开机事件为例
发送开机事件
实际就是往”app_core”线程, 发送了类型为MSG_FROM_APP, payload为2个字节的消息
发送消息
在”app_core”线程 app_task_loop()中处理这个消息
线程处理消息
进入注册的handler->handler()
在app_ability.c中有注册app_scene_msg_entry的MSG_HANDLER
进入注册的handler
所以这里handler->handler()实际上是进入到了app_scene_msg_handler() 函数
msg_handler中会根据UUID等信息, 判断可视化工具中情景配置是否有配置, 若有配置则选择对应的action进行LED的操作
情景匹配
这个action则为工具中配置的LED是按照哪个处理逻辑(切换或打断)去做处理led_ability的action
LED action

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2808172.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu中添加和修改Apt Repository

使用Ubuntu Software Center或 apt/apt-get等命令行工具安装软件包时,软件包是从一个或多个 apt 软件库(software repositories)下载的。APT repository是一个网络服务器或本地目录,其中包含可被 APT 工具读取的 deb 软件包和元数…

Linux之项目部署与发布

目录 一、Nginx配置安装(自启动) 1.一键安装4个依赖 2. 下载并解压安装包 3. 安装Nginx 4. 启动 nginx 服务 5. 对外开放端口 6. 配置开机自启动 7.修改/etc/rc.d/rc.local的权限 二、后端部署tomcat负载均衡 1. 准备2个tomcat 2. 修改端口 3…

Linux笔记之LD_LIBRARY_PATH详解

Linux笔记之LD_LIBRARY_PATH详解 code review! 文章目录 Linux笔记之LD_LIBRARY_PATH详解1.常见使用命令来设置动态链接库路径2.LD_LIBRARY_PATH详解设置 LD_LIBRARY_PATH举例注意事项 3.替代方案使用标准路径编译时指定链接路径优先使用 rpath 还是 runpath?注意…

嵌入式软件分层设计的思想分析

“嵌入式开发&#xff0c;点灯一路发” 那今天我们就以控制LED闪烁为例&#xff0c;来聊聊嵌入式软件分层: ——————————— | | | P1.1 |-----I<|--------------<| | | | P2.1 |-------------/ ---------…

【JavaEE】_synchronized关键字——监视器锁monitor lock

目录 1. synchronized的特性 2. synchronized的使用 3. Java标准库中的线程安全类 1. synchronized的特性 &#xff08;1&#xff09;互斥&#xff1a; 前文已经介绍&#xff0c;某个线程执行到某个对象的synchronized中时&#xff0c;其他线程如果也执行到同一个对象&…

Git笔记——4

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、操作标签 二、推送标签 三、多人协作一 完成准备工作 协作开发 将内容合并进master 四、多人协作二 协作开发 将内容合并进master 五、解决 git branch -a…

第十二章 Linux——日志管理

第十二章 Linux——日志管理 基本介绍系统常用日志日志管理服务日志轮替基本介绍日志轮替文件命名logrotate配置文件自定义加入日志轮转应用实例 日志轮替机制原理查看内存日志 基本介绍 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包…

【操作系统】磁盘文件管理系统

实验六 磁盘文件管理的模拟实现 实验目的 文件系统是操作系统中用来存储和管理信息的机构&#xff0c;具有按名存取的功能&#xff0c;不仅能方便用户对信息的使用&#xff0c;也有效提高了信息的安全性。本实验模拟文件系统的目录结构&#xff0c;并在此基础上实现文件的各种…

[c++] 工厂模式 + cyberrt 组件加载器分析

使用对象的时候&#xff0c;可以直接 new 一个&#xff0c;为什么还需要工厂模式 &#xff1f; 工厂模式属于创建型设计模式&#xff0c;将对象的创建和使用进行解耦&#xff0c;对用户隐藏了创建逻辑。 个人感觉上边的表述并没有说清楚为什么需要使用工厂模式。因为使用 new 创…

12个的无时间限制的录屏软件详细比较

您可能尝试过许多录制程序&#xff0c;但大多数都会在30 分钟后停止录制萤幕。如果您需要录制较长的内容&#xff0c;特别是为公司会议或简报进行录制&#xff0c;您将必须找到最好的没有时间限制的录屏软件。这款录音软体可以让您长时间录音而没有任何麻烦。下面列出了12 款无…

亚马逊产品数据抓取

抓取数据 启动抓取 &#xff0c;亚马逊平台前台网站中可以查看、抓取、分析的一系列数据源&#xff0c;其数据种类繁多&#xff0c;本系统主要抓取产品列表&#xff08;包含主图、标题、价格、review分值、prime服务信息等&#xff09;、Listing详情信息&#xff08;包含5点描…

MyBatis---初阶

一、MyBatis作用 是一种更简单的操作和读取数据库的工具。 二、MyBatis准备工作 1、引入依赖 2、配置Mybatis(数据库连接信息) 3、定义接口 Mapper注解是MyBatis中用来标识接口为Mapper接口的注解。在MyBatis中&#xff0c;Mapper接口是用来定义SQL映射的接口&#xff0c;通…

超68万售出,sedo域名登顶最新一期交易排行榜

.com三字母域名售价超过68万人民币&#xff0c;币圈对应的四字母域名近期被曝光售价超过68万人民币。 近日&#xff0c;sedo平台交易信息显示&#xff0c;一个三字母域名被拍卖出10.5万美元&#xff0c;折合人民币超过68万人民币。 据查询&#xff0c;其注册时间为1995年&…

【FreeRTOS】任务创建

参考博客&#xff1a; ESP-IDF FreeRTOS 任务创建分析 - [Genius] - 博客园 (cnblogs.com) 1.什么是任务 1&#xff09;独立的无法返回的函数称为任务 2&#xff09;任务是无线循环 3&#xff09;无返回数据 2.任务的实现过程 1.定义任务栈 裸机程序&#xff1a;统一分配到一…

五种多目标优化算法(MOFA、NSWOA、MOJS、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤&#xff1a; 1. 定义问题&#xff1a;首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数&#xff0c;这些目标函数可能…

软考44-上午题-【数据库】-数据定义语言DDL

一、SQL server数据库的体系结构 SQL server数据库的体系结构是由视图、基本表、存储文件&#xff0c;三级结构组成。 【回顾】&#xff1a;数据库的三级模式结构 视图&#xff1a;外模式 存储文件&#xff1a;内模式 基本表&#xff1a;概念模式 二、SQL语言的分类 SQL语言按…

Yolo v9 “Silence”模块结构及作用!

论文链接&#xff1a;&#x1f47f; YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 代码链接&#xff1a;&#x1f47f; https://github.com/WongKinYiu/yolov9/tree/main Silence代码 class Silence(nn.Module):def __init__(self):supe…

2024最新零基础入门|白帽黑客学习教程,从0到黑客高手!

新手如何通过自学黑客技术成为厉害的白帽黑客&#xff1f; 我目前虽然算不上顶尖的白帽大佬&#xff0c;但自己在补天挖漏洞也能搞个1万多块钱。 给大家分享一下我的学习方法&#xff0c;0基础也能上手学习,如果你能坚持学完&#xff0c;你也能成为厉害的白帽子&#xff01; …

Escalate_Linux(4)-利用SUDO实现提权

利用SUDO实现提权 利用用户的sudo授权获得root的shell cat /etc/passwd cat /etc/sudoers 命令没有权限 echo "cat /etc/sudoers" >/tmp/ls chmod 755 /tmp/ls export PATH/tmp:$PATH /home/user5/script 想办法更改user1的口令 echo echo "user1:xiao…

【电子通识】为什么单片机芯片上会有多组VDD电源?

在单片机芯片规格书中&#xff0c;我们经常能看到多个组VDD的设计&#xff0c;如下红框所示管脚都是VDD管脚。 为什么需要这样设计&#xff1f;只设置一个VDD管脚&#xff0c;把其他的VDD管脚让出来多做几个IO或是其他复用功能不好吗&#xff1f;接下来我们从单片机内部的电路结…