|
2黑币
本帖最后由 hei51com 于 2020-6-24 10:17 编辑
需要通过串口(TX,RX)发送歌曲名(utf8 格式)给MCU。
MCU要求以下面的格式发:
比如歌曲名是CD1,那发送0x43 0x44 0x31。
这应该是要以ASCII 十六进制发给MCU吧?
那是不是要把歌曲名utf8 格式转换为ASCII 十六进制,然后通过串口把ASCII 十六进制发给MCU?
歌曲名(utf8格式)、中、英文怎么区别处理?
感谢回答,可能是我描述的不太清楚,再补充以下
//底层只给了以下结构体,char *name 是歌曲名
typedef struct GetFileNameEvtTag {
QEvt super;
char *name; //USB 歌曲名(utf8 格式)
int num;
} GetFileNameEvt;
//调用
GetFileNameEvt *pe = (GetFileNameEvt *)e;
UINT16 name_len = strlen(pe->name);
printf(" song name %s,len %d\n",pe->name,name_len); //U盘里面的歌曲名是“CD1.mp3”,这里打印pe->name 也是"CD1.mp3",说明这样调用是对的。
我把歌曲名改为CD1我.mp3,打印pe->name出来是"CD1鎴mp3",有中文时打印出来就不正确。
问题:
1.歌曲名有中、英文,怎么打印才能正常?
2.歌曲名有中、英文,怎么以ASCII 十六进制发给MCU?或者以怎么格式发给MCU(MCU收到后又怎么解析)。
|
最佳答案
查看完整内容
可以以文本形式发送字符串,如"CD1",接收端把数据串按字节保存在缓存数组,如果传输的信息有规律且范围不太大,可以把相关信息创建一个二维数组,用查表法解析播放指令。
|