999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于USB2.0和LabWindows/CVI數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)

2012-11-29 08:39:48王海濤陳后金
鐵路計(jì)算機(jī)應(yīng)用 2012年10期
關(guān)鍵詞:系統(tǒng)設(shè)計(jì)

王海濤,陳后金

(北京交通大學(xué) 電子信息工程學(xué)院,北京 100044)

隨著電子儀器與計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)據(jù)采集技術(shù)在智能儀器、國防軍事、工業(yè)生產(chǎn)和科學(xué)研究等領(lǐng)域得到了廣泛應(yīng)用。

傳統(tǒng)的數(shù)據(jù)采集儀器的軟件和硬件都是由廠商預(yù)先定義、預(yù)先封裝的,這樣,他們的靈活性就比較差。美國國家儀器公司(NI 公司)推出的交互式C語言開發(fā)平臺—LabWindows/CVI,將C語言平臺與用于數(shù)據(jù)采集、分析、處理和顯示的測控專業(yè)工具結(jié)合起來,給熟悉C 語言的開發(fā)設(shè)計(jì)人員編寫自動測試環(huán)境、檢測系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等應(yīng)用軟件提供了一個理想的軟件開發(fā)環(huán)境。

現(xiàn)在,常用的采集方式是在計(jì)算機(jī)或者工控機(jī)安裝外圍控制接口(PCI)或工業(yè)標(biāo)準(zhǔn)總線接口(ISA)的數(shù)據(jù)采集卡。雖然這些板卡自帶了設(shè)備驅(qū)動程序和數(shù)據(jù)采集函數(shù)庫,在軟件編程時可以直接調(diào)用自帶的數(shù)據(jù)采集函數(shù)庫實(shí)現(xiàn)數(shù)據(jù)采集和顯示,但是,這些板卡通常價格昂貴、安裝麻煩、容易受機(jī)箱內(nèi)環(huán)境的影響,而且計(jì)算機(jī)或者工控機(jī)插槽數(shù)量有限,不能掛載很多設(shè)備。而通用串行總線(USB)的出現(xiàn)很好地解決了上述問題。

本文把LabWindows/CVI與USB結(jié)合起來,設(shè)計(jì)了一種基于LabWindows/CVI軟件開發(fā)平臺和USB2.0接口的數(shù)據(jù)采集系統(tǒng),這個系統(tǒng)通過普通的USB連接線與計(jì)算機(jī)連接,支持即插即用,使用簡單方便,既避免了傳統(tǒng)儀器靈活性差,又不會有現(xiàn)在儀器成本高的缺點(diǎn)。

1 硬件電路

該數(shù)據(jù)采集系統(tǒng)由USB2.0接口芯片CY7C-68001、控制和計(jì)算芯片TMS320C6713、模數(shù)轉(zhuǎn)換芯片AD7865及擴(kuò)展接口芯片CPLD等組成。AD7865采集到電壓和電流數(shù)據(jù)以后,經(jīng)過TMS320C6713寫入到CY7C68001芯片的端點(diǎn),再通過USB總線傳給上位機(jī)。系統(tǒng)硬件結(jié)構(gòu)如圖1。

圖1 系統(tǒng)硬件結(jié)構(gòu)框圖

2 系統(tǒng)軟件設(shè)計(jì)

2.1 動態(tài)鏈接庫設(shè)計(jì)

LabWindows/CVI以ANSI C為編程語言,它開發(fā)的應(yīng)用程序不能直接調(diào)用Windows系統(tǒng)的應(yīng)用程序編程接口。但是,在Windows平臺下,應(yīng)用程序和USB設(shè)備之間的通信必須通過計(jì)算機(jī)系統(tǒng)的應(yīng)用程序接口(API)函數(shù)。這樣,要想與USB設(shè)備通信,就必須在LabWindows/CVI平臺開發(fā)的應(yīng)用程序與Windows API函數(shù)之間建立聯(lián)系。LabWindows/CVI開發(fā)的應(yīng)用程序可以調(diào)用動態(tài)鏈接庫(DLL)里面的函數(shù),而DLL文件可以調(diào)用Windows的API函數(shù),因此,DLL文件就是兩者建立聯(lián)系的橋梁。

本文將計(jì)算機(jī)與USB通信的各種API函數(shù)(比如打開一個存在的USB設(shè)備)都封裝了起來,做成了一個DLL文件,然后在應(yīng)用程序中進(jìn)程加載和調(diào)用,進(jìn)而訪問USB設(shè)備,進(jìn)行數(shù)據(jù)的采集和傳輸。這樣做也便于程序的管理和代碼的重復(fù)利用,并且很好地保護(hù)了代碼的知識產(chǎn)權(quán)。

表1中列出了要加入的幾個函數(shù)的聲明及功能。其中:

myRequest和bulkControl分別是EZ-USB設(shè)備驅(qū)動頭文件ezusbsys.h中定義的VENDOR_OR_CLASS_REQUEST_CONTROL和BULK_TRANSFER_CONTROL的結(jié)構(gòu)體類型。

