这篇文章主要记录如何解决使用SYN6288语音模块播报如温湿度这类变量的问题。
关于SYN6288驱动的移植非常简单,可以参考这篇文章,博主的驱动与之相同。
下面只记录方法,简单来说就是使用字符串变量直接传参。比我想在检测完温湿度后,让SYN6288模块播报下面这句话:
“当前温度为XX℃”。
那么可以使用sprintf函数实现对字符串变量的赋值,示例代码如下,大家可以直接在程序的相应位置插入这些代码。
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <stdio.h> //sprintf函数头文件
#include "syn6288.h"
/* USER CODE END Includes */
/* USER CODE BEGIN 1 */
uint8_t temperature = 1; //温度值
uint8_t humidity = 1; //湿度值
char Speakchar[25]; //需要播报的字符串放在这里
/* USER CODE END 1 */
/**
* 下面的两行插入到你需要播报的位置
* 因为SYN_FrameInfo第二个参数需要先设定音量、音乐、语速
* 所以用对Speakchar先赋前三个参数,之后再赋温度值(SYN6288能识别℃符号)
* 在SYN_FrameInfo中记得将Speakchar强制转换为uint8_t格式,虽然不影响编译
*/
sprintf(Speakchar, "[v7][m1][t5]当前温度为%d℃",temperature);
SYN_FrameInfo(0,(uint8_t *)Speakchar);
如果编译后Build Out框中报错显示中文乱码,则可以参考这篇文章,参考他的第二个方法解决了我的问题。