《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于LabVIEW的USB實時數(shù)據(jù)采集處理系統(tǒng)的實現(xiàn)

基于LabVIEW的USB實時數(shù)據(jù)采集處理系統(tǒng)的實現(xiàn)

2008-08-29
作者:尹邦政 魏亞東 邢 達 何

?? ?摘? 要: 介紹了以圖形化編程語言LabVIEW為應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序開發(fā)平臺的USB數(shù)據(jù)采集" title="數(shù)據(jù)采集">數(shù)據(jù)采集處理系統(tǒng)" title="處理系統(tǒng)">處理系統(tǒng)的設(shè)計,并給出了LabVIEW對外部動態(tài)鏈接庫的調(diào)用方法以及USB驅(qū)動程序的設(shè)計方法。

??? 關(guān)鍵詞: USB? LabVIEW? 數(shù)據(jù)采集

?

??? 通用串行總線USB(Universal Serial Bus)作為一種新型的數(shù)據(jù)通信接口在越來越廣闊的領(lǐng)域得到應(yīng)用。而基于USB接口的數(shù)據(jù)采集卡" title="采集卡">采集卡與傳統(tǒng)的PCI卡及ISA卡相比具有即插即用、熱插拔、傳輸速度快、通用性強、易擴展和性價比高等優(yōu)點。

??? USB的應(yīng)用程序一般用Visual C++編寫,較為復雜,花費的時間較長。由美國國家儀器(NI)公司開發(fā)的LabVIEW語言是一種基于圖形程序的編程語言,內(nèi)含豐富的數(shù)據(jù)采集、數(shù)字信號分析以及控制等子程序,用戶利用創(chuàng)建和調(diào)用子程序的方法編寫程序,使創(chuàng)建的程序模塊化,易于調(diào)試、理解和維護,而且程序編制簡單、直觀。因此它特別適用于數(shù)據(jù)采集處理系統(tǒng)。利用它編制USB應(yīng)用程序,把LabVIEW 語言和USB總線緊密結(jié)合起來的數(shù)據(jù)采集系統(tǒng)將集成兩者的優(yōu)點。USB總線可以實現(xiàn)對外部數(shù)據(jù)實時高速的采集,把采集的數(shù)據(jù)傳送到主機后再通過LabVIEW的功能模塊順利實現(xiàn)數(shù)據(jù)的顯示、分析和存儲。

1?USB及其在數(shù)據(jù)采集設(shè)備中的應(yīng)用

  USB自1995年在Comdex上亮相以來,已廣泛地為各PC廠家所支持。現(xiàn)在生產(chǎn)的PC幾乎都配備了USB接口,Microsoft的Windows 98、NT以及Mac OS、Linux等流行操作系統(tǒng)都增加了對USB的支持。USB具有速度快、設(shè)備安裝和配置容易、易于擴展、能夠采用總線供電、使用靈活等主要優(yōu)點,應(yīng)用越來越廣泛。

  一個實用的USB數(shù)據(jù)采集系統(tǒng)硬件一般包括微控制器、USB通信接口以及根據(jù)系統(tǒng)需要添加的A/D轉(zhuǎn)換器和EPROM、SRAM等。為了擴展其用途,還可以加上多路模擬開關(guān)和數(shù)字I/O端口。系統(tǒng)的A/D、數(shù)字I/O的設(shè)計可沿用傳統(tǒng)的設(shè)計方法,根據(jù)采集的精度、速率、通道數(shù)等諸元素選擇合適的芯片,設(shè)計時應(yīng)充分注意抗干擾性,尤其對A/D采集更是如此。在微控制器和USB接口的選擇上有兩種方式:一種是采用普通單片機加上專用的USB通信芯片;另一種是采用具備USB通信功能的單片機。USB的另一大優(yōu)點是可以總線供電,在數(shù)據(jù)采集設(shè)備中耗電量通常不大,因此可以設(shè)計成總線供電。

  一個USB設(shè)備的軟件一般包括主機的驅(qū)動程序、應(yīng)用程序和寫進ROM里面的Firmware。Windows98提供了多種USB設(shè)備的驅(qū)動程序,但還沒有一種專門針對數(shù)據(jù)采集系統(tǒng),所以必須針對特定的設(shè)備編制驅(qū)動程序。盡管系統(tǒng)已經(jīng)提供了很多標準接口函數(shù),但編制驅(qū)動程序仍然是USB開發(fā)中最困難的一件事。通常采用Windows DDK實現(xiàn),但現(xiàn)在有許多第三方軟件廠商提供了各種各樣的生成工具,如Compuware的Driver Works、Blue Waters的Driver Wizard等軟件能夠輕易地生成高質(zhì)量的USB驅(qū)動程序。單片機程序的編制也同樣困難,而且沒有任何一家廠商提供了自動生成的工具。編制一個穩(wěn)定、完善的單片機程序直接關(guān)系到設(shè)備性能,必須給予充分的重視。以上兩個程序是開發(fā)者所關(guān)心的,而用戶卻不大關(guān)心。用戶關(guān)心的是如何高效地通過鼠標操作設(shè)備,如何處理和分析采集進來的大量數(shù)據(jù)。因此還必須有高質(zhì)量的用戶軟件。用戶軟件必須有友好的界面、強大的數(shù)據(jù)分析和處理能力以及提供給用戶進行再開發(fā)的接口。

