【智能家居】6、语音控制及网络控制代码实现

一、语音控制

1、指令结构体编写

这个结构体定义了一个命令输入的模型。在这个模型中,包含以下几个部分:

  • cmdName:一个长度为128的字符串,用于存储命令名称。
  • dvicesName:一个长度为128的字符串,用于存储设备名称。
  • cmd:一个长度为32的字符串,用于存储具体的命令。
  • Init:一个函数指针,该函数接受三个参数:指向InputCmd结构体实例的指针(可以读取所有字段)、IP地址和端口号,并返回一个整数值。
  • getCmd:一个函数指针,该函数接受一个参指向InputCmd结构体实例的指针(可以读取所有字段)并返回一个整数值。
  • log:一个长度为1024的字符数组,用于存储日志信息。
  • fd:一个整数,文件描述符。
  • next:一个指向结构体本身的指针,用于操控链表。

imputCmd.h

#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>

struct InputCmd{
	char cmdName[128];
	char devicesName[128];
	char cmd[32];
	int (*Init)(struct InputCmd *cmd,char *ipAdress,char *port);
	int (*getCmd)(struct InputCmd *cdm);
	char *log[1024];
	int fd;
	char port[12];
	char ipAddress[32];
	int s_fd;
	struct InputCmd *next;
};

2、实例化对象

(1)结构体变量初始化

一个结构体变量初始化的例子,声明并初始化了一个`InputCmd`类型的变量`voice`,并将每个字段分别赋值。

  • cmdName字段被赋值为字符串"voice"。
  • devicesName字段被赋值为字符串"/dev/ttyAMA0"。
  • cmd字段被赋值为空字符串。
  • init字段被赋值为`voice_init`函数的地址。
  • getCmd字段被赋值为`voice_getCmd`函数的地址。
  • log字段被赋值为空字符串。

(2)对应字段函数编写

初始化串口,获取文件描述符

fd=serialOpen(voice->devicesName,9600)它将尝试以9600波特率打开名为 voice->devicesName 的串行端口,并将返回的文件描述符(File Descriptor)赋值给变量 fd。这里的 voice->devicesName 是指向一个字符串的指针,该字符串包含要打开的串行端口的名称或路径。例如,在Linux系统上,这可能是类似于 "/dev/ttyS0" 或 "/dev/ttyUSB0" 的设备文件路径。

9600 是波特率,它决定了数据传输的速度,表示每秒传输9600个数据位。如果 serialOpen 函数成功打开串行端口,它将返回一个非负整数。如果打开失败,函数通常会返回 -1

读取指令

voicer->fd指向的串行端口读取数据,并将这些数据存储在voicer->command缓冲区中。

插入链表等待被调用

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 06:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 06:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 06:12:01       82 阅读
  4. Python语言-面向对象

    2024-01-28 06:12:01       91 阅读

热门阅读

  1. WPF自定义控件,聚合器模式传递消息

    2024-01-28 06:12:01       66 阅读
  2. 2023年企业网络安全预算情况分析

    2024-01-28 06:12:01       56 阅读
  3. VUE3 加载自定义SVG文件

    2024-01-28 06:12:01       55 阅读
  4. 模型训练trick篇

    2024-01-28 06:12:01       66 阅读
  5. MySQL封装JDBC为工具类(JDBC简化)

    2024-01-28 06:12:01       56 阅读
  6. MySQL 函数参考手册(MySQL 字符串函数)

    2024-01-28 06:12:01       43 阅读
  7. 中科大--高级数据库期末试卷

    2024-01-28 06:12:01       58 阅读
  8. MySQL 函数参考手册(MySQL 数值函数)

    2024-01-28 06:12:01       35 阅读
  9. mysql数据库的备份和恢复

    2024-01-28 06:12:01       54 阅读
  10. 基础算法--搜索与图论(2)

    2024-01-28 06:12:01       37 阅读
  11. 图论第一天|797.所有可能的路径 200. 岛屿数量

    2024-01-28 06:12:01       67 阅读
  12. vue项目使用element-plus

    2024-01-28 06:12:01       50 阅读
  13. 题记(32)--矩阵K次幂

    2024-01-28 06:12:01       51 阅读
  14. 【LeetCode-435】无重叠区间(贪心)

    2024-01-28 06:12:01       59 阅读
  15. el-tree实现多选、反选、指定选择

    2024-01-28 06:12:01       54 阅读
  16. Compose | UI组件(五) | Button 按钮组件

    2024-01-28 06:12:01       52 阅读