![]() |
發(fā)布時(shí)間: 2024-5-12 14:05
正文摘要:大家好,占用大家寶貴時(shí)間請(qǐng)指點(diǎn)。 主機(jī)傳送,用串口助手接收正常的。在接收端似乎是ASCII碼的hex,請(qǐng)教各位,如何在從機(jī)端才能分離出110這個(gè)數(shù)字在數(shù)碼管顯示出來。 傳送代碼如下: unsigned int ... |
應(yīng)該是從4開始,但就取少一位。沒有搞明白是怎么回事。必須從5開始。 |
你這句不就是分離的嗎? for(i=5;i<8;i++) temp=(char)temp*10+(str[i]-30); 但是有兩個(gè)問題:一是,i應(yīng)該從4開始;二是,30 是十六進(jìn)制,應(yīng)該用48 |
![]() ![]() |
sprintf(%d)的長度是不固定的,可能是“1”、也可能是“10”,還可能是“110”,那就要從最后的\n開始向前分離數(shù)字,直到遇到字母為止。 |
ASCII編碼而已,直接按ASCII判斷就可以了。哪怕有中文,都一樣可以分離出來。 |
數(shù)字asc碼,110三個(gè)字節(jié)。百位,十位,個(gè)位分別減0x30.百位得到值0x01再乘以100,十位得到值01再乘以10,個(gè)位得到值00。這三個(gè)字節(jié)數(shù)字的和就是可計(jì)算的值。 |
samxon 發(fā)表于 2024-5-12 16:22 ASCII好像是直接減去一個(gè)數(shù)字就變成數(shù)字了吧,好像是0x30,這樣直接拿去顯示就好了吧,不需要再整成一個(gè)變量,再分解BCD碼,多麻煩啊 |
xiaobendan001 發(fā)表于 2024-5-12 16:17 把time110后面的110變成可以計(jì)算的110,然后用數(shù)碼管顯示出來。 |
lxh2002 發(fā)表于 2024-5-12 15:58 樓主意思大概是把字符串110變成三個(gè)數(shù)字,1,1,0; |
如果數(shù)據(jù)長度是固定的,用一個(gè)數(shù)組接收數(shù)據(jù),把time作為數(shù)據(jù)頭,找到數(shù)據(jù)頭,第五位就是你要的 |
Powered by 單片機(jī)教程網(wǎng)