熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2024-6-14 14:03
正文摘要:如何把數(shù)組接收到的10位字符的數(shù)據(jù),只處理第五位和第六位的數(shù)據(jù),其他不要 |
| 有意思,學(xué)習(xí)了! |
| 接受到的數(shù)據(jù)用數(shù)值用數(shù)組存起來,buf[n]= |
| 這個數(shù)據(jù)有頭有尾的,每次接受完一包后,直接拿第5和6位就可以了,在接受完一包數(shù)后做個標(biāo)記,主程序判斷這個接收完成標(biāo)記就處理第五和六的數(shù),處理完成,這個標(biāo)記清除,同時(shí)在產(chǎn)生這個標(biāo)記直到處理數(shù)據(jù)完成前串口中斷里面是不能接受數(shù)據(jù)的。 |
Y_G_G 發(fā)表于 2024-6-16 16:07 有道理,我的思路應(yīng)該不太對,有時(shí)間找點(diǎn)資料學(xué)習(xí)一下,我一直都是自己瞎捉摸寫的 |
|
在中斷中只做接收,并存放在緩沖里,在主程序查找就可以 所謂第五個數(shù)據(jù),我不確定你這個數(shù)據(jù)是什么樣子的,是每次都是一樣的長度還是長度都不一樣的? 如果是長度都是一樣的,就在接收的時(shí)候存放在數(shù)組中,直接引用就可以了 |
lxh2002 發(fā)表于 2024-6-14 15:44 這個寫法是否有些啰嗦了,在中斷里面運(yùn)行這么長的代碼,應(yīng)該把判斷放到while循環(huán)中去,中斷里只進(jìn)行接收 |
|
四串口與電腦收發(fā)測試程序,觀方有講解 可以去看看 |
|
sbufch[1] = sbufch[2]; sbufch[2] = sbufch[3]; sbufch[3] = sbufch[4]; sbufch[4] = sbufch[5]; sbufch[5] = sbufch[6]; sbufch[6] = sbufch[7]; sbufch[7] = sbufch[8]; sbufch[8] = sbufch[9]; sbufch[9] = SBUF; if(sbufch[1]==0XA0&&sbufch[2]==0X0A) //判斷是否為起始頭標(biāo)志 { if(sbufch[3]==0X00||sbufch[3]==sbufch[0]) //判斷是否為起始頭標(biāo)志 { COMMAND(); } } 這個是一串9個字節(jié)的接受判斷,0xa0 0x0a 這2個字節(jié)是數(shù)據(jù)頭,找到后執(zhí)行COMMAND子程序,想怎么做都可以 |
wdgao 發(fā)表于 2024-6-14 14:58 是的,前提是把數(shù)據(jù)準(zhǔn)確的收完,以免取錯位置。從你的數(shù)據(jù)來看是30 30 30 35 ,ascii就是0005 |
| 接收到的數(shù)據(jù)放到緩沖數(shù)組里,要哪一位取哪一位即可。 |
Powered by 單片機(jī)教程網(wǎng)