DLL文件可以在VC++ 6.0的環(huán)境下開發(fā):

表1 DLL函數(shù)及功能

(1)建立一個Win32 Dynamic-Link Library的工程。

(2)在選擇創(chuàng)建什么類型的DLL選項(xiàng)中選擇“建立一個簡單的DLL工程”。點(diǎn)擊“完成”。

(3)在工程中加入必要的頭文件和自己編寫的函數(shù),編譯連接就可以生成LIB和DLL文件。

要在LabWindows/CVI中使用這個DLL函數(shù),必須把DLL、LIB和主頭文件拷貝到應(yīng)用程序的文件夾下,并且在應(yīng)用程序工程中添加LIB和C文件中包含拷貝過來的.h文件。

2.2 多線程技術(shù)與設(shè)計(jì)

在本系統(tǒng)中,為了實(shí)現(xiàn)數(shù)據(jù)采集、顯示并行處理,采用了多線程技術(shù)。這樣就可以把這些任務(wù)分配給不同的線程,次線程完成數(shù)據(jù)的實(shí)時采集,而主線程完成顯示和存儲等。這樣就能最大限度地保證數(shù)據(jù)的實(shí)時性,并且能及時響應(yīng)界面的其他操作。

2.2.1 線程池的使用

LabWindows/CVI提供了兩種機(jī)制實(shí)現(xiàn)多線程操作。這兩種機(jī)制是線程池和異步定時器。線程池技術(shù)比較適用于運(yùn)行不連續(xù)的任務(wù)或者是一個死循環(huán);而異步定時器技術(shù)則比較適用于執(zhí)行一些有規(guī)律的中斷。根據(jù)本系統(tǒng)的實(shí)際情況,本文采用了線程池的機(jī)制。應(yīng)用程序以用戶界面為主線程,完成數(shù)據(jù)的顯示和輸入響應(yīng)的任務(wù)。而數(shù)據(jù)采集線程則在響應(yīng)用戶界面采集指令后啟動,并且它作為后臺線程負(fù)責(zé)數(shù)據(jù)的采集,根據(jù)界面存儲指令進(jìn)行存儲,而主線程則在發(fā)生一定的觸發(fā)事件后進(jìn)行數(shù)據(jù)的顯示。

要使用LabWindows/CVI提供的線程池技術(shù)創(chuàng)建采集線程,必須調(diào)用Utility Library中的CmtScheduleThreadPoolFunction函數(shù),并且將要在采集線程中運(yùn)行的函數(shù)的名稱傳遞給它,這樣,線程池會安排一個空閑的線程來執(zhí)行這個函數(shù)中的代碼。傳遞給CmtScheduleThreadPoolFunction的函數(shù)成為線程池函數(shù),它必須有下面的格式:

int CVICALLBACK ThreadFunction (void*functionData);

而主函數(shù)還需要調(diào)用庫中的CmtSchedule-ThreadPoolFunction函數(shù)創(chuàng)建一個新的線程來執(zhí)行用戶指定的線程函數(shù)。這樣,用戶自定義的函數(shù)就可以在次線程中執(zhí)行,同時,主線程執(zhí)行主函數(shù)的回調(diào)而無需等待次線程的執(zhí)行。

在主線程退出之前,需要調(diào)用CmtWait-ForThreadPoolFunctionCompletion函數(shù),這樣就可以使主線程等待線程池中的函數(shù)結(jié)束后再退出,不會造成次線程不能正確清理分配到的資源。

2.2.2 線程訪問數(shù)據(jù)保護(hù)

在使用多線程時,必須考慮的問題就是數(shù)據(jù)的保護(hù)。因?yàn)槟承┳兞靠赡芡瑫r被多個線程訪問而發(fā)生沖突,導(dǎo)致程序運(yùn)行錯誤。這些變量包括全局變量、動態(tài)分配內(nèi)存的變量和靜態(tài)局部變量。而LabWindows/CVI提供3種數(shù)據(jù)保護(hù)機(jī)制:線程鎖、線程安全變量和線程安全隊(duì)列。

因?yàn)楸鞠到y(tǒng)中數(shù)據(jù)采集線程和主線程之間有大量的數(shù)據(jù)進(jìn)行傳遞,所以選用的是線程安全隊(duì)列。線程安全隊(duì)列是一種在線程間進(jìn)行安全數(shù)組數(shù)據(jù)傳遞的機(jī)制,所以特別適用于在程序中有一個線程生成數(shù)組數(shù)據(jù)、而另外一個線程對數(shù)組數(shù)據(jù)進(jìn)行處理的情況。線程安全隊(duì)列(TSQ)是一個先進(jìn)先出的隊(duì)列,而且可以響應(yīng)特定的事件。TSQ的工作過程為:(1)在主線程中創(chuàng)建一個TSQ,給它裝載一個寫回調(diào)函數(shù),并且設(shè)置參數(shù)讓TSQ在寫滿緩沖區(qū)時觸發(fā)事件。(2)在主界面采集命令發(fā)出后,線程池分配一個空閑線程給數(shù)據(jù)采集函數(shù),這樣,該函數(shù)把獲得的數(shù)據(jù)都寫入TSQ中,假設(shè)TSQ緩沖區(qū)長度被設(shè)置為n,當(dāng)緩沖區(qū)寫滿時,便會觸發(fā)主線程的顯示回調(diào)函數(shù)。(3)在顯示回調(diào)函數(shù)中,主線程將數(shù)據(jù)從TSQ讀出,存放在自定義的數(shù)組中,完成后續(xù)的處理和顯示。這樣,數(shù)據(jù)采集和顯示就會同步進(jìn)行。

