1、需求效果:低于关机电压,此时按键应该无反应?
实际电压在低于关机电压情况下,按住按键会开启三挡风力的风扇,但不会开机没有灯效,松开按键风扇停止
2、需求效果:插上充电,白呼吸灯?
测试结果:插充电线,风扇会自动三挡转,其余功能正常(类似将正常的“关机状态”变成了“三挡状态”,不同点在于:第一次插上充电线立刻三挡,后面循环切档到关机要延迟一两秒才转)
3、新增问题,需求效果:低电后红灯闪烁,电压上去后停止闪烁
测试结果:电压上去后红灯依然闪,关机后再重新开机后才正常
思考:实际会不会不会触发这个情况,因为电压上来必定是因为充电,检测到充电后会停止红灯闪烁,具体看看代码怎么写的
代码梳理
模块:初始化、状态机更新、充电扫描、按键扫描、消息队列、消息处理
主状态机:开机、睡眠、充电
主流程:
针对问题一:睡眠模式中通过pwr唤醒进入正常模式,此时风扇转动,但同时检测到低于关机电压,不予开机,此时按住pwr,就会重复循环上述流程,最终效果就是低于关机电压下,按住pwr风扇会一直转
解决方法一:唤醒时检测电压,低于关机电压则阻塞
针对问题二:调频率(降低)
新ui梳理对比 ...
一些git的小问题,向同学请教加上AI的回答
康康下GIT基本结构
这里解释一下关键的几个名词:
Workspace:工作空间,就是我们写代码的目录。
Index:缓存区、暂存区,指的是.git目录下的index文件。
Repo(Repository):本地仓库。
Remote:远程仓库。
git的Untracked file是什么
“Untracked files”指的是那些存在于工作目录中,但尚未被Git版本控制系统跟踪的文件。当一个文件是untracked状态时,这意味着Git不知道它的存在,也不会在你进行提交时包含它。
提交到暂存区,但是之后被修改的文件,这个时候进行commit,提交的是哪个版本
暂存区版本
在本地仓库删除了一个文件,怎么同步删除远程仓库的这个文件
可以直接add.然后直接commit,使用git rm相当于先运行rm命令再运行git add,之后可以直接commit
从版本控制中删除文件,但还想保留在工作目录中
应该使用git rm --cached <filename>命令。这样,文件的追踪状态在仓库中被删除,但文件本身仍然存在于工 ...
使用Hexo管理文章可以通过几种不同的方法来实现,以下是一些常见的管理文章的方法:
手动管理
使用命令行工具创建新的文章:hexo new "Post Title" 或者 hexo n "Post Title"。
文章将自动创建在source/_posts目录下,文件名基于文章标题。
编辑文章需要手动在source/_posts目录下找到相应的.md文件。
修改完成后,使用hexo generate或hexo g来重新生成站点。
使用hexo server或hexo s来预览更改。
部署到远程服务器使用hexo deploy或hexo d。
使用Hexo插件
Hexo Admin:这是一个图形界面插件,允许你在浏览器中管理文章、分类、标签,并且可以一键部署到GitHub Pages等地方。安装此插件后,你可以在本地服务器上访问localhost:4000/admin(或你的服务器地址)来登录并管理你的博客。
1npm install hexo-admin --save
编辑工具
如Typora,可以用来编写Markdown文件,然 ...
Hexo搭建
未读在hexo博客的代码里发现.pug文件,这是什么文件?在Hexo博客系统中,.pug文件是使用Pug(以前称为Jade)模板引擎编写的模板文件。Pug是一种强大的服务器端HTML模板引擎,它允许你以简洁的语法编写HTML,并在运行时将其编译成完整的HTML代码。
当Hexo构建博客时,它会处理这些.pug文件,将它们转换成标准的HTML文件,这样浏览器就能正确解析并显示页面内容。Pug的一些特性包括:
缩进语法:Pug使用缩进来表示元素嵌套,这使得模板看起来更整洁且容易阅读。
条件和循环:你可以使用条件语句和循环来动态地生成HTML结构。
变量和插值:允许你在模板中使用变量,并将数据动态插入到HTML中。
混合(Mixins)和扩展(Extends):允许重用代码块和继承布局,这有助于保持代码的一致性和可维护性。
如果你在Hexo博客中发现.pug文件,那么这个博客很可能使用了Pug作为其模板语言。要查看或编辑这些文件,你需要熟悉Pug的语法和特性。通常,Hexo会有一个配置选项让你选择使用哪种模板引擎,所以在Hexo的配置文件中,你可能会看到类似theme_config.pug ...
蓝牙开发
未读配置完成的功能
长按pwr开机
游戏模式
长按来电拒接
音乐pp
音量加减
上下曲
自动关机
代码需要完成的
配置开启了软开关机,只需要软开机,禁止按键软关机
双击任意耳接听
通话状态下 双击任意耳挂断
清除配对 配置工具有长按N秒进配对后清配对信息(关机状态长按N秒开机进配对后清除全部配对信息)和ui有点不符
四击siri左边无法执行,配置中无法选定左右
提示音 需要改动代码的
游戏模式开关
清除配对
有关关机的地方
func.c在状态检测循环里,有这么一个状态
123case FUNC_PWROFF: func_pwroff(sys_cb.pwrdwn_tone_en); break;
//耳机入仓关机
//长按PP/POWER软关机(通过PWROFF_PRESS_TIME控制长按时间)
都是用的这个
power_on_check_do(void)中有一个while(1)检测pwrkey,有关机功能
key_init后会进入power_on_check_do
默认是有游戏模式提示音的
在配 ...
蓝牙开发
未读需求表格
蓝牙模式
状态
功能
备注
PLAY
短按
播放/暂停
PLAY
长按
无作用
NEXT/PREV
短按
播放下一曲
NEXT/PREV
长按
播放上一曲
MODE
短按
切换MODE
提示音,BT/USB/TF CARD/LINE IN
MODE
长按
断开蓝牙
提示音
LINE IN
状态
功能
备注
PLAY
短按
播放/暂停
PLAY
长按
开始录音
提示音,存到U盘(优先)或TF CARD
PLAY
短按
停止录音
提示音
PLAY
短按
播放最近的录音
NEXT/PREV
短按
播放下一曲
录音时,无作用
NEXT/PREV
长按
播放上一曲
录音时,无作用
MODE
短按
切换MODE
录音时,无作用
MODE
长按
无作用
TF CARD/UDISK
状态
功能
备注
PLAY
短按
播放/暂停
PLAY
长按
无作用
NEXT& ...
需求设计抽奖整体流程图
使用脚手架工具创建项目抽奖策略领域库表设计
四张表:策略表、策略奖牌表、奖品表、奖品规则表
基础层持久化数据
mybatis配置
infrastructure层dao、po代码开发
策略概率装配导入redisson
在app层加入redisson配置类
脚手架已在infrastructure层对redisson的一些方法简单封装
策略装配
创建策略领域,策略装配厂,数据查询由repository(infrastructure层)实现
创建StrategyRepository
通过策略id从redis获取策略奖品list,null则查询数据库并存入redis,具体数据库查询由dao实现
回到策略装配厂,通过策略奖品list生产抽奖hashmap并存入redis,供抽奖使用
抽奖的实现思想为以空间换时间。例:一个有100个格子的map,在其中3个格子中都填入奖品一,则对应奖品一的概率为3%,10个格子中都填入奖品二,则对应奖品二的概率为10%,
疑问:为什么要用linkedhashmap来存入奖品,直接用arraylist不好吗,而且这个具体实现方法也有 ...








