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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于Python的虛擬儀器技術(shù)研究及實現(xiàn)

          基于Python的虛擬儀器技術(shù)研究及實現(xiàn)

          作者: 時間:2012-10-24 來源:網(wǎng)絡(luò) 收藏

          先用QtDesigner生成整體GUI框架,保存為Form.ui文件。Windows下運行cmd,在C根目錄調(diào)用pyuic4命令:pyuic4 Form.ui>Form.py,將PYQT生成的UI文件轉(zhuǎn)成py文件,然后自定義start.py直接調(diào)用生成的py文件,運行start.py就可以顯示創(chuàng)建的GUI界面。然后對GUI的每一個控件編輯其對應(yīng)的信號與槽,比如在文中實例中的“關(guān)閉”按鈕,調(diào)用connect()方法綁定點擊按鈕的“clicked()”信號與槽函數(shù)close()”,這樣當(dāng)我們鼠標(biāo)點擊“關(guān)閉”按鈕的時候程序就會退出。與此類似,綁定其余按鈕的功能。這里還可以調(diào)用:
          PyQt4.QtCore.pyqtSignal(types[,name])
          創(chuàng)建一個或多個重載綁定信號作為類屬性。其中type確定信號的C++識別標(biāo)志,類型可以是類型或C++類型名稱的字符串,也可以是類型的一組列表,在列表情況下,每一項定義了不同重載方法,第一項為默認(rèn)值。Name是信號的名稱,如果省略則使用屬性的類的名稱,這只能作為一個關(guān)鍵字參數(shù)。
          槽函數(shù)(slots)的設(shè)置是整個GUI的核心,基于面向?qū)ο蟮膬?yōu)勢,我們可以調(diào)用各種父類,父類方法,自定義類,自定義方法等等作為槽函數(shù)與相應(yīng)的信號相綁定,實現(xiàn)程序的重復(fù)利用,并且可以在后期較容易的擴展程序的功能,通過這種代碼復(fù)用可以大大縮短開發(fā)周期。
          1.3 NumPy的數(shù)據(jù)處理
          一般都會帶有顯示屏幕,有的儀表顯示數(shù)字,有的儀表則顯示圖形。通過軟件的形式顯示測量結(jié)果,一般需要對采集數(shù)據(jù)進行大量的數(shù)學(xué)運算,比如信號調(diào)幅、調(diào)頻、濾波、數(shù)字信號處理等等,數(shù)據(jù)處理是不可或缺的一部分,而且數(shù)據(jù)處理一般要求高效準(zhǔn)確。NumPy相當(dāng)于Matlab的版本,繼承了Matlab的強大數(shù)據(jù)處理能力。NumPy提供兩種基本的對象ndarray (N-dimensional arrayobie ct)和ufunc(universal function object)。ndarray是存儲單一數(shù)據(jù)類型的多維數(shù)組,而ufunc則是能夠?qū)?shù)組進行處理的函數(shù)。NumPy的核心是ndarray對象,它是一個封裝好的,只能存儲同個類型數(shù)據(jù)的多維數(shù)組。NumPy里,數(shù)組元素對數(shù)組元素的操作是用C寫的,并預(yù)先編譯好了以提高操作速度。NumPy不僅能保證足夠快速的計算處理,還繼承了Python語言代碼簡潔的特性。比如需要對一個給定的多維數(shù)組x進行FFT變換,只需調(diào)用np.fft.fft(x)就可以得到變換的結(jié)果。

          2 方案設(shè)計與驗證
          基于上述的討論,設(shè)計完成了一個虛擬頻譜分析儀,該儀器的工作原理是通過設(shè)置儀器相關(guān)的參數(shù)對采集信號進行實時顯示,而后通過濾波加窗等處理進行頻域分析,得到幅值譜、相位譜、自相關(guān)函數(shù)、相干函數(shù)等的過程。儀器系統(tǒng)的處理流程如圖2所示。

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

          c.jpg


          在儀器的波形顯示部分,這里調(diào)用了Tabwidget控件,通過控制Tabchange()信號實現(xiàn)時域波形和頻域波形的顯示及切換。Tabwidget本身無法充當(dāng)畫布功能,也就是說不能直接在上面顯示波形。因此,在Tabwidget的2個tab標(biāo)簽中分別嵌入一個QwtPlot控件,它可以提供一個二維的坐標(biāo)圖,讓我們在上面繪制曲線、刻度值等我們想要表達的圖形數(shù)據(jù)信息。調(diào)用setAxisTitlle(xBottom,String)方法和setAxisTitlle(vLeft,Str4ng)方法可以改變坐標(biāo)軸橫坐標(biāo)及縱坐標(biāo)的名稱。同時還需要創(chuàng)建一個QwtPlotCurve用來控制QwtPlot上的曲線類型,它可以設(shè)定線的樣式(實線或虛線)、線寬、顏色等。取得需要顯示的波形數(shù)據(jù)后,通過setData()方法,先將數(shù)據(jù)給予QwtPlotCurve,然后由QwtPlot Curve通過調(diào)用attach()方法將波形繪制到QwtPlot上,最后通過QwtPlot類的repoh()方法將波形顯示在GUI界面的Tabwidget控件中。
          輸入信號后,調(diào)用combobox控件的GetWindowText()方法取得采樣頻率,采樣點數(shù)等參數(shù)信息,通過綁定“開始采樣”的“clicked()”信號觸發(fā)相關(guān)槽函數(shù)將波形顯示在窗口上。這里放置了3個RadioButton,并把他們嵌入到Gmup Box里作為一個整體,通過他們的Checked屬性,獲取相應(yīng)窗函數(shù)信息對信號進行加窗處理,分析。
          儀器界面的效果圖如圖3所示。

          a.JPG



          3 結(jié)束語
          Python是一門年輕、開源、充滿活力的腳本編程語言。文中以Python為核心,結(jié)合PYQT把面向?qū)ο笏枷霊?yīng)用于虛擬儀器開發(fā),使用戶可以根據(jù)自身需求方便地修改程序以增減儀器的系統(tǒng)功能或規(guī)模,而且可以充分實現(xiàn)程序的重復(fù)利用。用Python開發(fā)虛擬儀器層次清晰,周期短,代碼易修改。在一定程度上比LabvIEW具有更大的優(yōu)勢,具有廣泛的研究前景。

          c++相關(guān)文章:c++教程



          上一頁 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); })();