首頁>應用案例> PICO示波器二次開發

案例詳情

PICO示波器二次開發

  時間: 2019-08-12      1139    

PicoSDK (Software Development Kit)是Pico Technology的軟件開發包,許多PicoScope產品的用戶把PicoScope示波器當作一個數據采集設備來用,基於PicoScope的硬件開發自己的用戶軟件程序。不少人發現PicoSDK與傳統台式示波器的二次開發/遠程控製編程方式非常的不同,同時PicoSDK的響應速度和靈活性把傳統示波器遠遠地甩在後麵,這種差別來源於深層次的設計思路不同。本文深入解析兩者的設計原理,揭示PicoSDK性能優越之謎,並通過真實編程對比測試。

示波器的二次開發 

傳統台式示波器軟件是如何工作的?

傳統台式示波器除了核心的調理采集電路以外,還有一塊係統板,中低端的示波器采用基於ARM的嵌入式架構,運行嵌入式Linux操作係統或者基於X86的WinCE操作係統。用於控製示波器的軟件界麵全屏運行在這個嵌入式操作係統上,用戶看不到操作係統界麵本身。在一些高端示波器中,會設計一塊PC係統板,基於X86/X64處理器,運行WindowsXP/7/10等桌麵操作係統,示波器硬件板卡通過PCIE或者10G以太網連接到PC主板。示波器界麵軟件則是Windows中的一個應用程序,通過調用底層的硬件驅動控製示波器采集數據。用戶常常可以退出這個應用程序,返回Windows桌麵。

PicoScope6軟件是如何工作的?

作為PC示波器,每一款PicoScope產品都需要連接到計算機,並安裝一套PicoScope6軟件來控製它們工作。在PicoScope6軟件中,可以實現示波器的檔位,時基設置,可以觀察,測量,分析和保存波形。從使用功能上來說,PicoScope6與傳統的台式示波器相比,完全相同並且免費。甚至包括一些高端台式示波器才有的順序觸發,曆史波形模式,自定義數學運算,模板測試以及串行解碼等功能,也都完全免費。

PicoScope6軟件運行在Windows/Linux操作係統上,通過調用底層的USB驅動軟件來控製PicoScope硬件。它的係統API調用都通過PicoIPP.dll這個動態鏈接庫來實現。其實PicoScope的工作架構和傳統高端台式示波器十分類似。

用戶二次開發的程序不能直接訪問示波器硬件,而是繞了一個大圈子,最終訪問到示波器內置的軟件程序,再由示波器軟件代行控製硬件之事。用戶程序和示波器軟件之間就需要一套命令套接字來實現控製和數據傳遞,通行的做法是使用VISA通信標準傳輸SCPI命令集,或者基於ActiveX運行遠程VBS腳本語言等等。示波器軟件中運行著一個遠程命令服務器,專門接收和翻譯遠程控製命令,把它們翻譯成底層係統調用的API,得到結果後再翻譯回來傳輸給遠程用戶程序。

因此傳統的遠程控製或二次開發,需要在運行用戶程序的計算機上安裝VISA驅動庫或者專門的ActiveX庫,再基於這些庫編寫控製程序,所有與示波器的交互不外乎讀寫相應的命令字符。

如何使用PicoSDK?

安裝和配置PicoSDK的大略需要三步:

第一步,安裝PicoScope6軟件,其中的作為驅動支持。

第二步,安裝PicoSDK支持庫,其中包含了用於用戶程序開發的編程庫和必要的頭文件。

最後,參考PicoTechnology官方給出的例程代碼,並試運行測試程序。更詳細的安裝和配置指南請向PicoTechnology技術支持索取。

PicoSDK的用戶程序是基於PicoScope的動態鏈接庫直接進行API係統調用,動態鏈接庫底層直接連接到PicoScope的USB驅動程序。可以說是實現了程序流的最短路徑。

因此PicoSDK與傳統示波器的最大區別在於:一言以蔽之,沒有中間層賺差價。

