【深海王国】小学生都能玩的语音模块?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多线程模式的学习,加油!看到这里的你今天也辛苦啦٩(ˊᗜˋ)و✧。

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

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

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

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

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海大都督

建设深海,没你不行!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值