static void LED_MuiltLineDisAndPlayVoiceref TEXT_CONTEXT TextContextstring VoiceText int BuffPos; byte Buff = new byte255;分配缓冲数组 ushort CRC; byte T
func LED_MuiltLineDisAndPlayVoice(TextContext *[]TEXT_CONTEXT, VoiceText string) { BuffPos := 0 Buff := make([]byte, 255) //分配缓冲数组 var CRC uint16 TextContextNum := byte(len(*TextContext))
/*0.填充命令参数*/
Buff[BuffPos] = 0x00 //显示屏地址
BuffPos++
Buff[BuffPos] = 0x64 //固定参数
BuffPos++
Buff[BuffPos] = 0xFF //包序列
BuffPos++
Buff[BuffPos] = 0xFF //包序列
BuffPos++
Buff[BuffPos] = 0x6E //指令
BuffPos++
Buff[BuffPos] = 0x00 //数据长度
BuffPos++
/*1.填充文本参数*/
Buff[BuffPos] = 0x00 //文本类型,1为广告语,0为临时信息
BuffPos++
Buff[BuffPos] = TextContextNum //文本数量
BuffPos++
for i := 0; i < int(TextContextNum); i++ {
Buff[BuffPos] = (*TextContext)[i].LID //行号
BuffPos++
Buff[BuffPos] = (*TextContext)[i].DisMode //显示模式
BuffPos++
Buff[BuffPos] = 0x01 //显示速度
BuffPos++
Buff[BuffPos] = (*TextContext)[i].DelayTime //停留时间
BuffPos++
Buff[BuffPos] = 0x00 //显示次数
BuffPos++
Buff[BuffPos] = 0xFF //32位字体颜色 红色分量
BuffPos++
Buff[BuffPos] = 0x00 //32位字体颜色 绿色分量
BuffPos++
Buff[BuffPos] = 0x00 //32位字体颜色 蓝色分量
BuffPos++
Buff[BuffPos] = 0x00 //32位字体颜色 保留字节
TextBuff := []byte((*TextContext)[i].Text) //把string 类型字符串 读取到字节数组里面.注意字符串编码必须是GB2312 WINDOWS代码页为936
if (BuffPos + len(TextBuff)) >= 255 { //整包长度不能大于255
return
}
Buff[BuffPos] = byte(len(TextBuff)) //文本长度
BuffPos++
for z := 0; z < len(TextBuff); z++ { //复制文本到缓冲
Buff[BuffPos] = TextBuff[z]
BuffPos++
}
if i == (int(TextContextNum) - 1) { //添加文本分隔符
Buff[BuffPos] = 0x00
} else {
Buff[BuffPos] = 0x0D
}
BuffPos++
}
/*2.填充语音参数*/
VoiceTextBuff := []byte(VoiceText) //把string 类型字符串 读取到字节数组里面.注意字符串编码必须是GB2312 WINDOWS代码页为936
if len(VoiceTextBuff) > 0 {
Buff[BuffPos] = 0x0A //语音分隔符
BuffPos++
Buff[BuffPos] = byte(len(VoiceTextBuff)) //语音文本长度
BuffPos++
if (BuffPos + len(VoiceTextBuff)) >= 255 { //长度检查
return
}
for z := 0; z < len(VoiceTextBuff); z++ { //复制文本到缓冲
Buff[BuffPos] = VoiceTextBuff[z]
BuffPos++
}
} else {
Buff[BuffPos] = 0x00
BuffPos++
}
Buff[BuffPos] = 0x00
BuffPos++
Buff[5] = byte(BuffPos - 6) //重新修改数据长度
/*3.计算校验码*/
CRC = MB_CRC16(&Buff, BuffPos)
Buff[BuffPos] = byte(CRC & 0xff) //校验码低字节
BuffPos++
Buff[BuffPos] = byte((CRC >> 8) & 0xff) //校验码高字节
BuffPos++
/*4.最后在这里把Buff的内容发送出去,长度为BuffPos */
//....
}
原文地址: https://www.cveoy.top/t/topic/b1jF 著作权归作者所有。请勿转载和采集!