<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于樹莓派的多串口多總線服務(wù)器設(shè)計

          基于樹莓派的多串口多總線服務(wù)器設(shè)計

          作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          本串口聯(lián)網(wǎng)服務(wù)器選擇自帶的Python作為開發(fā)語言,采用小巧而靈活的web.py開發(fā)框架提供HTTP服務(wù),其輕量級滿足采集系統(tǒng)對數(shù)據(jù)傳輸模塊的要求,可以提高系統(tǒng)的使用效率,WEB服務(wù)器設(shè)計流程如圖3所示。

          基于樹莓派的多串口多總線服務(wù)器設(shè)計

          設(shè)備上電或系統(tǒng)重啟后,WEB服務(wù)自動啟動,并初始化WEB服務(wù)器所需顯示和配置的信息,用戶通過瀏覽器訪問系統(tǒng)指定端口進行登錄認證即可訪問參數(shù)配置頁面。其中,設(shè)備信息和網(wǎng)絡(luò)信息通過系統(tǒng)文件管理器進行查看和配置,用戶信息、串口參數(shù)和工作模式信息通過數(shù)據(jù)庫進行讀寫,幫助信息則通過FTP服務(wù)器進行說明手冊、公司服務(wù)信息等文檔下載。

          3.2 WEB配置頁面設(shè)計

          WEB配置頁面即WEB服務(wù)器的展示層,如圖4所示,掃描出的串口數(shù)表明該帶有16個串口,每個串口配置相互獨立。

          基于樹莓派的多串口多總線服務(wù)器設(shè)計

          由于配置程序設(shè)計采取工作模式配置與串口參數(shù)配置相關(guān)聯(lián),如果選用前3個串口,則工作模式配置中只顯示此3個串口的工作模式配置界面,如圖5所示。

          基于樹莓派的多串口多總線服務(wù)器設(shè)計

          以上配置方式可方便實現(xiàn)批量配置,配置完成后可生成配置信息查看界面,如圖6所示,該界面還可進行選中串口的通信參數(shù)、工作模式的編輯和刪除。

          基于樹莓派的多串口多總線服務(wù)器設(shè)計

          3.3 串口聯(lián)網(wǎng)通信程序設(shè)計

          WEB服務(wù)器完成配置工作后,即可啟動通信程序進行數(shù)據(jù)通信工作,具體實現(xiàn)流程如圖7所示。此程序在設(shè)備上電或系統(tǒng)重啟后自動啟動,讀取用戶配置的串口通信和工作模式參數(shù)后,進入通信程序無限循環(huán),圖中進程數(shù)即現(xiàn)場應(yīng)用所配置的串口總數(shù)。其中N為串口數(shù),M(M≤W)為N個串口中使用的串口數(shù);n為各自編號,I為進程編號;S為所配會話數(shù),s為線程編號。

          基于樹莓派的多串口多總線服務(wù)器設(shè)計

          3種工作模式中,TCP服務(wù)器和TCP客戶端同屬TCP協(xié)議傳輸程序,其數(shù)據(jù)幀收發(fā)處理過程都采用同一種思想,下面介紹TCP、UDP協(xié)議傳輸程序和數(shù)據(jù)幀轉(zhuǎn)發(fā)程序的設(shè)計:

          3.3.1 TOP協(xié)議傳輸程序設(shè)計

          TCP協(xié)議傳輸程序涉及到服務(wù)器端和客戶端的設(shè)計。

          服務(wù)器端程序設(shè)計:

          ①建立一個socket,選擇類型INET及TCP連接方式;

          ②讀取配置端口進行綁定監(jiān)聽,等待客戶端主動連接;

          ③設(shè)置監(jiān)聽隊列大小;

          ④進入一個無限循環(huán),使用accept()等待客戶連接,返回的新連接對應(yīng)于客戶端IP,建立通信信道;

          ⑤進入無限子循環(huán),通過sendall()及recv()進行讀寫操作。

          客戶端程序設(shè)計:

          ①建立一個socket,選擇類型及連接方式同服務(wù)器端;

          ②讀取配置所配置遠程服務(wù)器IP及端口;

          ③進入無限循環(huán),使用connect()連接遠程服務(wù)器,若連不上,達到所配置超時間隔后再次重連;

          ④連接成功后進入無限子循環(huán),通過sendall()及recv()進行讀寫操作。

          3.3.2 UDP協(xié)議傳輸程序設(shè)計

          UDP傳輸稱為無連接傳輸,不存在TCP中的三次握手和錯誤重傳機制,其傳輸程序需同時讀取所配置的本地IP和端口、遠程IP和端口,建立數(shù)據(jù)報形式的socket后可同時作為發(fā)送端和接收端。作為發(fā)送端時,sendto()發(fā)送地址為遠程接收端IP和端口,作為接收端時公開本地IP和端口,recvfrom()等待遠程發(fā)送端的數(shù)據(jù)到來,可以接收任何地址發(fā)送過來的數(shù)據(jù)包。

          3.3.3 數(shù)據(jù)幀轉(zhuǎn)發(fā)程序設(shè)計

          串口服務(wù)器功能模塊實現(xiàn)了串行鏈路數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)轉(zhuǎn)換的功能:一方面,接收來自串行鏈路的數(shù)據(jù)幀,并將其轉(zhuǎn)化為以太網(wǎng)鏈路數(shù)據(jù)幀后發(fā)出;另一方面,接收來自以太網(wǎng)鏈路的數(shù)據(jù)幀,并將其轉(zhuǎn)化為串行鏈路數(shù)據(jù)幀后發(fā)出。以上兩個通信過程并行執(zhí)行,在程序設(shè)計中采取多線程實現(xiàn)方式。

          (1)網(wǎng)絡(luò)數(shù)據(jù)的接收

          每種通信模式下,網(wǎng)絡(luò)數(shù)據(jù)的接收都在指定的回調(diào)函數(shù)中實現(xiàn),TCP通信接收函數(shù)為recv(),而UDP通信中為recvfrom()。當數(shù)據(jù)幀長度積累到指定的接收緩沖區(qū)大小或達到串口超時還不足指定數(shù)據(jù)幀長度,立即調(diào)用實例化后的串口發(fā)送函數(shù)write(),即可將緩沖區(qū)中接收到的數(shù)據(jù)通過串口轉(zhuǎn)發(fā)。

          (2)網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送

          接收串口數(shù)據(jù)時調(diào)用串口接收函數(shù)read(),當數(shù)據(jù)幀長度達到串口接收緩沖區(qū)大小或串口超時,立即調(diào)用網(wǎng)絡(luò)發(fā)送函數(shù)把該緩沖區(qū)中的數(shù)據(jù)幀通過網(wǎng)口轉(zhuǎn)發(fā),其中TCP通信發(fā)送函數(shù)為sendall(),而UDP通信為sendto()。

          結(jié)語

          經(jīng)全面測試合格后,目前本串口服務(wù)器已經(jīng)成功應(yīng)用到工業(yè)現(xiàn)場,由此可見,本串口服務(wù)器支持高頻轉(zhuǎn)發(fā)、大數(shù)據(jù)幀實時轉(zhuǎn)發(fā),可長期、全天候穩(wěn)定運行。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();