树莓派4B学习笔记24:Python_SYN6288语音模块的控制函数

news2024/11/25 16:30:10

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi)

 本人所用树莓派4B 装载的系统与版本如下:

 版本可用命令 (lsb_release -a) 查询:

 Opencv 版本是4.5.1:

 Python 版本3.7.3:

今日学习SYN6288语音模块的控制,主要是Python实现部分,就懒得接树莓派测试了......

文章提供测试代码讲解,整体代码贴出、测试效果图

目录

代码编程:

测试效果:

网上查阅资料网址贴出:


代码编程:

没啥需要解释的,这个def BuildPacket(gb2312_str1):需要传入一个编码为 GB2312的字节串参数gb2312_str1 ,然后会return 返回你需要发送的数据包,定义一个变量进行承接就行了~

# coding: utf-8
import time

# 假设有一个GB2312编码的字符串
gb2312_str1 = "宇音天下".encode('gb2312')  # 编码为GB2312的字节串
#命令字,命令参数
commandWord = 0x01
commandParam = 0x00

# 定义组合数据包的函数,这个直接返回发送的数据包
def BuildPacket(gb2312_str1):
    # 第一个元素是0xfd
    packet = [bytes([0xfd])]
    # 这里不需要将字节串转换为十六进制字符串数组
    # 直接使用gb2312_str1即可,因为它已经是字节串了
    # 计算数据区长度(不包括校验和)
    data_length = len(gb2312_str1)  # 数据区长度是GB2312字节串的长度
    total_length = 1 + 1 + data_length + 1  # 0xfd + 2字节长度 + 1字节commandWord + 1字节commandParam + 数据长度 + 1字节校验
    data_length_bytes = total_length.to_bytes(2, 'big')  # 长度转换为大端序字节串
    packet.append(data_length_bytes)
    # 添加命令字和命令参数
    packet.append(bytes([commandWord]))
    packet.append(bytes([commandParam]))
    # 添加数据区
    packet.append(gb2312_str1)
    # 初始化异或校验和
    xor_checksum = 0x00
    # 对所有数据进行异或校验(除了校验和本身)
    for part in packet:
        for byte in part:
            xor_checksum ^= byte
    # 将校验和添加到数据包末尾(作为单独的字节)
    packet.append(bytes([xor_checksum]))
    #注意:packet现在是一个列表,包含bytes对象。要发送它,你需要将其合并为一个bytes对象
    # 或者,如果你想要发送的是列表中的每个bytes对象,你可能需要遍历它或使用b''.join()
    full_packet = b''.join(packet)
    # 打印完整的数据包(以十六进制形式)
    print(full_packet.hex())
    return full_packet
def main():
    packet=BuildPacket(gb2312_str1)

if __name__ == '__main__':
    main()

测试效果:

方便起见,我并未连接树莓派串口进行测试,但其返回的数据包打印是对的,

这部分的测试有 参考文章:

STM32 使用SYN6288语音模块-CSDN博客

网上查阅资料网址贴出:

C#学习笔记14:SYN6288语音模块_Winform上位机控制软件-CSDN博客

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

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

相关文章

叛逆,批判

1、对以往说法的批判之一(第一次这么公开批判是2004-2005年): 这部英文版的《数学百科全书》似乎是从俄语版翻译过来的?我查了三本引用的图书文献,都没有关于“nonsingular”和“singular”的类似下面的说法&#xff…

加密市场再遭重创:多重利空因素引发超10亿美元抛售潮

四年前的全球“熔断潮”仿佛还在眼前,如今金融市场再度迎来剧烈震荡,全球股市与加密货币市场遭遇多重利空冲击,尤其是比特币和以太坊的闪崩使得市场恐慌情绪蔓延。这个“黑色星期一”不仅见证了股市的跳水,还标志着加密市场的又一…

每日学习笔记:C++ STL算法之已排序区间算法

目录 查找元素 检查某个元素是否存在: binary_search(beg, end, value) binary_search(beg, end, value, op) 检查数个元素是否存在: includes(beg, end, searchBeg, searchEnd) includes(beg, end, searchBeg, searchEnd, op) ​编辑 查找第一个或最后一…

网安新声 | 微软蓝屏事件安全启示录

网安加社区【网安新声】栏目,汇聚网络安全领域的权威专家与资深学者,紧跟当下热点安全事件、剖析前沿技术动态及政策导向,以专业视野和前瞻洞察,引领行业共同探讨并应对新挑战的策略与可行路径。 2024年7月19日,微软发…

搭建Mysql主从架构

一、主从 1、备份的三种类型 热备份逻辑备份物理备份 二、集群 1、概述 高可用集群(HA)是指通过特殊软件,把独立的服务器连接起来,组成一个能够提供故障间切换功能的集群。 2、标准 可用性级别 年宕机时间 描述 99% 3.65天 …

蜂窝网络架构

