《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > LabVIEW與USB的直接數據通信
LabVIEW與USB的直接數據通信
Icbuy
Icbuy
摘要:   LabVIEW是一種基于圖形程序的虛擬儀器編程語言,在測試與測量、數據采集、儀器控制、數字信號分析、工廠自動化等領域獲得了廣泛的應用。LabVIEW程序采用方框圖編程,具有友好的人機界面,在前面板中有用于模擬真實儀器面板的控件可供調用,可用于設置輸入數值、觀察輸出值以及實現圖表、文本等顯示。
Abstract:
Key words :
  1 引言

  LabVIEW" title="LabVIEW">LabVIEW是一種基于圖形程序的虛擬儀器" title="虛擬儀器">虛擬儀器編程語言" title="編程語言">編程語言,在測試與測量、數據采集、儀器控制、數字信號分析、工廠自動化等領域獲得了廣泛的應用。LabVIEW程序采用方框圖編程,具有友好的人機界面,在前面板中有用于模擬真實儀器面板的控件可供調用,可用于設置輸入數值、觀察輸出值以及實現圖表、文本等顯示。實現LabVIEW對數據的采集和處理,傳統的是采用數據采集卡,但是這些數據采集設備存在安裝不便、價格昂貴、受計算機插槽數量、地址、中斷資源的限制,可擴展性差,同時在一些電磁干擾性強的測試現場,可能無法專門對其做電磁屏蔽,從而導致采集的數據失真。在LabVIEW下使用USB" title="USB">USB總線,可以同樣實現數據采集,并且彌補了采集卡的不足。

  傳統的用LabVIEW讀寫USB設備的方法是:先用VC或Delphi編寫動態鏈接庫DLL文件,在DLL中通過調用WIN API函數讀寫USB設備的數據,并存在緩沖區中,在LabVIEW中通過對DLL文件的調用提取緩沖區中的數據。介紹了在LabVIEW下,通過調用NI-VISA子程序控件,實現與USB設備的直接通信,避免了二次編程的麻煩和數據的中轉。

  2 USB底層驅動程序設計

  USB底層驅動開發工具有Windows DDK和第三方開發工具,如Driver studio和 Win driver等,但是使用這些工具開發驅動難度大、效率底。在這里,介紹如何借用LabVIEW的NI-VISA子程序控件作為USB的底層驅動。

  VISA(Virtual Instrument Software Architecture,ni.corn/visa)是一個用來與各種儀器總線進行通訊的高級應用編程接口(API)。他不受平臺、總線和環境的限制。通用串行總線(USB)是一個基于信息的通訊總線。這表示PC機與USB設備通過發送指令和數據進行通訊,而這些指令和數據是通過總線以文本或二進制數據的形式發送的。每個USB設備都有各自的指令集。可以使用NI-VISA的讀寫功能向儀器發送這些指令,并讀取儀器的反饋。

  NI-VISA從3.0版開始支持USB通訊,他有2種VISA類函數(Resource Class),可以控制2類USB設備:USB INSTR設備與USB RAW設備。符合USB測試和測量類(USBTMC)協議的USB設備可以通過使用USB INSTR類函數控制,他們使用488.2標準通訊。對于這些設備,只需以與GPIB儀器通訊同樣的方式,使用"VISA Open","VISA Close","VISA Read"和"VISAWrite"功能。USBTMC設備符合VISA USB INSTR類函數能夠理解的協議。USBTMC設備相對來說控制較為復雜,因為每個設備可以使用各自的通信協議,而這些通信協議一般都是由設備的生產廠家自定的。

  為了使用NI-VISA,必須先讓Windows將NI-VI-SA作為設備的缺省驅動程序使用。在Windows環境中,可以通過INF文檔做到這一點。INF文件是系統硬件設備配置文件,USB驅動程序通過INF文件中的PID(產品識別號)和VID(廠商識別號)識別USB設備。NI-VISA 3.0中包含的VISA Driver Development Wizard(DDW)可以為USB設備創建一個INF文檔。下面簡單介紹創建INF文檔的過程:

  (1)在安裝了NI-VISA后,啟動VISA Driver Devel-opment Wizard程序,出現了為PXI/PCI或USB設備創建一個INF文檔的向導,選擇USB設備,點NEXT,出現VI-SA DDW基本設備信息窗口。

  (2)進行這一步時,需要清楚USB的PID和VID。這些數字可以在安裝USB設備的時候對其進行確認,并在想要與設備通訊的時候,尋找他的地址。依據USB的規格,兩個數字都是16位16進制數字,并應該由設備制造商提供。例如在后面介紹基于USB的虛擬示波器用到USB接口芯片PDIUSBD12的PID和VID分別是0x0471和0x0666;這一步設置完成后,點擊NEXT,進行最后一步的設置。

  (3)USB Instrument Prefix(USB儀器前綴)只是一個描述符,可以用他來識別本設備所用的相關文檔。在USB Instrument Prefix中輸入相應信息,并在"output file directory"中選擇存放這些文檔的目錄,然后點擊Finish。INF文檔就被建好并保存至指定的位置。

  這時候,只要復制生成的INF文件夾到系統盤Win-dows文件夾下INF文件夾,點擊右鍵,安裝即可。這時,插上USB設備,Windows系統就能探測到,并根據INF硬件配置文件選擇NI-VISA作為底層驅動程序。在Lab-VIEW中,只需調用NI-VISA的相關控件,即可實現對USB設備的讀寫操作。

  3 LabVIEW驅動程序編寫

  強大、靈活的儀器控制功能是LabVIEW區別于其他編程語言的主要特點。LabVIEW不僅提供數百種不同接口測試儀器的驅動程序,而且還支持VISA,SCPI和IVI等最新的程控軟件標準,為用戶設計開發先進的測試系統提供了軟件支持。VISA是用于儀器編程的標準I/O函數庫及相關規范的總稱,一般稱之為VISA庫。VISA庫駐留于計算機系統中,是計算機與儀器之間的軟件層連接,用以實現對儀器的程控。對軟件開發者來說,他是一個可調用的操作函數集,他本身不提供儀器編程能力,只是一個高層API(應用程序接口),通過調用底層的驅動程序來控制儀器設備。

  NI-VISA支持3種類型的USB管道:控制、批量和中斷。NI-VISA探測到USB儀器時,他會對儀器進行自動掃描,尋找各種類型的最低可用端點。如使用NI-VI-SA中的VISA USB Control In和VISA USB Control Out來通過控制型管道傳輸數據,使用VISA Read和VISAWrite來通過批量型管道傳輸數據。

  作為儀器I/O函數庫,VISA編程與傳統的I/O軟件編程基本相同,主要通過設備I/O端口的讀寫操作和屬性控制,實現與儀器的命令與數據交換。LabVIEW中所有的VISA節點均在Function模板→All Functions子模板→Instrument I/O子模板→VISA子模板中。在這里,只用到了VISA Open,VISA Close,VISA Write和VISARead四個節點即可實現和USB設備的雙向通信。當完成對USB設備的INF硬件配置后,就可以用VISA Open節點打開該資源,建立計算機與這些VISA資源的通信管道;與VISA Open節點相反,VISA Close節點用于將打開的VISA資源關閉;VISA Write節點的功能是將writebuffer端口輸入字符串數據發送到儀器中;VISA Read節點的功能是從儀器中讀出數據;

  介紹完上面的4個節點,就可以用上面4個節點實現LabVIEW對USB批量數據收發,如圖1所示。當然,這需要前述INF文件的支持和與USB接口的單片機程序的支持,在圖1中VISA resource name端口用于指定需要打開的VISA資源的名稱,實際上就是前面生成INF配置文件中的VISA資源儀器描述符。這里,向USB發送字符串“connect test”,連接測試,單片機通過USB接口芯片將發送過去的數據回傳給LabVIEW。在前面板的read buffer顯示框中能顯示出“connect test”字符串。

