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


    杰理可视化工具中可以配置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

  • 相关阅读:
    机组运行约束对机组节点边际电价的影响研究(Matlab代码实现)
    Spring使用(二)
    风控图算法之社群发现算法(小数据集Python版)
    趣谈 Python 设计模式(1)观察者模式
    3、CSS布局
    EFK环境搭建(基于K8S环境部署)
    Linux编辑器:vim的简单介绍及使用
    spark入门--单词统计
    String的实例化及内存解析
    浏览器地址栏输入url地址后发生的一系列事情
  • 原文地址:https://blog.csdn.net/ccdehuiji/article/details/136265032