【深海王国】小学生都能玩的语音模块?ASRPRO打造你的第一个智能语音助手(7)

Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω)

今天大都督继续为大家带来系列——小学生都能玩的语音模块,帮你一周内快速学会语音模块的使用方式,打造一个可用于智能家居、物联网领域的语音助手,let’s go!

(7)初识多线程

上节的最后我们发现,在进行彩虹循环和流光溢彩效果的过程中,ASRPRO无法同时执行新的指令,比如在循环过程中立即让灯灭掉。接下来我们就来解决这个问题。

官方多线程例程:

在范例教程中,官方也给出了多线程的使用教程:

在这里插入图片描述

但是官方的这些例程大部分都在ASRPRO-PLUS上运行,比如第一个例程的实现的效果是让板载LED按200ms闪烁,彩屏背光按700ms闪烁。

而我们需要实现的目标:让彩虹循环/流光溢彩运行的过程中,能够执行灭灯指令。跟例程四多线程使用–消息队列最相近,例程四的任务目标如下:

在这里插入图片描述

大家可以参考一下,其他官方例程写的也都很好很详细。

然后官方的多线程教程链接在这里,接下来的多线程代码块解释也大部分摘自这里,大家可以参考一下。

多线程模块

多线程代码块解释:

多线程代码块有9个:

在这里插入图片描述

他们的使用方式如下:

  1. 新建线程:使用多线程可以让多个任务在操作系统的调度下分时并行执行。可以在模块内修改线程名、优先级、占用内存,优先级数字越大级别越高,占用内存最高 512,需要根据程序整体合理分配。建议先设置最大,再慢慢减小,查看运行情况是否正常来确定最终大小。
  2. 新建队列消息:新建队列消息,可修改消息名、消息长度单位为字节、最多消息数。
  3. 向消息队列发送指针:发送消息,向消息队列发送指针,指针类型可以时变量、数组、结构,等待时间即为发送消息到队列的时间。
  4. 接收消息存入指针并设置等待时间:接收消息,在消息队列接收的数据存入到指针中,并可设置等待时间。
  5. 中断内部发送消息:功能跟3类似,在我们使用引脚中断后使用代替代码3,在中断内部发送消息。
  6. 软件定时器设置:软件定时器每隔一段时间运行触发事件,可设置单次运行和重复运行。
  7. 启动软件定时器:启动软件定时器。
  8. 停止软件定时器:停止软件定时器。
  9. 临界保护:让操作系统的任务调度时不会打断,不会打断里面程序的执行。

多线程代码块运行逻辑:

在以上代码中我们最常用的就是前5个,1为新建线程,2为新建队列消息,3为发送队列消息,4就是接受队列消息,5为使用引脚中断时发送队列消息。

接下来我们来描述一下多线程的代码运行逻辑:

  1. 首先我们需要使用代码1新建线程n个,例如新建A1、A2两个线程:

    在这里插入图片描述

  2. 在新建线程后我们要新建队列消息,这个队列消息可以在不同线程间传递信息,我们有n个线程就新建n个队列消息

    在这里插入图片描述

  3. 创建n+1个变量,其中1个变量用于帮助我们将3号或5号代码放进程序中,没有实际意义,如下:

    在这里插入图片描述在这里插入图片描述

    另外n个是用来储存我们的队列消息的,因为我们的n个队列消息会时时更新,所以我们需要n个临时变量来储存队列消息。如下,var无实际意义,rec_1、rec_2用来临时储存message1、message2的队列信息。

    在这里插入图片描述

  4. 在ASR_CODE主程序中,将需要发送的信息储存到队列消息message中,发送到另一个线程去:

    在这里插入图片描述

  5. 在对应线程里,添加如果执行模块,帮助我们把4号代码放进程序,然后接收队列消息。并且如果message中信息更新,就立即运行需要执行的程序:

    在这里插入图片描述

  6. 然后我们根据自己需要添加其他代码即可,比如我们的目标是让彩虹循环/流光溢彩运行的过程中,能够执行灭灯指令,所以我们在上电初始化的时候设置开灯、关灯两种语音指令,分别对应语音识别ID,1和2:

    在这里插入图片描述

整体的多线程运行逻辑流程图如下:

在这里插入图片描述

最后如果大家需要本节的工程文件,在公众号「深海大都督」里,回复「语音控制灯带」就能获得啦~

感谢你的关注,建设深海,没你不行!

