找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3067|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教:通過(guò)串口(TX,RX)發(fā)送歌曲名給MCU,歌曲名格式是utf8,如何解析呢?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:731155 發(fā)表于 2020-6-20 16:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
2黑幣
本帖最后由 hei51com 于 2020-6-24 10:17 編輯

需要通過(guò)串口(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)制,然后通過(guò)串口把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盤(pán)里面的歌曲名是“CD1.mp3”,這里打印pe->name 也是"CD1.mp3",說(shuō)明這樣調(diào)用是對(duì)的。

我把歌曲名改為CD1我.mp3,打印pe->name出來(lái)是"CD1鎴mp3",有中文時(shí)打印出來(lái)就不正確。

問(wèn)題:
1.歌曲名有中、英文,怎么打印才能正常?
2.歌曲名有中、英文,怎么以ASCII 十六進(jìn)制發(fā)給MCU?或者以怎么格式發(fā)給MCU(MCU收到后又怎么解析)。




最佳答案

查看完整內(nèi)容

可以以文本形式發(fā)送字符串,如"CD1",接收端把數(shù)據(jù)串按字節(jié)保存在緩存數(shù)組,如果傳輸?shù)男畔⒂幸?guī)律且范圍不太大,可以把相關(guān)信息創(chuàng)建一個(gè)二維數(shù)組,用查表法解析播放指令。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2020-6-20 16:15 | 只看該作者
可以以文本形式發(fā)送字符串,如"CD1",接收端把數(shù)據(jù)串按字節(jié)保存在緩存數(shù)組,如果傳輸?shù)男畔⒂幸?guī)律且范圍不太大,可以把相關(guān)信息創(chuàng)建一個(gè)二維數(shù)組,用查表法解析播放指令。
回復(fù)

使用道具 舉報(bào)

板凳
ID:648281 發(fā)表于 2020-6-20 21:48 | 只看該作者
沒(méi)看明白你是要做什么
回復(fù)

使用道具 舉報(bào)

地板
ID:419968 發(fā)表于 2020-6-22 00:08 | 只看該作者
英文字母發(fā)送 就是ASCII嗎
回復(fù)

使用道具 舉報(bào)

5#
ID:786561 發(fā)表于 2020-6-22 13:12 | 只看該作者
Ascll只是可以吧字母什么的翻譯成2進(jìn)制,你2進(jìn)制發(fā)過(guò)去,mcu里面再把數(shù)據(jù)按ascll碼規(guī)則變成字符,不就是完成數(shù)據(jù)交互了
回復(fù)

使用道具 舉報(bào)

6#
ID:731155 發(fā)表于 2020-6-24 10:17 | 只看該作者
51hei**1140 發(fā)表于 2020-6-20 21:48
沒(méi)看明白你是要做什么

感謝回答,可能是我描述的不太清楚,再補(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盤(pán)里面的歌曲名是“CD1.mp3”,這里打印pe->name 也是"CD1.mp3",說(shuō)明這樣調(diào)用是對(duì)的。

我把歌曲名改為CD1我.mp3,打印pe->name出來(lái)是"CD1鎴mp3",有中文時(shí)打印出來(lái)就不正確。

問(wèn)題:
1.歌曲名有中、英文,怎么打印才能正常?
2.歌曲名有中、英文,怎么以ASCII 十六進(jìn)制發(fā)給MCU?或者以怎么格式發(fā)給MCU(MCU收到后又怎么解析)。
回復(fù)

使用道具 舉報(bào)

7#
ID:731155 發(fā)表于 2020-6-24 10:20 | 只看該作者
adject 發(fā)表于 2020-6-22 00:08
英文字母發(fā)送 就是ASCII嗎

感謝回答!
是的,但歌曲名有中、英文的時(shí)候,怎么發(fā)送給MCU呢?或者怎么判斷有沒(méi)有中文(是中文就不發(fā)送給MCU)
回復(fù)

使用道具 舉報(bào)

8#
ID:731155 發(fā)表于 2020-6-24 10:21 | 只看該作者
scll1 發(fā)表于 2020-6-22 13:12
Ascll只是可以吧字母什么的翻譯成2進(jìn)制,你2進(jìn)制發(fā)過(guò)去,mcu里面再把數(shù)據(jù)按ascll碼規(guī)則變成字符,不就是完 ...

感謝回答,可能是我描述的不太清楚,再補(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盤(pán)里面的歌曲名是“CD1.mp3”,這里打印pe->name 也是"CD1.mp3",說(shuō)明這樣調(diào)用是對(duì)的。

我把歌曲名改為CD1我.mp3,打印pe->name出來(lái)是"CD1鎴mp3",有中文時(shí)打印出來(lái)就不正確。

問(wèn)題:
1.歌曲名有中、英文,怎么打印才能正常?
2.歌曲名有中、英文,怎么以ASCII 十六進(jìn)制發(fā)給MCU?或者以怎么格式發(fā)給MCU(MCU收到后又怎么解析)。
回復(fù)

使用道具 舉報(bào)

9#
ID:731155 發(fā)表于 2020-6-24 10:21 | 只看該作者
wulin 發(fā)表于 2020-6-22 17:19
可以以文本形式發(fā)送字符串,如"CD1",接收端把數(shù)據(jù)串按字節(jié)保存在緩存數(shù)組,如果傳輸?shù)男畔⒂幸?guī)律且范圍不太 ...

感謝回答,可能是我描述的不太清楚,再補(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盤(pán)里面的歌曲名是“CD1.mp3”,這里打印pe->name 也是"CD1.mp3",說(shuō)明這樣調(diào)用是對(duì)的。

我把歌曲名改為CD1我.mp3,打印pe->name出來(lái)是"CD1鎴mp3",有中文時(shí)打印出來(lái)就不正確。

問(wèn)題:
1.歌曲名有中、英文,怎么打印才能正常?
2.歌曲名有中、英文,怎么以ASCII 十六進(jìn)制發(fā)給MCU?或者以怎么格式發(fā)給MCU(MCU收到后又怎么解析)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表