找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機(jī)串口接收端數(shù)據(jù)分離問題

查看數(shù): 1928 | 評(píng)論數(shù): 10 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2024-5-12 14:05

正文摘要:

大家好,占用大家寶貴時(shí)間請(qǐng)指點(diǎn)。 主機(jī)傳送,用串口助手接收正常的。在接收端似乎是ASCII碼的hex,請(qǐng)教各位,如何在從機(jī)端才能分離出110這個(gè)數(shù)字在數(shù)碼管顯示出來。 傳送代碼如下: unsigned int    ...

回復(fù)

ID:705846 發(fā)表于 2024-5-15 13:02
應(yīng)該是從4開始,但就取少一位。沒有搞明白是怎么回事。必須從5開始。
ID:844772 發(fā)表于 2024-5-13 15:32
你這句不就是分離的嗎?  for(i=5;i<8;i++)     temp=(char)temp*10+(str[i]-30);
但是有兩個(gè)問題:一是,i應(yīng)該從4開始;二是,30 是十六進(jìn)制,應(yīng)該用48
ID:161164 發(fā)表于 2024-5-13 10:24



ID:883242 發(fā)表于 2024-5-12 20:12
sprintf(%d)的長度是不固定的,可能是“1”、也可能是“10”,還可能是“110”,那就要從最后的\n開始向前分離數(shù)字,直到遇到字母為止。
ID:1034262 發(fā)表于 2024-5-12 18:38
ASCII編碼而已,直接按ASCII判斷就可以了。哪怕有中文,都一樣可以分離出來。
ID:73992 發(fā)表于 2024-5-12 18:08
數(shù)字asc碼,110三個(gè)字節(jié)。百位,十位,個(gè)位分別減0x30.百位得到值0x01再乘以100,十位得到值01再乘以10,個(gè)位得到值00。這三個(gè)字節(jié)數(shù)字的和就是可計(jì)算的值。
ID:1109793 發(fā)表于 2024-5-12 16:29
samxon 發(fā)表于 2024-5-12 16:22
把time110后面的110變成可以計(jì)算的110,然后用數(shù)碼管顯示出來。

ASCII好像是直接減去一個(gè)數(shù)字就變成數(shù)字了吧,好像是0x30,這樣直接拿去顯示就好了吧,不需要再整成一個(gè)變量,再分解BCD碼,多麻煩啊
ID:705846 發(fā)表于 2024-5-12 16:22
xiaobendan001 發(fā)表于 2024-5-12 16:17
樓主意思大概是把字符串110變成三個(gè)數(shù)字,1,1,0;

把time110后面的110變成可以計(jì)算的110,然后用數(shù)碼管顯示出來。
ID:1109793 發(fā)表于 2024-5-12 16:17
lxh2002 發(fā)表于 2024-5-12 15:58
如果數(shù)據(jù)長度是固定的,用一個(gè)數(shù)組接收數(shù)據(jù),把time作為數(shù)據(jù)頭,找到數(shù)據(jù)頭,第五位就是你要的

樓主意思大概是把字符串110變成三個(gè)數(shù)字,1,1,0;
ID:237471 發(fā)表于 2024-5-12 15:58
如果數(shù)據(jù)長度是固定的,用一個(gè)數(shù)組接收數(shù)據(jù),把time作為數(shù)據(jù)頭,找到數(shù)據(jù)頭,第五位就是你要的

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

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

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