今日继续学习树莓派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博客