今天的学习到这里就差不多啦。下节我们会继续ASRPRO多线程模式的学习,加油!看到这里的你今天也辛苦啦٩(ˊᗜˋ)و✧。

需要的相关材料链接我都放在公众号「深海大都督」里了,回复「语音控制灯带」就能获得啦~

哈哈,让焦虑不再蔓延,信息不再高壁,如果你觉得这篇文章对你有帮助,就来个免费的点赞吧!

(◍˃̶ᗜ˂̶◍)✩我深海大都督正式授予你深海王国公民的身份~

(・ω< )★ 加入深海大家庭,快乐摆烂每一天!

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

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

相关文章

ONLYOFFICE最新8.1版本——桌面编辑器简单测评

前言 大家好&#xff0c;我是小雨&#xff0c;看到最近ONLYOFFICE更新了最新的版本&#xff0c;更新了一下当前版本来具体的测评一下&#xff0c;先来看看官网提供的各类更新信息&#xff0c;下面是我找到的三个主页&#xff0c;包括功能演示链接&#xff0c;官网连接以及专门…

农业自动气象监测站:现代农业的智能化守护者

在科技日益发展的今天&#xff0c;农业领域正迎来一场深刻的变革。在这场变革中&#xff0c;农业自动气象监测站以其独特的智能化、自动化功能&#xff0c;成为了现代农业的守护者。 农业自动气象监测站&#xff0c;顾名思义&#xff0c;是一种能够自动监测和记录农田气象数据的…

【IT领域新生必看】 Java编程中的重写(Overriding)规则:初学者轻松掌握的全方位指南

文章目录 引言什么是方法重写&#xff08;Overriding&#xff09;&#xff1f;方法重写的基本示例 方法重写的规则1. 方法签名必须相同示例&#xff1a; 2. 返回类型可以是子类型&#xff08;协变返回类型&#xff09;示例&#xff1a; 3. 访问修饰符不能比父类的更严格示例&am…

力扣5----最长回文子串

给你一个字符串 s&#xff0c;找到 s 中最长的回文子串 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样是符合题意的答案。示例 2&#xff1a; 输入&#xff1a;s "cbbd" 输出…

Ad-hoc命令和模块简介

华子目录 Ad-hoc命令和模块简介1.概念2.格式3.Ansible命令常用参数4.模块类型4.1 三种模块类型4.2Ansible核心模块和附加模块 示例1示例2 Ad-hoc命令和模块简介 1.概念 Ansible提供两种方式去完成任务&#xff0c;一是ad-hoc命令&#xff0c;一是写Ansible playbook(剧本)Ad-…

12--RabbitMQ消息队列

前言&#xff1a;前面一章内容太多&#xff0c;写了kafka&#xff0c;这里就写一下同类产品rabbitmq&#xff0c;rabbitmq内容较少&#xff0c;正好用来过度一下&#xff0c;概念还是会用一些例子来说明&#xff0c;实际部署的内容会放在概念之后。 1、基础概念 1.1、MQ消息队…

maven的卸载与安装

卸载 1.找到当前的maven路径:使用 mvn -v 查看当前maven的安装目录在哪 2.删掉 sudo rm -rf [maven的路径] 3.再次输入 mvn -v 查看是否删除成功 安装 1.下载maven安装包 https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/ 注意&#xff1a;maven版本请使用3.…

统计是一门艺术(非参数假设检验)

1.定义 当总体分布未知&#xff0c;那么就需要一种与分布具体数学形式无关的统计推断方法&#xff0c;称为非参数方法 只能利用样本中的一般信息包括位置和次序关系等 稳健性强 2.符号检验 考虑问题&#xff1a; 小样本情况&#xff1a; 以概率为1/2的二项分布是对称的 两…

海外发稿: 秘鲁-区块链新闻媒体通稿宣发

秘鲁媒体单发 随着全球化的不断深入&#xff0c;海外发稿已经成为众多企业宣传推广的重要方式之一。而在海外发稿的选择中&#xff0c;秘鲁媒体的地位尤为重要。秘鲁作为南美洲的重要国家之一&#xff0c;拥有众多知名媒体平台&#xff0c;包括diariodelcusco、serperuano、el…

项目实战-MySQL极佳优化方案---前缀索引

