找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于51單片機串口接受緩存的問題

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:125016 發(fā)表于 2019-2-19 11:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
3黑幣
我想自定義一個字符緩存數(shù)組,把單片機從串口調(diào)試助手接收到的數(shù)據(jù)存起來。問題是我從串口助手發(fā)送第一組字符,單片機存起來后,我該怎么清空緩存數(shù)組來接收下一組字符。

最佳答案

查看完整內(nèi)容

可以使用如下思路《添加結(jié)束符》 1.接收到新數(shù)據(jù) 存入 緩存 2.接收到 結(jié)束符號 如‘!’ 將緩存中的數(shù)據(jù)處理 處理完成后 通過for循環(huán)清空緩存 3.繼續(xù)等待 新的串口數(shù)據(jù)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:69072 發(fā)表于 2019-2-19 11:15 | 只看該作者
可以使用如下思路《添加結(jié)束符》
1.接收到新數(shù)據(jù) 存入 緩存
2.接收到 結(jié)束符號 如‘!’  將緩存中的數(shù)據(jù)處理  處理完成后 通過for循環(huán)清空緩存
3.繼續(xù)等待 新的串口數(shù)據(jù)
回復(fù)

使用道具 舉報

板凳
ID:94031 發(fā)表于 2019-2-19 11:41 | 只看該作者
既然用了數(shù)組,數(shù)組就有下標(biāo),接收到的數(shù)據(jù)一直往數(shù)組存,下標(biāo)一直增加,直到數(shù)組使用后數(shù)組下標(biāo)再從“0”開始存。
回復(fù)

使用道具 舉報

地板
ID:77479 發(fā)表于 2019-2-19 12:25 | 只看該作者
不用手動清空,當(dāng)接收下一組字符時,原來的緩存數(shù)組會自動清空。
回復(fù)

使用道具 舉報

5#
ID:477934 發(fā)表于 2019-2-19 13:38 | 只看該作者
數(shù)組接收,數(shù)據(jù)一直往數(shù)組里存

評分

參與人數(shù) 2黑幣 +20 收起 理由
static + 12 回帖助人的獎勵!
春風(fēng)十里吹 + 8

查看全部評分

回復(fù)

使用道具 舉報

6#
ID:217820 發(fā)表于 2019-2-19 13:43 | 只看該作者
直接覆蓋就行
回復(fù)

使用道具 舉報

7#
ID:217820 發(fā)表于 2019-2-19 13:44 | 只看該作者
直接覆蓋就行,反正數(shù)據(jù)你已經(jīng)存起來了
回復(fù)

使用道具 舉報

8#
ID:125016 發(fā)表于 2019-2-19 14:13 | 只看該作者
xuyaqi 發(fā)表于 2019-2-19 11:41
既然用了數(shù)組,數(shù)組就有下標(biāo),接收到的數(shù)據(jù)一直往數(shù)組存,下標(biāo)一直增加,直到數(shù)組使用后數(shù)組下標(biāo)再從“0” ...

不太行啊,如果不使用的話,豈不是一直往下存,都亂了
回復(fù)

使用道具 舉報

9#
ID:125016 發(fā)表于 2019-2-19 14:14 | 只看該作者
gd2051 發(fā)表于 2019-2-19 12:25
不用手動清空,當(dāng)接收下一組字符時,原來的緩存數(shù)組會自動清空。

不啊,主要就是怎么判斷是不是下一組數(shù)據(jù),串口助手發(fā)的一組字符是沒有結(jié)束標(biāo)志的
回復(fù)

使用道具 舉報

10#
ID:432823 發(fā)表于 2019-2-19 21:49 | 只看該作者
一般后面讀入數(shù)值會將前面的覆蓋的,也可以在存入后,將緩存數(shù)組清零。
回復(fù)

使用道具 舉報

11#
ID:158375 發(fā)表于 2019-2-20 13:38 | 只看該作者
你就不能加一個計數(shù)器,來計數(shù)你的數(shù)組里面的個數(shù)?
回復(fù)

使用道具 舉報

12#
ID:478484 發(fā)表于 2019-2-20 14:39 | 只看該作者
設(shè)置一個時間,如果兩個字符間隔時間長,直接就認(rèn)為下一個字符串
回復(fù)

使用道具 舉報

13#
ID:18297 發(fā)表于 2019-2-20 15:19 | 只看該作者
數(shù)組清零2個方法:
數(shù)組data[20];
方法1,
for(i=0;i<20;i++)
{
     data[i]=0       ; /清0;
}
方法2
使用memset函數(shù)
memset(data,0,20);
具體使用可以參看百度查找memset函數(shù)的使用說明。
回復(fù)

使用道具 舉報

14#
ID:385318 發(fā)表于 2019-2-20 16:26 | 只看該作者

直接覆蓋吧,這樣應(yīng)該可以
回復(fù)

使用道具 舉報

15#
ID:477934 發(fā)表于 2019-2-20 17:44 | 只看該作者
這也不是很難,像LCD12864就有自定義自符數(shù)組,就看你玩不玩的開

評分

參與人數(shù) 2黑幣 +31 收起 理由
sheng7533967 + 15
站著說話不腰疼 + 16

查看全部評分

回復(fù)

使用道具 舉報

16#
ID:125016 發(fā)表于 2019-2-22 11:02 | 只看該作者
鳳姐438 發(fā)表于 2019-2-19 13:17
可以使用如下思路《添加結(jié)束符》
1.接收到新數(shù)據(jù) 存入 緩存
2.接收到 結(jié)束符號 如‘!’  將緩存中的數(shù)據(jù) ...

最后還是采用自定義起始結(jié)束標(biāo)志了,memset清空,還是這樣最為方便一些,把你這個設(shè)為最佳了
回復(fù)

使用道具 舉報

17#
ID:367803 發(fā)表于 2019-3-5 23:43 | 只看該作者
看看,學(xué)習(xí)下;
回復(fù)

使用道具 舉報

18#
ID:93224 發(fā)表于 2019-5-19 18:17 | 只看該作者
添加結(jié)束符只是一種簡單的辦法,對于有的買的模塊是不定長度字符串,而且往往正常的字符串后面都沒有結(jié)束符號,這個時候就要借助于定時器來檢測一幀不定長的數(shù)據(jù),這個方法比較高效,具體的辦法,你可以加我的QQ 1014461948,我把原工程文件發(fā)給你
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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