• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    串口波特率與數(shù)據(jù)位參數(shù)自適應(yīng)算法的研究與實現(xiàn)

    2014-04-29 00:00:00李斌斌馮濤谷麗
    計算機光盤軟件與應(yīng)用 2014年3期

    摘 要:串行通信是在工業(yè)生產(chǎn)與控制自動化領(lǐng)域廣泛應(yīng)用的一種數(shù)據(jù)通信方式。它具備使用靈活方便,實現(xiàn)簡單,傳輸數(shù)據(jù)穩(wěn)定可靠,設(shè)備成本低廉等很多優(yōu)點。目前對串口參數(shù)自適應(yīng)算法的研究只停留在波特率參數(shù)的自適應(yīng)研究上。本文根據(jù)現(xiàn)有的幾種波特率自適應(yīng)算法原理,設(shè)計了一種能自動識別包括波特率、數(shù)據(jù)位參數(shù)的自適應(yīng)算法。通過多次收發(fā)規(guī)定的協(xié)議文件,在接收端進行特征字符的比對分析與歸納,通過判斷機制實現(xiàn)對發(fā)送端參數(shù)的自動識別。本文算法進過實驗證明其能正確有效,準(zhǔn)確穩(wěn)定的識別常用的串口參數(shù)配置。對于工業(yè)生產(chǎn)與控制自動化有著重要的作用。

    關(guān)鍵詞:串行通信;串口參數(shù);自動識別;特征字符

    中圖分類號:TP274.2

    1 串行通信原理

    本文算法應(yīng)用在串行通信異步傳輸下。串行異步通信協(xié)議中,數(shù)據(jù)是以字符為單位進行傳輸?shù)?,并且是從?shù)據(jù)的低位到高位依次發(fā)送。每次數(shù)據(jù)傳輸開始時,以起始位0作為字符接收的開始,以停止位1結(jié)束,字符與字符之間并沒有固定的接收時間間隔。每個字符開始都設(shè)置有一位起始位(低電平,邏輯值0),字符中的有效數(shù)據(jù)由5~8位數(shù)據(jù)位組成,在有效數(shù)據(jù)后一位為校驗位(也可以無校驗),最后停止位設(shè)置為一位或一位半或二位。這樣,從起始位到停止位就組成了一個完整的傳輸數(shù)據(jù)包。在數(shù)據(jù)包與數(shù)據(jù)包之間是不定長的空閑位。

    2 串口參數(shù)自適應(yīng)算法設(shè)計

    算法首先需要確定發(fā)送端的波特率設(shè)置,能正確的接收串口中的所有信息是算法后續(xù)判斷的前提條件。因此,本文借鑒波特率自適應(yīng)算法中的特征值匹配法設(shè)計獲取發(fā)送端的波特率大小。在已知通信波特率后,調(diào)整設(shè)置接收端除波特率外的參數(shù)為8N1,再次接收協(xié)議文件。根據(jù)理論分析和實驗?zāi)M得出在8N1狀態(tài)下接收所有其他發(fā)送參數(shù)時所有可能接收到的字符。比對本次接收的協(xié)議文件中的字符,判斷出此時發(fā)送串口參數(shù)的狀態(tài)。如果能完成所有參數(shù)的判斷,則算法結(jié)束。不能完成所有參數(shù)的判斷,則根據(jù)剩下的參數(shù)類型重新調(diào)整接收端參數(shù)設(shè)置。繼續(xù)調(diào)用相關(guān)的判斷機制對接收到的協(xié)議文件進行判斷和歸類。最終完成所有串口參數(shù)的識別。

    3 波特率自動匹配算法

    本文采用分段特征值匹配的方法識別串口波特率。由于接收端只接收一個字符,則這里只對0xF1進行分析。0xF1在串行通信中傳輸?shù)男蛄袨?100011111,其中第一位0為起始位,最后一位1為停止位。根據(jù)特征值匹配法,當(dāng)串行通信的發(fā)送端以A波特率發(fā)送字符信息0xF1時,當(dāng)接收端分別用2A、4A、8A波特率接收數(shù)據(jù)時,得到的序列如下表1所示。

    從表1中可以看出,先設(shè)置波特率為B38400開始接收串口數(shù)據(jù)。如根據(jù)接收數(shù)據(jù)不能識別波特率,則設(shè)置波特率為B4800再次接收串口數(shù)據(jù),如果還是不能識別,設(shè)置波特率為B600接收串口數(shù)據(jù)。這樣,最多通過進行三次收發(fā),就能進行串行通信收發(fā)端的波特率匹配。

    4 串口參數(shù)自適應(yīng)算法整體實現(xiàn)

    接收端第二個模塊是設(shè)置其他參數(shù)為8N1接收文件,根據(jù)接收的字符判斷串口發(fā)送端口的參數(shù)設(shè)置,如果不能判斷所有參數(shù),則設(shè)計判斷機制再次進行協(xié)議文件的收發(fā)并進行判斷。

    因為我們已經(jīng)規(guī)定了協(xié)議文件中的字符內(nèi)容,且已經(jīng)實現(xiàn)了波特率匹配,則發(fā)送端每設(shè)置一種串口參數(shù),對應(yīng)的發(fā)送序列都不一樣。此時,接收端設(shè)置8N1接收數(shù)據(jù),對應(yīng)接收的數(shù)據(jù)也會分為幾個類型。則下面討論發(fā)送端在所有可能的參數(shù)設(shè)置時,分析接收端設(shè)置為8N1可能接收到的數(shù)據(jù)。

    首先,當(dāng)發(fā)送端數(shù)據(jù)位為8時,則不論其校驗位和停止位如何設(shè)置,接收端都能正常接收數(shù)據(jù)為0xf1,0x31,0xf3。如果發(fā)送端數(shù)據(jù)位為7時,接收端接收的部分字符如下表2所示。

    5 算法測試與驗收

    本文算法運行環(huán)境為采用linux 3.2.0內(nèi)核的Ubuntu操作系統(tǒng)和gcc 4.6.3版本的編譯器,測試所用協(xié)議文件的十六進制內(nèi)容為:f131f3。由于算法在PC機上測試,本次測試通過兩個PL2303HX模塊實現(xiàn)的USB轉(zhuǎn)串口,實現(xiàn)了兩個簡易的串口,用杜邦線交叉連接兩個模塊的數(shù)據(jù)發(fā)送針和數(shù)據(jù)接收針。

    本文算法中需要驗收的串口參數(shù)組合的總數(shù)為N=9*3*3*2=162個。實驗過程中對所有串口參數(shù)的種類進行列舉,然后分別在發(fā)送端設(shè)置對應(yīng)參數(shù)進行發(fā)送。在實驗中,對每個參數(shù)進行10次匹配,如果其中9次都能通過,則說明對此參數(shù)能實現(xiàn)正確匹配。

    通過實驗,所有的串口參數(shù)都能正確檢驗,整體的算法錯誤率控制在1%以下,在對所有參數(shù)組合進行的1620次測試中,匹配錯誤的次數(shù)為8次。主要原因為在數(shù)據(jù)傳輸過程中使用參數(shù)8N1接收時出現(xiàn)的個別字符可能沒有包含在算法預(yù)期的特征字符中。此實驗說明本算法正確有效,能夠完成串行通信的串口參數(shù)自適應(yīng)功能。

    6 結(jié)束語

    本文研究了異步串行通信的實現(xiàn)原理,設(shè)計協(xié)議文件,編寫了發(fā)送端和接收端的收發(fā)程序,并在串口接收端加入了判斷機制。通過6次協(xié)議文件的收發(fā)過程,實現(xiàn)接收端對發(fā)送端口數(shù)據(jù)位參數(shù)的識別與匹配。在Linux系統(tǒng)下通過C語言和shell編程完成了串口參數(shù)的自適應(yīng)算法研究。通過實驗證明,本文設(shè)計的算法有效可行,能正確識別串行通信中常用的串口參數(shù)。

    參考文獻:

    [1]任貴勇,屈彥成,王常虹.串行通信波特率的一種自動檢測方法[J].計算機自動測量與控制,2000(01).

    [2]劉燕,陳興文.串行通信波特率自動檢測方法的實現(xiàn)[J].大連民族學(xué)院學(xué)報,2008(01).

    [3]Eddy Carroll.AUTO BAUD RATE DETECTION.1989,4.

    [4]王紅祥,劉道文.基于未知上位機串行通信波特率檢測[J].現(xiàn)代電子技術(shù),2008(23).

    [5]李允俊.在Linux下串行接口的C語言編程方法[J].長春理工大學(xué)學(xué)報,2005(01).

    作者單位:杭州電子科技大學(xué)電子信息學(xué)院,杭州 310018

    南木林县| 南漳县| 盐津县| SHOW| 门源| 咸阳市| 新绛县| 连云港市| 凉山| 皮山县| 三江| 托克逊县| 香港| 铁力市| 宣城市| 太湖县| 建湖县| 崇明县| 武安市| 文化| 上思县| 平阴县| 昌邑市| 通河县| 出国| 芦山县| 如皋市| 白河县| 武穴市| 清徐县| 得荣县| 连江县| 永宁县| 武宁县| 金塔县| 方正县| 绍兴县| 泸州市| 页游| 探索| 七台河市|