2 LabVIEW及其外部動態(tài)鏈接庫的調(diào)用

  LabVIEW 是美國國家儀器(NI)公司開發(fā)的一種基于圖形程序的虛擬儀表編程語言,其在測試與測量、數(shù)據(jù)采集、儀器控制、數(shù)字信號分析、工廠自動化等領(lǐng)域獲得了廣泛的應(yīng)用。LabVIEW程序稱為虛擬儀器程序(簡稱VI),主要包括兩部分:前面板(即人機界面)和方框圖程序。前面板用于模擬真實儀器的面板操作,可設(shè)置輸入數(shù)值、觀察輸出值以及實現(xiàn)圖表、文本等顯示。框圖程序應(yīng)用圖形編程語言編寫,相當于傳統(tǒng)程序的源代碼。其用于傳送前面板輸入的命令參數(shù)到儀器以執(zhí)行相應(yīng)的操作。LabVIEW的強大功能在于層次化結(jié)構(gòu),用戶可以把創(chuàng)建的VI程序當作子程序調(diào)用,以創(chuàng)建更復雜的程序,而且,調(diào)用階數(shù)可以是任意的。LabVIEW這種創(chuàng)建和調(diào)用子程序的方法使創(chuàng)建的程序模塊化,易于調(diào)試、理解和維護。LabVIEW編程方法與傳統(tǒng)的程序設(shè)計方法不同,它擁有流程圖程序設(shè)計語言的特點,擺脫了傳統(tǒng)程序語言線形結(jié)構(gòu)的束縛。LabVIEW的執(zhí)行順序依方塊圖間數(shù)據(jù)的流向決定,而不像一般通用的編程語言逐行執(zhí)行。在編寫方塊圖程序時,只需從功能模塊中選用不同的函數(shù)圖標,然后再以線條相互連接,即可實現(xiàn)數(shù)據(jù)的傳輸。

  LabVIEW雖有接口卡的驅(qū)動和管理程序,但主要是針對NI公司自己生產(chǎn)的卡。對于普通的I/O卡,還不能直接被LabVIEW所應(yīng)用,必須采取其他方法。其中可以用LabVIEW的PortIn和PortOut功能,但此法應(yīng)用簡單,無法實現(xiàn)較復雜的接口功能。而采用動態(tài)鏈接庫,可以根據(jù)具體需要編寫適當?shù)某绦?靈活利用LabVIEW的各項功能。用戶可以自己編寫DLLs實現(xiàn)LabVIEW與硬件的鏈接。用VC++6.0編制動態(tài)鏈接庫,首先生成DLL框架,AppWizard將自動生成項目文件,但不產(chǎn)生任何代碼,所有代碼均需用戶自己鍵入。DLL需要的文件有:①h函數(shù)聲明文件;②c源文件;③def定義文件。h文件的作用是聲明DLL要實現(xiàn)的函數(shù)原型,供DLL編譯使用,同時還提供應(yīng)用程序編譯使用。c文件是實現(xiàn)具體文件的源文件,它有一個入口點函數(shù),在DLL被初次調(diào)用時運行,做一些初始化工作。一般情況下,用戶無須做什么初始化工作,只需保留入口點函數(shù)框架即可。def文件是DLL項目中比較特殊的文件,它用來定義該DLL項目將輸出哪些函數(shù),只有該文件列出的函數(shù)才能被應(yīng)用函數(shù)調(diào)用。要輸出的函數(shù)名列在該文件EXPORTS關(guān)鍵字下面。

