我最近在制作VoiceBox Pro的项目时,需要从107000.com/T-Hex这里获取一段字符,如下:
但所需要的代码格式是(附上我的代码):
- /*
- 请先进入https://www.107000.com/T-Hex
- 中文不需要库
- 下载时先拔掉TX和RX
- TX连接RX,RX连接TX
- 输入时不要换行否则会多出一个音
- */
- char Chinese_GB2312[200] = {0xC0, 0xEB, 0xC0, 0xEB, 0xD4, 0xAD, 0xC9, 0xCF,
- 0xB2, 0xDD, 0xD2, 0xBB, 0xCB, 0xEA, 0xD2, 0xBB,
- 0xBF, 0xDD, 0xC8, 0xD9, 0xD2, 0xB0, 0xBB, 0xF0,
- 0xC9, 0xD5, 0xB2, 0xBB, 0xBE, 0xA1, 0xB4, 0xBA,
- 0xB7, 0xE7, 0xB4, 0xB5, 0xD3, 0xD6, 0xC9, 0xFA
- };//长度不可超过200
- void SYN_FrameInfo(uint8_t Music , uint8_t *HZdata);//必须要有,否则报错
- void setup() {
- Serial.begin(9600);
- SYN_FrameInfo(0, Chinese_GB2312);
- }
- void loop() {
- }
- void SYN_FrameInfo(uint8_t Music, uint8_t *HZdata) {
- unsigned char Frame_Info[200];//与Chinese_GB2312长度一致
- unsigned char HZ_Length;
- unsigned char ecc = 0;//定义校验字节
- unsigned int i = 0;
- HZ_Length = strlen(HZdata);//需要发送文本的长度
- Frame_Info[0] = 0xFD;//构造帧头0xFD
- Frame_Info[1] = 0x00;//构造数据区长度的高字节
- Frame_Info[2] = HZ_Length + 3;//构造数据区长度的低字节
- Frame_Info[3] = 0x01;//构造命令字:合成播放命令
- Frame_Info[4] = 0x00 | Music << 4;//构造命令字:背景音乐设定
- for (i = 0; i < 5; i++) {
- ecc = ecc ^ (Frame_Info[i]);//对发送的字节进行异或校验,出错将无法播放
- }
- for (i = 0; i < HZ_Length; i++) { //依次发送待合成的文本数据
- ecc = ecc ^ (HZdata[i]); //对发送的字节进行异或校验
- }
- memcpy(&Frame_Info[5], HZdata, HZ_Length);
- Frame_Info[5 + HZ_Length] = ecc;
- for (i = 0; i < 5 + HZ_Length; i++) {
- Serial.write(Frame_Info[i]);//播放内容
- }
- }
复制代码 Chinese_GB2312是一个需要“0xXX,”格式字符的数组,我想制作一个小工具,但是始终无法成功:变量f始终为空。
见代码:
- String GB2312 = String("C0EBC0EBD4ADC9CFB2DDD2BBCBEAD2BBBFDDC8D9");
- String f = "";
- char ans[200] = {};
- int i = 0;
- void setup() {
- Serial.begin(9600);
- }
- void loop() {
- for (i = 0; i > GB2312.length(); i += 2) {
- f = f + "0x";
- f = f + String(GB2312[i]);
- f = f + GB2312[i + 1];
- f = f + ",";
- }
- Serial.println(String(f));
- }
复制代码 请问是由于什么引起的?如何解决?谢谢! |