1.jpg

  4 基于IJSB的虛擬示波器的實現

  本系統為在LabVIEW中實現示波器的功能。單片機對向USB示波器調理電路輸出的信號進行96 k(多檔可調)的高速連續AD采樣,并將采樣到的數據通過USB口傳給PC機的LabVIEW,LabVlEW對USB口傳來的數據進行處理、測量、波形還原和顯示等相關操作。虛擬示波器的程序運行界面如圖2所示,當前輸入的是2.001 kHz的正弦波信號,在軟件中顯示的波形以及測量結果與實際示波器上 得到的結果基本無異。在該程序模塊中,通過調用Lab-VIEW的相關控件,實現了對輸入的模擬信號的波形還原顯示、頻率測量、峰值測量、直流漂移測量等操作。

2.jpg

  系統采用單片機和Philip公司生產的PDIUSBD12芯片構成USB設備。由單片機實現AD采樣,經USB接口完成采樣數據的傳輸。單片機的電路設計和軟件構成在這里就不做詳細介紹。

  此系統硬件部分USB接口芯片采用的PDIUSBD12,他支持批量數據的長度為64B,所以就以64B為一幀進行數據和命令的收發。在系統啟動即檢測USB設備是否連接正常,正常才啟動檢測,否則提示連接不正常。當啟動檢測時,USB總線上的數據的傳輸過程遵循以下步驟:

  (1)LabVIEW向USB設備發送啟動控制命令幀,其中包含采樣頻率、存貯深度、持續時間等相關內容。由于控制命令字不滿64B,其他部分進行比特填充。

  (2)單片機通過USB接口芯片接收到控制命令,即按要求開始啟動采樣。若為大于8k高速采樣命令,則進行連續采樣,將采樣的數據存貯在數據緩沖區中,采樣結束后,將數據緩沖區中的數據進行60B每幀的拆分,并在60B數據的前面加上4個字節的數據幀編號等相關內容,通過USB總線將這些數據幀批量傳輸給LabVIEW。

  (3)若為小于8k的低速采樣命令,則進行中斷采樣,將采樣的數據存儲在一個隊列中,在采樣過程中,若采樣的數據多于60B,即在主程序中取出隊列中60個字節數據并封裝成數據幀,啟動USB數據的傳輸過程。采樣過程直至LabVIEW向USB設備發送停止命令幀。

  (4)在一次數據采樣結束后,LabVIEW向USB設備發送啟動控制命令幀即可馬上進行再次采樣。

  5 結語

  用戶可以根據不同的環境和要求選擇不同的通信方式,在低速的情況下可以采用串口,并口等方式,高速數據采集可以采用USB口,專用數據采集卡等,使用USB2.0協議的芯片支持的批量的數據幀長度可以達到512B,并且有更高的數據傳輸速度。介紹了在LabVIEW中實現USB通信的設計方法,并給出具體的設計步驟和方框圖程序。該方法具有硬件接口簡單、軟件編程方便、實用的特點,在實際數據采集過程中具有一定參考價值。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一本色道久久88精品综合| 欧美精品日韩一本| 亚洲电影免费在线观看| 亚洲视频在线观看| 亚洲欧洲一二三| 亚洲国产精品免费| 亚洲福利在线视频| 在线日本高清免费不卡| 依依成人综合视频| 影音先锋久久| 91久久久久| 日韩视频免费观看高清完整版| 亚洲国产视频a| 亚洲精品视频免费观看| 亚洲精品国产拍免费91在线| 91久久久亚洲精品| 亚洲人成在线免费观看| 亚洲美女淫视频| 日韩亚洲欧美综合| 99伊人成综合| 亚洲一区中文字幕在线观看| 亚洲欧美日韩在线观看a三区| 午夜精品久久久久久| 欧美一区二区三区免费观看 | 午夜久久美女| 欧美一级淫片aaaaaaa视频| 欧美伊人久久| 91久久中文| 中国女人久久久| 欧美一区二区在线视频| 久久久噜噜噜久久久| 欧美成人精品高清在线播放| 欧美日本不卡视频| 欧美日韩亚洲一区三区| 国产精品久久久久久模特 | 亚洲人妖在线| 中国成人亚色综合网站| 亚洲欧美另类在线| 亚洲二区在线| 这里只有精品丝袜| 欧美在线观看一区| 久久久青草青青国产亚洲免观| 欧美成人激情视频免费观看| 欧美日韩一区二区欧美激情| 国产精品一区在线播放| 狠狠久久亚洲欧美| 亚洲免费av电影| 性感少妇一区| 亚洲精品中文在线| 欧美一区二区三区精品电影| 久久亚洲视频| 欧美四级伦理在线| 精品二区视频| 亚洲香蕉网站| 最新亚洲视频| 午夜一区在线| 欧美激情欧美狂野欧美精品| 国产精品一区亚洲| 亚洲精品久久久久久久久久久久久| 亚洲影视九九影院在线观看| 亚洲国产精品一区二区www在线| 一本一本久久| 久久伊伊香蕉| 国产精品久久97| 亚洲高清久久网| 亚洲欧美日韩人成在线播放| 日韩午夜视频在线观看| 久久国产黑丝| 欧美日韩亚洲激情| 伊人狠狠色j香婷婷综合| 亚洲天堂av在线免费观看| 亚洲国产日韩一区| 欧美一级久久久久久久大片| 欧美精品18| 激情久久综合| 亚洲午夜精品网| 日韩午夜电影av| 久久亚洲春色中文字幕| 国产精品久久久一区二区| 亚洲国产精品国自产拍av秋霞| 亚洲欧美日韩中文视频| 在线亚洲一区二区| 免费成人高清| 国内久久精品| 亚洲一区影院| 亚洲视频在线视频| 欧美激情1区| 在线成人www免费观看视频| 亚洲欧美精品在线| 亚洲中字黄色| 欧美日韩亚洲一区| 亚洲日本成人在线观看| 久久精品国产一区二区三区免费看 | 亚洲精品视频在线观看网站| 久久久久国产精品一区二区| 国产精品家教| 一区二区免费在线视频| 日韩视频免费观看| 欧美va亚洲va国产综合| 狠狠色丁香久久综合频道| 亚洲欧美国产视频| 亚洲综合导航| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲乱码一区二区| 日韩一区二区电影网| 免费成人av| 亚洲第一成人在线| 亚洲激情在线激情| 欧美成人黄色小视频| 在线观看一区视频| 亚洲国产毛片完整版 | 亚洲成色www久久网站| 欧美在线视频一区二区三区| 欧美在线免费播放| 国产日韩在线亚洲字幕中文| 亚洲欧美日韩精品久久奇米色影视 | 国产欧美在线视频| 亚洲影院色在线观看免费| 午夜精品久久久久久久99黑人| 国产精品久久久久久久久久妞妞| 一区二区三区免费在线观看| 亚洲午夜精品在线| 国产精品美女视频网站| 亚洲一区一卡| 久久久久成人精品免费播放动漫| 国产在线高清精品| 亚洲国产三级网| 欧美激情亚洲另类| 一本色道久久综合| 午夜在线一区二区| 国产亚洲精品一区二区| 亚洲电影第三页| 欧美片第一页| 亚洲婷婷综合色高清在线| 性色av一区二区三区| 国产丝袜美腿一区二区三区| 久久国产精品毛片| 欧美国产日韩在线| 一区二区三区精品久久久| 性欧美大战久久久久久久久| 国产一区二区av| 亚洲黄色性网站| 欧美日韩精品一区二区| 亚洲一区二区三区视频播放| 久久精品99无色码中文字幕 | 一区二区三区欧美成人| 欧美午夜精品久久久久久超碰| 亚洲一区二区三区777| 久久人体大胆视频| 亚洲免费观看在线观看| 欧美一区二区三区电影在线观看 | 亚洲高清自拍| 亚洲自拍偷拍麻豆| 国内成+人亚洲+欧美+综合在线| 亚洲三级电影在线观看| 欧美肉体xxxx裸体137大胆| 午夜精品理论片| 欧美成人午夜激情视频| 日韩亚洲视频| 久久久精品国产免大香伊| 亚洲三级视频| 久久久91精品国产一区二区三区 | 亚洲久色影视| 国产精品日产欧美久久久久| 久久精品一区二区三区中文字幕| 欧美国产激情| 亚洲欧美日韩精品久久亚洲区| 女生裸体视频一区二区三区| 在线视频欧美日韩精品| 狂野欧美性猛交xxxx巴西| 在线视频精品一区| 蜜臀a∨国产成人精品| 亚洲午夜精品一区二区三区他趣| 噜噜爱69成人精品| 亚洲性视频h| 欧美国产大片| 欧美在线精品免播放器视频| 欧美日韩亚洲激情| 久久国产一区二区三区| 欧美三级午夜理伦三级中文幕 | 91久久国产综合久久| 久久精品亚洲热| 99亚洲一区二区| 免费中文日韩| 欧美一区二区三区日韩视频| 欧美视频日韩视频| 亚洲激情视频网| 国产日本精品| 亚洲视频在线观看三级| 亚洲成人自拍视频| 久久xxxx| 亚洲视频在线观看免费| 欧美刺激性大交免费视频| 欧美亚洲三级| 国产精品嫩草99a| 一区二区三区精密机械公司 | 久久精品电影| 国产日韩欧美综合| 亚洲免费视频成人| 亚洲人体一区|