找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于串口接收問題的一點(diǎn)小看法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-13 16:14 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式




串口,似乎是一個司空見慣的代名詞,但是我遇到了一個問題直到昨天才解決,那就是怎么完整的接收接受的數(shù)據(jù)而不丟失呢?串口都會用,都說很簡單,然而當(dāng)你去做的時候你才發(fā)現(xiàn)并不是想的那樣簡單那,當(dāng)然可能是我笨了點(diǎn),但是我解決了,怎怎么處理呢?現(xiàn)在看來很簡單了,用FIFO來解覺這個問題就簡單了,不用程序單單從邏輯上就是通的,實(shí)現(xiàn)起來也不難,怎么實(shí)現(xiàn)呢?很好搞,首先在內(nèi)存中開辟一塊緩存區(qū),當(dāng)然越大越好,只不過要根據(jù)內(nèi)存的容量來權(quán)衡,我的那個系統(tǒng)內(nèi)存很吃緊,因?yàn)楦采w了線程的堆棧,非常的耗費(fèi)RAM用量,開辟完了內(nèi)存,然后定義兩個指針,指向這個緩存,一個用來寫么一個用來讀,典型的FIFO,這下好了,你可以接受N個數(shù)據(jù)包,操作系統(tǒng)拿出一給線程監(jiān)聽串口數(shù)據(jù),一旦有數(shù)據(jù)包,那么兩個指針必定不相等,這樣用變量來記錄字節(jié)數(shù),用指針來訪問FIFO,就實(shí)現(xiàn)了,我測試過了,沒有問題,很穩(wěn)定,而且不會錯過一個字節(jié)哦!尤其適用于不定長數(shù)據(jù)的處理,因?yàn)槎ㄩL非常好高,只要匹配就可以,不定長卻沒那么簡單,就要用這個FIFO,當(dāng)然如果你沒由運(yùn)行操作系統(tǒng),那么你還是一樣的操作只是你要不斷地去查詢是否有數(shù)據(jù)到來,串口是以中斷 方式接受。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:114742 發(fā)表于 2016-5-5 18:58 | 只看該作者
大神為什么串口接收到的數(shù)據(jù)總是不完整的比如1234456總會出現(xiàn)少一些數(shù)據(jù)的情況比如會出現(xiàn)12346或者123等等的情況求幫助我的qq3263065307謝謝大神了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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