读取串口数据
讀取串口數據
2017年06月01日 12:10:39閱讀數:700 [cpp]?view plaincopyd今天移植一段代碼的時候看到一個挺有意思的寫法(如上),這是一段單片機讀取串口數據的函數,一開始看到的時候我很是懵比,要我以前寫的話或者看的大多數程序都是一個簡單的循環賦值到緩沖數組,索引達到數組的SIZE后再清零,更新賦值。然而這里缺與上一個什么掩碼,索引也沒有任何地方清零,這就讓我比較郁悶了。于是我找到這個Mask所謂的長度掩碼的初始化(如下)
[cpp]?view plaincopy我們可以看到這里它的初始化值為RX_BUFFER_SIZE-1,這是一個宏,pbuf這個緩沖數組設定的長度也是這個宏,設定的值是128。將它轉化為二進制就是10000000,Mask初始化為127,轉化為二進制01111111。這時候再回到貼的第一段代碼,當Wd_Indx加到128的時候,再&上01111111,就是0了。也就是說它清零的工作是直接在這里就完成了,接下來還是正常的更新賦值。看懂很簡單,但讓我自己這么寫是想不到的,這樣子寫出來的代碼就讓人感覺很簡潔利索,非常值得學習!
總結
- 上一篇: VS2017断点调试
- 下一篇: Windows下编程需要看哪些书