2G/3G 4G eNB RF-RRU eCPRI RRU-BBU 光纤 5G From 38.300 AMF处理信令等,UPF 用户面,后面还有SMF

Day20 文件IO

feof(FILE*) 用于检测文件是否到达结尾 ferror(FILE*) 检测文件是否发生错误 clearerr(FILE*) 清除错误 一.文件IO的特性 1 没有缓存区 2 操作对象不在是流,而是文件描述符 3…

埃拉托斯特尼筛法,厄拉多塞筛算法,C#实现

埃拉托斯特尼筛法,厄拉多塞筛算法 这个 很多地方的定义不一样。 虽然名字相同,但是具体的定义还是有差距。 有的地方描述的是: 厄拉多塞筛算法(Eratosthenes Sieve)是一种求素数的方法,由古希腊数学家厄拉多塞提出。它的原理是&…

如何下载学术论文、专利(最全)——包含免费方法

经常有同学问,如何下载论文 一、中文论文 万方(在校生一般学校已购买权限,具体可看自己学校图书馆) 网址:https://www.wanfangdata.com.cn/ 2. 知网(在校生一般学校已购买权限,具体可看自己学…

【ML】transform 之 encode 及其实现细节

transform 之 encode 及其实现细节 1. transform (seq2seq) 是什么2. transform (seq2seq) 具体如何实现3. transform (seq2seq) 可以解决哪些类型的问题4. 补充问题4.1 残差连接(Residual Connection)是什么如何实现4.1.2 残差连接的具体实现&#xff1…

一文搞懂后端面试之MySQL MVCC【中间件 | 数据库 | MySQL | 隔离级别 | Read View】

为什么需要MVCC 锁本身就是用于并发控制的,那么为什么InnoDB还要引入MVCC,读写都加锁不就可以控制住并发吗? 锁确实可以,但是性能太差。如果是纯粹的锁,那么写和写、读和写、读和读之间都是互斥的。如果是读写锁&…

C#TreeView控件应用

1、代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace TestApp…

两数之和 II(LeetCode)

题目 给你一个下标从 1 开始的整数数组 ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 的两个数。 如果设这两个数分别是 和 ,则 。 以长度为 的整数数组 形式返回这两个整数的下标 和 。 你可以假设每个输入…

【从零开始一步步学习VSOA开发】并行RPC服务端

并行RPC服务端 概念 之前 RPC 使用方式中的所有回调函数都是串行执行的,VSOA 为 C 语言开发版本提供了并行处理 RPC 请求的功能,开发者可以通过并发 RPC 相关接口创建线程池并行处理 RPC 请求。并发服务模式通过多线程来实现,能有效提高响应…

8.06 C++作业

使用类定义实现隔离储存计算 1.头文件 #ifndef CLASS_H #define CLASS_H #include <iostream> using namespace std;class rect { private:int width;int height; public:void init(int width,int height);void show();void setw(int w);void seth(int h); };#endif //…

gradle安装及配置

文章目录 一、下载安装包二、解压文件三、环境变量配置四、验证安装结果五、配置国内源六、IDEA配置 一、下载安装包 从gradle官网下载安装包&#xff0c;官网地址为&#xff1a;https://gradle.org/releases/ 我们只需要下载编译好的文件即可。 二、解压文件 解压文件到指定…

睡前故事—星际旅行者

文章目录 欢迎来到《Bedtime Stories Time》。这是一个我们倾听、放松、并逐渐入睡的播客。感谢你收听并支持我们&#xff0c;希望你能将这个播客作为你睡前例行活动的一部分。今晚我们将讲述《星际旅行者》的故事。一个宁静的夜晚&#xff0c;希望你现在已经感到平静、放松&am…

PXE的使用

配置前提 1、挂载镜像源&#xff0c;可正常下载软件 [rootredhat-7 ~]# mkdir -p /rhel7 ----创建挂载点目录 [rootredhat-7 ~]# mount /dev/sr0 /rhel7/ ----挂载镜像源至挂载点&#xff08;临时挂载&#xff0c;重启失效&#xff09;[rootredhat-7 ~]# vim /etc/yum.repos.…

[CR]厚云填补_GridDehazeNet+

GridDehazeNet: An Enhanced Multi-Scale Network With Intra-Task Knowledge Transfer for Single Image Dehazing Abstract 雾霾等恶劣天气条件会降低自动驾驶和智能交通系统的性能。作为一种潜在的补救措施&#xff0c;我们提出了一种增强的多尺度网络&#xff0c;称为GridD…

鸿蒙(API 12 Beta2版)媒体开发【使用AudioRenderer开发音频播放功能】

音频播放开发概述 如何选择音频播放开发方式 系统提供了多样化的API&#xff0c;来帮助开发者完成音频播放的开发&#xff0c;不同的API适用于不同音频数据格式、音频资源来源、音频使用场景&#xff0c;甚至是不同开发语言。因此&#xff0c;选择合适的音频播放API&#xff…