2.3 程序控制和數(shù)據(jù)傳輸流程

程序控制和數(shù)據(jù)傳輸流程如圖2。

圖2 程序控制和數(shù)據(jù)傳輸流程圖

3 結(jié)束語

本文基于LabWindows/CVI這一軟件平臺,設(shè)計(jì)了一種高速的USB2.0系統(tǒng)。運(yùn)用多線程技術(shù)和DLL技術(shù),極大地提高了系統(tǒng)性能,增強(qiáng)了系統(tǒng)的實(shí)時性,降低了系統(tǒng)的成本。經(jīng)過測試,本系統(tǒng)達(dá)到了設(shè)計(jì)要求,運(yùn)行良好。

[1]王海濤,付 鈞,鮮 勇,等. 基于LabWindows/CVI的數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)[J]. 艦船電子工程,2010(5):64-66.

[2]陳矯陽,陳 楸,劉桓龍. 基于LabWindows/CVI多線程數(shù)據(jù)采集的研究[J]. 科學(xué)技術(shù)與工程,2008(9):2459-2461.

[3]孔 麗,于紅蕓,張 利. LabWindows/CVI中調(diào)用VC動態(tài)庫的方法與實(shí)例[J]. 海軍航空工程學(xué)院學(xué)報(bào),2004(3):364-366.

[4]王建新,楊世鳳,隋美麗. LabWindows/CVI測試技術(shù)及工程應(yīng)用[M]. 北京:化學(xué)工業(yè)出版社,2006.

猜你喜歡
系統(tǒng)設(shè)計(jì)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
瞞天過海——仿生設(shè)計(jì)萌到家
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
主站蜘蛛池模板: 中文字幕精品一区二区三区视频| 色婷婷狠狠干| 亚洲中文字幕97久久精品少妇| 成人在线不卡| 精品偷拍一区二区| 小说区 亚洲 自拍 另类| 精品国产香蕉伊思人在线| 成人小视频网| 亚洲一区免费看| 欧美日韩精品一区二区在线线| 国产在线精品香蕉麻豆| 在线观看国产精品一区| 日本日韩欧美| 国产精女同一区二区三区久| 免费看a级毛片| 一本色道久久88亚洲综合| 中文字幕1区2区| 亚欧乱色视频网站大全| 国产成人a在线观看视频| 欧美亚洲一区二区三区导航| 日本一本正道综合久久dvd | 成年免费在线观看| 99久久精品国产自免费| 久久久成年黄色视频| 国产成人免费视频精品一区二区| 国产综合日韩另类一区二区| 国产成人精品第一区二区| 国产理论一区| 国产91丝袜在线播放动漫 | 亚洲黄色视频在线观看一区| 日韩av电影一区二区三区四区 | 国产精品区视频中文字幕| 国产亚洲精品97在线观看| 久久伊伊香蕉综合精品| 福利片91| 亚洲aⅴ天堂| 国产精品浪潮Av| 午夜国产大片免费观看| 亚洲天堂久久新| 精品无码一区二区在线观看| 朝桐光一区二区| 天天摸夜夜操| 日本人又色又爽的视频| 美女被操黄色视频网站| 中文字幕一区二区人妻电影| 无码一区二区波多野结衣播放搜索| 人妖无码第一页| 无遮挡国产高潮视频免费观看| 欧美在线精品一区二区三区| 国产鲁鲁视频在线观看| 国产日韩久久久久无码精品| 久青草国产高清在线视频| 国产特一级毛片| 69视频国产| 夜精品a一区二区三区| 欧美精品影院| 99久久国产精品无码| 亚洲中文字幕手机在线第一页| 这里只有精品在线| 国产人前露出系列视频| 色哟哟国产精品| 亚洲欧美不卡中文字幕| 岛国精品一区免费视频在线观看| 中文字幕乱码中文乱码51精品| 亚洲一区网站| www精品久久| 无码免费的亚洲视频| 国产成人啪视频一区二区三区| 国产美女丝袜高潮| 国产精品吹潮在线观看中文| AV色爱天堂网| 欧美日本二区| 久久亚洲美女精品国产精品| 欧美一级专区免费大片| 欧美伦理一区| 人妻21p大胆| 亚洲天堂网在线视频| a级毛片免费看| 亚洲无码高清视频在线观看| 国产日韩精品一区在线不卡 | 91精品国产麻豆国产自产在线| 亚洲成人网在线观看|