一、应用背景 由于公司项目数据量较大&#xff0c;开发小程序和APP过程中&#xff0c;SQL查询超过1.5s以上的等待时间&#xff0c;因此需要对SQL或者数据表结构设计进行优化。就不讲SQL语句优化啦&#xff0c;而是记录一下数据表结构设计优化的前缀索引实现。 二、MySQL索引 …

java基础--异常 笔记分享

异常 Java异常简介 什么是异常&#xff1f; 程序运行时&#xff0c;发生的不被期望的事件&#xff0c;它阻止了程序按照程序员的预期正常执行&#xff0c;这就是异常。异常发生时&#xff0c;是任程序自生自灭&#xff0c;立刻退出终止。在Java中即&#xff0c;Java在编译或…

Java中线程的常用方法(并发编程基础)

Java中线程的常用方法 sleep 调用sleep会让当前线程从Running进入TIMED WAITING状态其它线程可以使用 interrupt 方法打断正在睡眠的线程,这时sleep方法会抛出InterruptedException睡眠结束后的线程未必会立刻得到执行建议用TimeUnit的sleep代替Thread的sleep来获得更好的可读…

昇思25天学习打卡营第08天 | 模型训练

昇思25天学习打卡营第08天 | 模型训练 文章目录 昇思25天学习打卡营第08天 | 模型训练超参数损失函数优化器优化过程 训练与评估总结打卡 模型训练一般遵循四个步骤&#xff1a; 构建数据集定义神经网络模型定义超参数、损失函数和优化器输入数据集进行训练和评估 构建数据集和…

【致知功夫 各随分限】成长需要时间,助人须考虑对方的承受程度

帮助他人需考虑各人的分限所能及的&#xff0c;初学圣学需时间沉淀&#xff0c;存养心性 任何人都应该受到教育&#xff0c;不应受到贫富、贵贱的差异而排除在教育之外&#xff0c;对于不同材质的学生&#xff0c;需要因材施教&#xff1b; 每天都有新的认知&#xff0c;大我…

基于工业互联网的智慧矿山解决方案PPT(38页)

文章摘要 工业互联网与智慧矿山 基于工业互联网的新一代智慧矿山解决方案&#xff0c;将互联网和新一代IT技术与工业系统深度融合&#xff0c;形成关键的产业和应用生态&#xff0c;推动工业智能化发展。该方案以“四级、三层、两网、一平台”为总体框架&#xff0c;强调应用目…

[Vite]Vite插件生命周期了解

[Vite]Vite插件生命周期了解 Chunk和Bundle的概念 Chunk&#xff1a; 在 Vite 中&#xff0c;chunk 通常指的是应用程序中的一个代码片段&#xff0c;它是通过 Rollup 或其他打包工具在构建过程中生成的。每个 chunk 通常包含应用程序的一部分逻辑&#xff0c;可能是一个路由视…

2024菜鸟春招笔试

第一题 解题思路&#xff1a; 签到题&#xff0c;把帖子按好评度降序排列&#xff0c;再将人按升序排列。 第二题 解题思路 从左到右遍历&#xff0c;如果当前元素没有错排&#xff0c;将其与后一个交换&#xff0c;这样两个元素一定都错排。 第三题 、 解题思路 这题当时暴力…

智能运维场景探索 | 运营分析

【本场景来源于 擎创科技《一体化数智运维AIOps解决方案》白皮书&#xff0c;经过重新编写】 该场景主要围绕生产运行、运营决策两个维度进行展开&#xff0c;通过对配置、性能、业务等运行数据的加工计算&#xff0c;形成可量化运营效果、可衡量发展方向的运营数据。整体以低…

陈志泊主编《数据库原理及应用教程第4版微课版》的实验题目参考答案实验2

实验目的 1&#xff0e;掌握在SQL Server中使用对象资源管理器和SQL命令创建数据库与修改数据库的方法。 2&#xff0e;掌握在SQL Server中使用对象资源管理器或者SQL命令创建数据表和修改数据表的方 法&#xff08;以SQL命令为重点&#xff09;。 实验设备 操作系统:Win11…

CV03_mAP计算以及COCO评价标准

COCO数据集回顾&#xff1a;CV02_超强数据集&#xff1a;MSCOCO数据集的简单介绍-CSDN博客 1.1 简介 在目标检测领域中&#xff0c;mAP&#xff08;mean Average Precision&#xff0c;平均精度均值&#xff09;是一个广泛使用的性能评估指标&#xff0c;用于衡量目标检测模型…