3 基于AN2131Q的單光子采集系統(tǒng)[6]

  該采集系統(tǒng)由筆者自行開發(fā)并用于單光子計數(shù)種子活性快速檢測儀中。它主要由將光子信號轉(zhuǎn)為電信號的光電倍增管(PMT)及其輔助電路和基于AN2131Q的USB 采集卡組成。PMT及其前置放大器、放大器、甄別器等輔助電路能將微弱的光子信號轉(zhuǎn)換為15ns的標準TTL脈沖信號,脈沖信號經(jīng)過分頻處理后再被USB采集,USB將采集的結(jié)果實時地傳給主機處理。

3.1 USB采集卡的硬件組成

  該采集卡由微控制器、USB通信接口、主機以及數(shù)字I/O端口組成,如圖1所示。

?

?

  筆者設(shè)計了一種同步傳輸方式" title="傳輸方式">傳輸方式的單片方案,應(yīng)用了內(nèi)置微處理器的USB芯片——EZ-USB AN2131Q。它是Cypress公司的一種內(nèi)嵌微控制器的80腳USB芯片,包含三個8位多功能口,8位數(shù)據(jù)端口,16位地址端口,二個USB數(shù)據(jù)端口,二個可定義為16位的定時/計數(shù)器和其他輸入輸出端口。其采用一種基于內(nèi)部RAM的解決方案,允許客戶隨時不斷地設(shè)置和升級,不受端口數(shù)、緩沖大小和傳輸速度及傳輸方式的限制。片內(nèi)嵌有一個增強型的8051微控制器,其4個時鐘的循環(huán)周期使它比標準8051的速度快3倍。采用同步傳輸方式將單片機的計數(shù)值實時傳送給主機,而主機對計數(shù)器的控制信號則采用塊傳輸方式傳送。EZ-USB是Cypress公司推出的USB開發(fā)系統(tǒng),它為USB外設(shè)提供了一種很好的集成化解決方案。EZ-USB在其內(nèi)核已做了大量繁瑣的、重復性的工作,這樣就簡化了開發(fā)代碼,進而縮短了開發(fā)周期。此外,開發(fā)商還提供了配套的開發(fā)軟件 (包括編譯軟件uVision 51、調(diào)試軟件dScope 51、控制軟件EZ-USB Controll Panel)以及驅(qū)動程序GPD(General Purpose Driver)接口,以便于用戶進行開發(fā)使用。

3.2 USB采集卡的軟件構(gòu)成

  在USB的Firmware中,采取同步傳輸(Isochronous Transactions)和塊傳輸(Bulk Transactions)兩種傳輸方式。同步方式用來實時傳送采集的數(shù)據(jù),塊傳輸主要用來傳輸主機的命令信號和USB的狀態(tài)信息。塊傳輸中利用端點(Endpoint)2。兩種傳輸方式的核心中斷程序如下:

  void ISR_Sutok(void) interrupt 0???????? //塊傳輸方式

  {

???????? //initialize the couters in the 8051

?? ?   TMOD = 0x05;???????????

?? ?   TCON = 0x10;??????????

?? ?   TH0 = 0;

?? ?   TL0 = 0;

?? ?   thb=0;

?? ?   EZUSB_IRQ_CLEAR();

?? ?   USBIRQ = bmSUTOK;?????      //Clear SUTOK IRQ

  }

????void ISR_Sof(void) interrupt 0???   //同步傳輸方式

? {

    if(TCON&0x20){? //Deal with the counter overflow

????????????? TH0 = 0;

???????? ???? TL0 = 0;

???????? ???? THB++;

???????? ???? TCON&=0xdf;}

????????IN8DATA = TH0; ???       //3 Bytes counter result

????????IN8DATA = TL0;

????????IN8DATA= THB;

????????EZUSB_IRQ_CLEAR();

????????USBIRQ = bmSOF;??????????     //Clear SOF IRQ

  }

  在LabVIEW應(yīng)用程序中設(shè)計了一Usb.dll文件作為LabVIEW與USB的驅(qū)動程序。由于EZ-USB開發(fā)系統(tǒng)中已經(jīng)提供了底層驅(qū)動程序(GPD)接口函數(shù),用戶只需調(diào)用這些函數(shù)即可與USB設(shè)備連接。因此在DLL的編制中只需調(diào)用它提供的函數(shù),大大節(jié)約了開發(fā)時間,提高了開發(fā)速度。創(chuàng)建的Usb.dll文件中包含了如下五個輸出函數(shù),功能說明如表1所示。

