1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3751|回復: 8
收起左側

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

[復制鏈接]
ID:731155 發表于 2020-6-20 16:15 | 顯示全部樓層 |閱讀模式
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",接收端把數據串按字節保存在緩存數組,如果傳輸的信息有規律且范圍不太大,可以把相關信息創建一個二維數組,用查表法解析播放指令。
回復

使用道具 舉報

ID:213173 發表于 2020-6-20 16:15 | 顯示全部樓層
可以以文本形式發送字符串,如"CD1",接收端把數據串按字節保存在緩存數組,如果傳輸的信息有規律且范圍不太大,可以把相關信息創建一個二維數組,用查表法解析播放指令。
回復

使用道具 舉報

ID:648281 發表于 2020-6-20 21:48 | 顯示全部樓層
沒看明白你是要做什么
回復

使用道具 舉報

ID:419968 發表于 2020-6-22 00:08 | 顯示全部樓層
英文字母發送 就是ASCII嗎
回復

使用道具 舉報

ID:786561 發表于 2020-6-22 13:12 | 顯示全部樓層
Ascll只是可以吧字母什么的翻譯成2進制,你2進制發過去,mcu里面再把數據按ascll碼規則變成字符,不就是完成數據交互了
回復

使用道具 舉報

ID:731155 發表于 2020-6-24 10:17 | 顯示全部樓層
51hei**1140 發表于 2020-6-20 21:48
沒看明白你是要做什么

感謝回答,可能是我描述的不太清楚,再補充以下

//底層只給了以下結構體,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收到后又怎么解析)。
回復

使用道具 舉報

ID:731155 發表于 2020-6-24 10:20 | 顯示全部樓層
adject 發表于 2020-6-22 00:08
英文字母發送 就是ASCII嗎

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

使用道具 舉報

ID:731155 發表于 2020-6-24 10:21 | 顯示全部樓層
scll1 發表于 2020-6-22 13:12
Ascll只是可以吧字母什么的翻譯成2進制,你2進制發過去,mcu里面再把數據按ascll碼規則變成字符,不就是完 ...

感謝回答,可能是我描述的不太清楚,再補充以下
//底層只給了以下結構體,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收到后又怎么解析)。
回復

使用道具 舉報

ID:731155 發表于 2020-6-24 10:21 | 顯示全部樓層
wulin 發表于 2020-6-22 17:19
可以以文本形式發送字符串,如"CD1",接收端把數據串按字節保存在緩存數組,如果傳輸的信息有規律且范圍不太 ...

感謝回答,可能是我描述的不太清楚,再補充以下
//底層只給了以下結構體,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收到后又怎么解析)。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表