欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于51單片機串口接受緩存的問題 [打印本頁]

作者: 盧森    時間: 2019-2-19 11:15
標題: 關于51單片機串口接受緩存的問題
我想自定義一個字符緩存數組,把單片機從串口調試助手接收到的數據存起來。問題是我從串口助手發送第一組字符,單片機存起來后,我該怎么清空緩存數組來接收下一組字符。

作者: 鳳姐438    時間: 2019-2-19 11:15
可以使用如下思路《添加結束符》
1.接收到新數據 存入 緩存
2.接收到 結束符號 如‘!’  將緩存中的數據處理  處理完成后 通過for循環清空緩存
3.繼續等待 新的串口數據
作者: xuyaqi    時間: 2019-2-19 11:41
既然用了數組,數組就有下標,接收到的數據一直往數組存,下標一直增加,直到數組使用后數組下標再從“0”開始存。
作者: gd2051    時間: 2019-2-19 12:25
不用手動清空,當接收下一組字符時,原來的緩存數組會自動清空。
作者: struct00    時間: 2019-2-19 13:38
數組接收,數據一直往數組里存
作者: CZP1234    時間: 2019-2-19 13:43
直接覆蓋就行
作者: CZP1234    時間: 2019-2-19 13:44
直接覆蓋就行,反正數據你已經存起來了
作者: 盧森    時間: 2019-2-19 14:13
xuyaqi 發表于 2019-2-19 11:41
既然用了數組,數組就有下標,接收到的數據一直往數組存,下標一直增加,直到數組使用后數組下標再從“0” ...

不太行啊,如果不使用的話,豈不是一直往下存,都亂了
作者: 盧森    時間: 2019-2-19 14:14
gd2051 發表于 2019-2-19 12:25
不用手動清空,當接收下一組字符時,原來的緩存數組會自動清空。

不啊,主要就是怎么判斷是不是下一組數據,串口助手發的一組字符是沒有結束標志的
作者: yaoji123    時間: 2019-2-19 21:49
一般后面讀入數值會將前面的覆蓋的,也可以在存入后,將緩存數組清零。
作者: 笨笨兔    時間: 2019-2-20 13:38
你就不能加一個計數器,來計數你的數組里面的個數?
作者: xiongjb    時間: 2019-2-20 14:39
設置一個時間,如果兩個字符間隔時間長,直接就認為下一個字符串
作者: zjjhtony    時間: 2019-2-20 15:19
數組清零2個方法:
數組data[20];
方法1,
for(i=0;i<20;i++)
{
     data[i]=0       ; /清0;
}
方法2
使用memset函數
memset(data,0,20);
具體使用可以參看百度查找memset函數的使用說明。
作者: CrlikenNN    時間: 2019-2-20 16:26

直接覆蓋吧,這樣應該可以
作者: struct00    時間: 2019-2-20 17:44
這也不是很難,像LCD12864就有自定義自符數組,就看你玩不玩的開
作者: 盧森    時間: 2019-2-22 11:02
鳳姐438 發表于 2019-2-19 13:17
可以使用如下思路《添加結束符》
1.接收到新數據 存入 緩存
2.接收到 結束符號 如‘!’  將緩存中的數據 ...

最后還是采用自定義起始結束標志了,memset清空,還是這樣最為方便一些,把你這個設為最佳了
作者: xixi2006    時間: 2019-3-5 23:43
看看,學習下;
作者: lele5211314    時間: 2019-5-19 18:17
添加結束符只是一種簡單的辦法,對于有的買的模塊是不定長度字符串,而且往往正常的字符串后面都沒有結束符號,這個時候就要借助于定時器來檢測一幀不定長的數據,這個方法比較高效,具體的辦法,你可以加我的QQ 1014461948,我把原工程文件發給你




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1