?

  其定義如下:

  LPSTR __declspec (dllexport) __stdcall Cntrol(int input);

  int __declspec (dllexport) __stdcall ReadResult(void);

  int __declspec (dllexport) __stdcall StartIsoStream(void);

  int __declspec (dllexport) __stdcall StartThread(void);

  int __declspec (dllexport) __stdcall StopThread(void);

  開啟設(shè)備和獲取采集數(shù)據(jù)的過程如圖2所示。它的主要功能有:開啟或關(guān)閉USB設(shè)備、檢測USB設(shè)備、設(shè)置USB數(shù)據(jù)傳輸管道(pipe)和端點(endpoint)、實時從USB接口采集數(shù)據(jù)、顯示并分析數(shù)據(jù)。

?

?

  程序在VC++6.0環(huán)境下編譯成功后自動生成DLL文件。調(diào)用時,在框圖程序窗口打開FunctionPalette(功能模板),在Advanced模塊包含有對庫函數(shù)的調(diào)用模塊,即CallLibraryFunction。把編寫好的DLLs放在當前目錄或特定目錄下。在功能模板放置函數(shù)調(diào)用模塊,然后選Configure,出現(xiàn)對話框。根據(jù)LabVIEW與DLLs的參數(shù)對應(yīng)關(guān)系填寫好DLL文件的路徑(DLL文件不在當前目錄下)、被調(diào)用函數(shù)名、參數(shù)的類型及返回類型。需要注意的是,當調(diào)用多個函數(shù)時要分別填寫參數(shù)的個數(shù)和對應(yīng)的類型,而且在調(diào)用過程中應(yīng)保持數(shù)據(jù)位的一致。填好選擇OK按鈕后,LabVIEW將自動生成各參數(shù)的入口及出口狀態(tài)。這樣就實現(xiàn)了LabVIEW與DLLs的調(diào)用。

  通過上述方法成功實現(xiàn)了LabVIEW與USB驅(qū)動程序的數(shù)據(jù)交換,從而實現(xiàn)了以LabVIEW為應(yīng)用程序的USB實時采集處理系統(tǒng)。將USB采集卡增加A/D或D/A并對電路作相應(yīng)的改動后,即可實現(xiàn)傳統(tǒng)采集卡的所有功能。很明顯,這種集成了USB接口優(yōu)點和LabVIEW圖形化編程語言的采集處理系統(tǒng)與傳統(tǒng)采集卡相比具有不可比擬的優(yōu)勢,不僅性價比高、通用性強、易于開發(fā)、數(shù)據(jù)處理簡單,且可以大大縮短開發(fā)時間。

?

參考文獻

1 National Instruments. LabVIEW User Manual. U.S.A,1996

2 National Instruments Corporation. Function and VI Reference Manual,1998

3 Universal Serial Bus Specification, Revision 1.1. 1998

4 Mindshare, Inc. Universal Serial Bus System Architecture,?1997

5 Cypress semiconductor Corporation. The EZ-USB Integrated? Circuit ,Technical Reference Manual, 1999

