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 */
//....

}

static void LED_MuiltLineDisAndPlayVoiceref TEXT_CONTEXT TextContextstring VoiceText int BuffPos; byte Buff = new byte255;分配缓冲数组 ushort CRC; byte T

原文地址: https://www.cveoy.top/t/topic/b1jF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录