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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于C8051F340數(shù)據(jù)采集系統(tǒng)的設計

          基于C8051F340數(shù)據(jù)采集系統(tǒng)的設計

          作者: 時間:2010-12-22 來源:網(wǎng)絡 收藏




          4. 2 上位PC 機客戶端程序

          上位PC 機客戶端程序包括USB 驅(qū)動程序和用戶應用程序兩個部分。

          USB驅(qū)動程序是一個軟件組件, 封裝了應用程序存取硬件設備的功能函數(shù)。有些設備具有相同的屬性, 把它們歸為一組標準類別, 可以定義設備類規(guī)范作為該類設備的主機驅(qū)動框架。設備類驅(qū)動程序使用相似的函數(shù), 處理不同設備間的通信,這樣使設備類驅(qū)動程序的開發(fā)可以脫離設備制造商。本系統(tǒng)的驅(qū)動程序使用了Silicon Laboratories公司提供的USB Xpress開發(fā)包, 在V isua l C ++ 6. 0環(huán)境下開發(fā), 封裝成動態(tài)鏈接庫DLL 的形式供用戶應用程序調(diào)用。

          用戶應用程序采用C + + 編寫, 由客戶交互界面, USB數(shù)據(jù)通信, 數(shù)據(jù)保存顯示, 設備故障預警四個模塊組成。在USB 數(shù)據(jù)通信模塊設計中, 使用S ilicon Laboratories公司提供的S I_GetN umDevices,S I_GetProductString ( ), SI_Open( ), SI_C lose( ) , SI_Read( ) , SI_W rite( ) 等API函數(shù), 屏蔽了對底層硬件操作中USB 復雜的通信協(xié)議, 簡化了USB 通信開發(fā), 使得開發(fā)USB 通信的程序變得更容易 。

          程序流程圖如圖4所示


          圖4 客戶端應用程序流程圖。

          誘發(fā)設備出現(xiàn)故障的原因很多, 為保證設備正常運行需要檢測多方面的數(shù)據(jù), 本系統(tǒng)主要是檢測設備的溫度和壓力等的數(shù)據(jù), 檢測獲得的數(shù)據(jù)一旦超過某個界限, 表示設備可能出現(xiàn)故障。因此為了保證設備長時間的穩(wěn)定工作, 需要對獲取的實時數(shù)據(jù)與事先設好的臨界值進行對比, 一旦超過臨界值, 系統(tǒng)則發(fā)出警報提醒工作人員對設備進行故障排查, 起到了故障預警的效果。

          5 結(jié)語

          基于USB 數(shù)據(jù)采集系統(tǒng)可供選擇的方案很多, 而本設計從便攜式和高速傳輸考慮, 編寫了固件和客戶端數(shù)據(jù)傳輸協(xié)議, 使得該數(shù)據(jù)采集系統(tǒng)方便攜帶, 數(shù)據(jù)傳輸高速準確, 具有良好的人機交互界面, 并能對一定的設備故障進行預警提醒, 有較大的使用價值。而且單片機端口資源還沒有用完,還有開發(fā)和擴展的空間。

          本文引用地址:http://www.ex-cimer.com/article/162542.htm

          上一頁 1 2 3 下一頁

          關鍵詞: 收發(fā)器

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();