LED_PlayVoice 函数:使用 Golang 播放语音
使用 Golang 播放 LED 语音
该函数 LED_PlayVoice 用于将给定的语音文本字符串 VoiceText 播放到 LED 设备。
函数实现:
func LED_PlayVoice(VoiceText string) {
Buff := make([]byte, 255) //分配缓冲数组
TextBuff := []byte(VoiceText) //把string类型字符串读取到字节数组里面。注意字符串编码必须是GB2312 WINDOWS代码页为936
Pos := 0
TextLen := len(TextBuff) //获取字符串数组的长度
var CRC uint16
if (6 + 1 + TextLen + 2) >= 255 { //一个数据包最大不能超过255长度
return
}
/*0.填充显示命令参数*/
Buff[Pos] = 0x00 //显示屏地址
Pos++
Buff[Pos] = 0x64 //固定参数
Pos++
Buff[Pos] = 0xFF //包序列
Pos++
Buff[Pos] = 0xFF //包序列
Pos++
Buff[Pos] = 0x30 //指令
Pos++
Buff[Pos] = byte(1 + TextLen) //数据长度
Pos++
Buff[Pos] = 0x01 //播放选项
Pos++
/*1.复制语音文本内容到缓冲区*/
for i := 0; i < TextLen; i++ {
Buff[Pos] = TextBuff[i]
Pos++
}
/*2.计算校验码*/
CRC = MB_CRC16(&Buff, Pos)
Buff[Pos] = byte(CRC & 0xff) //校验码低字节
Pos++
Buff[Pos] = byte((CRC >> 8) & 0xff) //校验码高字节
Pos++
/*3.最后在这里把Buff的内容发送出去,长度为Pos */
//....
}
代码解释:
- 分配缓冲数组:
Buff := make([]byte, 255),创建一个大小为 255 字节的缓冲数组。 - 将字符串转换为字节数组:
TextBuff := []byte(VoiceText),将接收的语音文本字符串VoiceText转换为字节数组TextBuff。注意: 字符串编码必须是 GB2312,对应 WINDOWS 代码页为 936。 - 计算数据包长度:
if (6 + 1 + TextLen + 2) >= 255,判断数据包长度是否超过 255 字节,超过则直接返回。 - 填充显示命令参数: 填充显示屏地址、固定参数、包序列、指令、数据长度和播放选项等参数。
- 复制语音文本内容到缓冲区: 将
TextBuff中的字节数据复制到Buff中。 - 计算校验码: 使用
MB_CRC16函数计算校验码,并将校验码低字节和高字节分别写入Buff中。 - 发送数据包: 最后,将
Buff中的内容发送出去,长度为Pos。
注意: MB_CRC16 函数的实现需要根据实际情况进行调整,该函数用于计算数据包的 CRC 校验码。
总结: 该函数 LED_PlayVoice 实现了将语音文本播放到 LED 设备的功能,通过将字符串转换为字节数组,填充到数据包中,并计算校验码,最终发送到 LED 设备进行播放。
原文地址: https://www.cveoy.top/t/topic/nlWE 著作权归作者所有。请勿转载和采集!