6 魏亞東,邢 達. USB數(shù)據(jù)采集在單光子計數(shù)種子活性快速檢測儀中的應(yīng)用.光電子激光,2002;13(10):1077~1080

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲天堂成人| 校园春色国产精品| 欧美日韩调教| 一本色道久久88综合日韩精品| 亚洲午夜极品| 亚洲经典一区| 欧美肥婆在线| 久久久999精品免费| 欧美亚洲专区| 一本久久综合亚洲鲁鲁五月天| 欧美美女bb生活片| 亚洲一级二级在线| 99精品国产99久久久久久福利| 欧美金8天国| 久久久久久97三级| 久久成人免费视频| 亚洲国产1区| 欧美片在线观看| 久久影院午夜论| 久久久99精品免费观看不卡| 欧美亚洲视频| 亚洲在线视频网站| 在线亚洲免费| 亚洲欧洲av一区二区三区久久| 亚洲精选在线观看| 亚洲日本成人网| 亚洲国产高清aⅴ视频| 在线观看成人av电影| 激情久久综合| 激情五月婷婷综合| 韩日精品视频| 国产一区香蕉久久| 国产一区二区三区久久悠悠色av| 国产欧美日韩一区二区三区在线观看| 欧美午夜片欧美片在线观看| 欧美日韩中文字幕日韩欧美| 欧美日韩久久精品| 欧美亚韩一区| 国产精品成人观看视频免费| 国产精品久久久久久影视 | 久久国产精品99国产| 欧美一区二区福利在线| 欧美一区二区三区久久精品| 亚洲第一区在线| 国产精品久久久久久久久久尿 | 欧美国产精品久久| 欧美精品一区在线观看| 欧美另类人妖| 欧美色中文字幕| 国产精品久久久久9999| 欧美日韩一区二区免费视频| 国产精品美女午夜av| 国产精品一区二区三区乱码| 久久综合网hezyo| 美国十次了思思久久精品导航| 美女任你摸久久| 欧美精品大片| 国产精品久久久久久久久久久久| 国产精品自在线| 国产一区二区三区视频在线观看| 激情丁香综合| 91久久国产综合久久| 一本色道综合亚洲| 性高湖久久久久久久久| 亚洲国产一区视频| 艳妇臀荡乳欲伦亚洲一区| 亚洲免费影视第一页| 久久精品一二三区| 欧美电影免费| 欧美婷婷久久| 国产在线成人| 欧美色区777第一页| 国产精品日韩欧美一区二区三区 | 亚洲三级网站| 亚洲免费在线| 亚洲欧洲精品一区二区精品久久久 | 亚洲一区二区三区在线| 欧美综合激情网| 9色精品在线| 久久国产精品亚洲77777| 亚洲一区欧美一区| 久久精品九九| 欧美精品导航| 国产乱码精品一区二区三区忘忧草| 国产亚洲福利一区| 亚洲精品美女免费| 性欧美暴力猛交69hd| 99日韩精品| 久久精品国产综合精品| 欧美日韩18| 国户精品久久久久久久久久久不卡 | 亚洲精品色婷婷福利天堂| 亚洲欧美日本日韩| 欧美暴力喷水在线| 国产精品一区二区在线| 亚洲欧洲一区二区天堂久久 | 洋洋av久久久久久久一区| 久久精品一区二区国产| 欧美成人精品福利| 国产区精品视频| 日韩视频在线观看国产| 亚洲福利电影| 性欧美video另类hd性玩具| 欧美成年人网| 国产美女精品视频| 91久久综合| 亚洲欧美日本伦理| 亚洲人成人一区二区三区| 午夜在线一区二区| 欧美精品在线一区二区| 韩日午夜在线资源一区二区| 中文日韩在线视频| 亚洲视频免费| 亚洲精品乱码| 久久久久久网站| 国产精品久久久久77777| 激情成人亚洲| 香蕉久久夜色精品国产| 亚洲欧美变态国产另类| 暖暖成人免费视频| 国产美女精品在线| 亚洲精品日日夜夜| 亚洲电影激情视频网站| 久久精品国产99精品国产亚洲性色| 欧美日韩高清在线一区| 亚洲二区免费| 久久精品亚洲一区| 久久久精品动漫| 国产区精品视频| 亚洲一区免费观看| 亚洲欧美日韩精品| 欧美色大人视频| 日韩午夜中文字幕| 亚洲精品影视| 欧美成人69| 亚洲第一在线综合网站| 亚洲第一主播视频| 久久婷婷国产综合尤物精品| 国产自产在线视频一区| 欧美一区二区三区在线观看视频| 欧美亚洲免费| 国产精品天天看| 亚洲免费视频一区二区| 亚洲欧美日韩中文播放| 欧美精品一区二区三区在线播放| 国模私拍视频一区| 欧美在线亚洲在线| 久久久久中文| 国产一区久久| 久久精品亚洲一区| 免费欧美高清视频| 亚洲国产成人tv| 99热免费精品| 欧美三级日本三级少妇99| 一本色道久久88精品综合| 亚洲视频在线视频| 国产精品久久7| 亚洲欧美国产一区二区三区| 久久成人免费视频| 国内精品嫩模av私拍在线观看 | 新片速递亚洲合集欧美合集| 久久九九久精品国产免费直播| 好看的日韩视频| 亚洲第一黄色| 亚洲三级影片| 欧美国产一区视频在线观看| 亚洲精品美女在线| 亚洲男同1069视频| 国产精品亚发布| 久久大香伊蕉在人线观看热2| 久久久久久久成人| 精品999成人| 亚洲精品1区2区| 欧美日韩亚洲视频一区| 亚洲淫性视频| 久久久亚洲成人| 91久久久亚洲精品| 亚洲永久免费av| 国产亚洲一区精品| 亚洲九九精品| 国产精品视频久久| 亚洲国产成人久久综合| 欧美久久久久久蜜桃| 亚洲调教视频在线观看| 久久久久久久久蜜桃| 亚洲精品日韩久久| 欧美一区二区日韩| 尤物精品国产第一福利三区| 一本一本久久a久久精品综合麻豆| 国产精品免费观看在线| 久久精品动漫| 欧美日韩精品一区二区| 午夜国产精品视频免费体验区| 男女激情久久| 最新日韩精品| 午夜伦欧美伦电影理论片| 亚洲二区免费| 午夜视频一区| 在线成人h网| 99亚洲伊人久久精品影院红桃|