這個差價一是造成了響應時間被拖長,二是限製了功能的靈活性。

詳細說來是這樣的:

PicoSDK的優點1:響應快,無延遲

上文已經提到傳統示波器的二次開發程序彎彎繞繞,過五關斬六將才到達示波器底層硬件,這中間會產生多次數據拷貝,數據傳輸,包括命令集的解析和數據結構重組。不難想象,費時彌久。而PicoSDK簡單直接,API調用直接穿入硬件核心,隻產生極少數幾次數據拷貝,並且沒有複雜的命令和數據格式需要解析轉換,原始波形拿來就用。下文向日葵直播app會舉一個例子,發現同樣是采集和獲取一段數據波形,PicoSDK比傳統示波器快一倍以上。

PicoSDK的優點2:支持連續數據采集

向日葵直播app知道示波器的采集方式是不定期突發式的,每一次從觸發到把數據從硬件上傳到軟件層,再經過軟件的處理和顯示以後才能開始下一次觸發采集。這個過程中的信號波形向日葵最新版下载安装是捕捉不到的,稱之為死區。而與之對應的數據采集卡,可以連續不斷的將信號波形捕獲並存儲到計算機硬盤上。傳統的示波器隻能基於觸發模式一段一段的工作,沒辦法連續采集波形,而PicoSDK支持一種stream(流模式),底層硬件可以源源不斷地把數據送入一個用戶程序提供的緩存區域,用戶程序也不斷地把緩存中的數據取出來,或是存儲到硬盤上,或是直接處理。在這種模式下,數據連續采集,永遠不會間斷或丟失,硬盤有多大就能采集多少數據。換句話說,PicoSDK既能像傳統示波器一樣基於觸發信號來突發地采集波形,也可以如數據采集卡一樣連續不間斷的進行流模式采集。翻遍各種傳統示波器的編程手冊,也尋覓不到數據流采集模式的字眼,這是因為在原理上它就無法實現。上麵已經提到,傳統示波器數據要穿越多個軟件中間層,因此延遲很大,實現不了快速數據存取。PicoSDK的底層硬件驅動和上層用戶程序可以訪問同一個內存緩存空間,因此可以快速存取數據。

PicoSDK的優點3:支持並發機製

上文已經提到,示波器采集和數據傳輸處理需要耗費一定的時間,在傳統示波器中,這個過程是阻塞的,或者需要靠不斷查詢狀態來確認完成了沒有,用戶程序在這個過程中隻能無謂地等待,做不了別的事,白白浪費了運算時間。而PicoSDK的采集和數據拷貝函數都支持回調,用戶程序可以在采集和數據拷貝的過程中處理上一組數據,完成計算或者繪圖等操作,過程中如果采集完成,會自動打斷當前進程,緩存新的數據,等待處理。

當采集數據量小時,PicoSDK的優勢不明顯或略慢於傳統示波器,隨著數據量的增加,PicoSDK能夠比傳統示波器快50%左右。且由於工作機製不同,PicoSDK在數據采集階段不是取用已緩存的舊數據,而是重新捕獲,因此必須受限於物理上的等待時間,同時PicoSDK在數據拷貝上隻花費極少的時間,在編程實踐中可以把等待捕獲的物理時間與後續的數據處理並行起來。而傳統示波器數據采集環節幾乎不耗費時間,這是因為它取用了緩存中的舊數據,而數據拷貝環節耗時極長,不利於並行編程運算,最終的總耗時也比PicoSDK慢一倍以上。數據拷貝時間的巨大差別,也導致了PicoSDK能夠給支持連續不斷的流模式采集,而傳統示波器絕無可能。

當然,PicoSDK也有一些缺點,例如無法直接調用示波器的測量,串行解碼等功能,需要援用第三方信號處理庫來實現。同時PicoScope6也支持一套自動化命令集,在不使用SDK的時候能夠直接調用PicoScope6已有的軟件功能實現自動化測試。


獲取免費試用資格