智能家居 ----- 语音和socket

本文档描述了在嵌入式系统中如何实现语音控制功能,包括在inputcommand.h中添加指令控制工厂链表函数声明,以及在mainpro中添加相应的接口。语音模块涉及读取指令函数和串口初始化,使用socket进行通信。在语音线程中,初始化串口并读取指令,而在socket线程中,创建监听并接受连接,处理接收到的数据。整个过程涉及线程池的建立和管理,以及对socket和语音控制结构体的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语音

用到的结构体是inputcommand.h

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

inputcommand中:“语音控制”加入指令控制工厂链表函数声明

在这里插入图片描述

mainpro中添加接口:

在这里插入图片描述

语音指令输入文件代码,这个文件里面的函数就要添加读取指令函数和初始化函数,初始化函数就是将串口打开然后设置相应波特率,读取指令函数需要注意的是在读取指令前需要将缓冲区初始化防止有乱码,读指令函数主要调用read函数进行指令的读取,在没有指令到来的时候,输出: over time。

编写语音模块是涉及到一些函数传参不是很扎实!

socket

socketcontrl.c可以以voicecontrl.c为基础写
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

inputcommand中:“语音控制”加入指令控制工厂链表函数声明

在这里插入图片描述

mainpro中添加接口

在这里插入图片描述


编译过程中经常出现类似报错(代码没问题):

在这里插入图片描述

原因是下图的两个写到struct InputCommander里去了

在这里插入图片描述

线程池的建立

一.语音线程

语音线程函数:
在这里插入图片描述
在这里插入图片描述
socket线程函数
在这里插入图片描述
在这里插入图片描述

二.socket线程

socketcontrl.c:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

socket线程函数:(mainpro.c中)

1.起两个线程
在这里插入图片描述

2.创建这两个线程要调的函数
在这里插入图片描述
3.把voicecontrl 和socketcontrl结构体拿到main函数操作(通过findDeviceByName来找)
在这里插入图片描述

思路:
main函数进来 建立语音线程 开始语音监控 调用函数void_thread
void_thread :把voice相关的结构体找到。找到后调用初始化函数去打开串口,调用get_command函数去读取 读到的放到voiceHandler->command里
然后main函数里继续初始化socket线程:
sockethandler找出来,然后初始化,(已经开始监听),while(1)里不断accept,有数据接入创建新线程,读数据,放到socketHandler->command里,最终把数据拿出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值