|
2黑幣
本帖最后由 hei51com 于 2020-6-24 10:17 編輯
需要通過串口(TX,RX)發(fā)送歌曲名(utf8 格式)給MCU。
MCU要求以下面的格式發(fā):
比如歌曲名是CD1,那發(fā)送0x43 0x44 0x31。
這應(yīng)該是要以ASCII 十六進(jìn)制發(fā)給MCU吧?
那是不是要把歌曲名utf8 格式轉(zhuǎn)換為ASCII 十六進(jìn)制,然后通過串口把ASCII 十六進(jìn)制發(fā)給MCU?
歌曲名(utf8格式)、中、英文怎么區(qū)別處理?
感謝回答,可能是我描述的不太清楚,再補(bǔ)充以下
//底層只給了以下結(jié)構(gòu)體,char *name 是歌曲名
typedef struct GetFileNameEvtTag {
QEvt super;
char *name; //USB 歌曲名(utf8 格式)
int num;
} GetFileNameEvt;
//調(diào)用
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",說明這樣調(diào)用是對的。
我把歌曲名改為CD1我.mp3,打印pe->name出來是"CD1鎴mp3",有中文時打印出來就不正確。
問題:
1.歌曲名有中、英文,怎么打印才能正常?
2.歌曲名有中、英文,怎么以ASCII 十六進(jìn)制發(fā)給MCU?或者以怎么格式發(fā)給MCU(MCU收到后又怎么解析)。
|
最佳答案
查看完整內(nèi)容
可以以文本形式發(fā)送字符串,如"CD1",接收端把數(shù)據(jù)串按字節(jié)保存在緩存數(shù)組,如果傳輸?shù)男畔⒂幸?guī)律且范圍不太大,可以把相關(guān)信息創(chuàng)建一個二維數(shù)組,用查表法解析播放指令。
|