[范例教程] SYN6288播放函数

[复制链接]
 楼主| primojones 发表于 2023-8-19 20:00 | 显示全部楼层 |阅读模式
  1. static uint8_t dri_syn6288_sendText(uint8_t backSound,uint8_t *text)
  2. {
  3.     uint8_t tempBuf[DRI_SYN6288_BUFFER_LENGTH],i,crc = 0;
  4.     uint16_t textLength; // 文本长度

  5.     textLength = strlen((uint8_t*)text);
  6.     /* 帧固定配置信息 */
  7.     tempBuf[0] = 0xFD;    // 帧头
  8.     // tempBuf[1] = textLength >> 8;    // 数据长度高字节
  9.     tempBuf[1] = 0x00;    // 数据长度高字节
  10.     tempBuf[2] = (textLength & 0xff) + 3;    // 数据长度低字节
  11.     tempBuf[3] = 0x01;    // 构造命令字:合成播放命令
  12.     /* 字节高5位表示背景音乐,低3位表示编码格式 0是GB2312编码 */
  13.     tempBuf[4] = 0x01|(backSound << 4);    // 构造命令参数:背景音乐设定
  14.     /* 校验码计算 */
  15.     for(i = 0; i < 5; i++)
  16.     {
  17.         crc = crc ^ tempBuf[i];     // 对发送的字节进行异或校验
  18.     }

  19.     for(i = 0; i < textLength; i++)
  20.     {
  21.         crc = crc ^ text[i];         //对发送的字节进行异或校验
  22.     }
  23.     /* 发送数据 */
  24.     memcpy(&tempBuf[5], text, textLength);
  25.     tempBuf[5 + textLength] = crc;
  26.     DRI_SYN6288_SEND_BUFFER(tempBuf,5 + textLength + 1); // 串口发送
  27. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

1530

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部