李鳴謙,藍(lán)若明,翟光杰
(1.中國科學(xué)院國家空間科學(xué)中心北京100190;2.中國科學(xué)院大學(xué)北京100049)
基于C#的超聲數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件設(shè)計(jì)
李鳴謙1,2,藍(lán)若明1,2,翟光杰1
(1.中國科學(xué)院國家空間科學(xué)中心北京100190;2.中國科學(xué)院大學(xué)北京100049)
基于提高超聲數(shù)據(jù)采集系統(tǒng)的穩(wěn)定性和數(shù)據(jù)采集效率的目的,利用C#語言編寫上位機(jī)軟件從而將數(shù)據(jù)通過CH375接口進(jìn)行讀取、轉(zhuǎn)換、存儲(chǔ)并實(shí)時(shí)顯示。通過使用Visual Studio 2013.NET編程環(huán)境中Thread類聯(lián)合CH375動(dòng)態(tài)鏈接庫,大大提高程序運(yùn)行效率。測(cè)試結(jié)果表明,系統(tǒng)各項(xiàng)功能運(yùn)行良好,界面友好,提高了數(shù)據(jù)采集效率,為今后類似的數(shù)據(jù)采集系統(tǒng)的研發(fā)和設(shè)計(jì)提供參考。
C#語言;USB接口;CH375;數(shù)據(jù)采集
傳統(tǒng)的RS-232由于接口電路簡(jiǎn)單、編程容易,得到廣泛運(yùn)用,但其最大通信速度僅達(dá)到115.2 kb/s。隨著超聲技術(shù)的不斷發(fā)展,采集的數(shù)據(jù)量也在不斷的加大,這個(gè)速度不能滿足高速數(shù)據(jù)通信的需求。而USB(通用串行總線)在速度上具有RS-232無法匹敵的優(yōu)勢(shì),USB2.0達(dá)到480Mbits/s的傳輸速度,大有取代傳統(tǒng)RS-232的趨勢(shì)[1]。
針對(duì)實(shí)驗(yàn)室現(xiàn)有的超聲換能器硬件電路,本文詳細(xì)介紹了基于CH375芯片的USB接口與上位機(jī)(計(jì)算機(jī))通信的設(shè)計(jì)方法和技巧。
采用C#語言編寫上位機(jī)程序,實(shí)現(xiàn)上位機(jī)對(duì)超聲換能器硬件電路的讀寫控制,并對(duì)采集數(shù)據(jù)進(jìn)行轉(zhuǎn)換、存儲(chǔ)、繪圖等處理。
CH375是由南京沁恒有限公司生產(chǎn)的USB總線通用接口芯片。支持主機(jī)方式和設(shè)備方式,并可動(dòng)態(tài)切換主機(jī)和設(shè)備方式。本文中對(duì)CH375的操作是采用命令加數(shù)據(jù)的I/O操作方式,任何操作都是由上位機(jī)軟件先發(fā)命令給CH375,然后再執(zhí)行數(shù)據(jù)輸入輸出。CH375接收到命令或數(shù)據(jù)后,以中斷方式通知下位機(jī)[2-4]。中斷處理流程如圖1。
CH375在計(jì)算機(jī)端提供了應(yīng)用層接口,是由CH375動(dòng)態(tài)鏈接庫DLL提供的面向功能應(yīng)用的API。CH375動(dòng)態(tài)鏈接庫提供的API包括:設(shè)備管理API、數(shù)據(jù)傳輸API、中斷處理API等。由于CH375DLL.DLL中API函數(shù)很多,本程序只用到了部分函數(shù),主要介紹如下:
①CH375OpenDevice(UInt32 iIndex)。打開設(shè)備,返回句柄,出錯(cuò)則無效;iIndex指定CH375設(shè)備序號(hào),0對(duì)應(yīng)第一個(gè)設(shè)備。
② CH375ResetDevice(UInt32 iIndex)。 復(fù) 位USB設(shè)備。
③ CH375WriteData(UInt32 iIndex, byte[]iBuffer,UInt32[]ioLength)。寫出數(shù)據(jù)塊。
④ CH375ReadData(UInt32 iIndex, byte[]oBuffer,UInt32[]ioLength)。讀取數(shù)據(jù)塊。
⑤CH375QueryBufUpload(UInt32 iIndex)。查詢內(nèi)部上傳緩沖區(qū)中的已有數(shù)據(jù)包個(gè)數(shù),成功返回?cái)?shù)據(jù)包個(gè)數(shù),出錯(cuò)返回-1。
⑥ CH375CloseDevice(UInt32 iIndex)。 關(guān) 閉CH375設(shè)備。
圖1 中斷處理流程
上位機(jī)通過USB接口芯片CH375獲取下位機(jī)采集的數(shù)據(jù),主要通過現(xiàn)場(chǎng)可編程門陣列(FPGA)的控制來實(shí)現(xiàn)[5]。因此在上位機(jī)與FPGA中要事先約定好通信協(xié)議,讓FPGA知道從上位機(jī)傳來的哪些命令。
數(shù)據(jù)包的格式為:包頭+包長(zhǎng)+功能碼+數(shù)據(jù)+校驗(yàn)和。
建立好通信協(xié)議后,當(dāng)FPGA接收到從上位機(jī)發(fā)出的命令,則執(zhí)行相應(yīng)的操作,否則FPGA則一直處于等待狀態(tài);當(dāng)接收到新的命令后,F(xiàn)PGA將中斷當(dāng)前操作,轉(zhuǎn)而執(zhí)行新的命令操作。
本系統(tǒng)上位機(jī)軟件的任務(wù)是:通過CH375芯片與下位機(jī)進(jìn)行通信,完成數(shù)據(jù)采集工作并對(duì)數(shù)據(jù)進(jìn)行適當(dāng)處理后,進(jìn)行數(shù)據(jù)存儲(chǔ)與顯示。本上位機(jī)軟件是在Windows 7操作系統(tǒng)下Visual Studio 2013.NET編程環(huán)境中使用C#語言編程完成,通過調(diào)用CH375制造商提供的設(shè)備方式下的標(biāo)準(zhǔn)驅(qū)動(dòng)CH375WDM.INF和動(dòng)態(tài)鏈接庫:CH375DLL.DLL,通過加載驅(qū)動(dòng)信息可以在應(yīng)用程序中直接調(diào)用動(dòng)態(tài)鏈接庫[6-9]。
上位機(jī)軟件的主要功能結(jié)構(gòu)圖如圖2所示。主要實(shí)現(xiàn)了如下功能。
圖2 上位機(jī)軟件結(jié)構(gòu)圖
1)設(shè)備管理。主要實(shí)現(xiàn)對(duì)下位機(jī)的控制操作。主要包括以下功能:
①設(shè)備打開。執(zhí)行命令時(shí),程序調(diào)用API函數(shù)CH375OpenDevice,用來對(duì)該設(shè)備進(jìn)行進(jìn)一步訪問。
②設(shè)備復(fù)位。程序調(diào)用CH375ResetDevice函數(shù)實(shí)現(xiàn)對(duì)設(shè)備的復(fù)位,方便下一次操作;
③參數(shù)設(shè)定。向下位機(jī)寫入數(shù)據(jù),使下位機(jī)調(diào)整超聲換能器工作參數(shù)。
④數(shù)據(jù)讀取。數(shù)據(jù)讀取是該軟件中的重要部分,其算法的優(yōu)劣決定了該軟件的有效性及實(shí)用性。執(zhí)行讀取操作時(shí),上位機(jī)軟件向CH375發(fā)送讀取命令,同時(shí)啟動(dòng)監(jiān)聽線程。CH375將該命令發(fā)送給下位機(jī),下位機(jī)進(jìn)行數(shù)據(jù)采集并發(fā)送上傳請(qǐng)求。監(jiān)聽線程收到后,通知上位機(jī)收集數(shù)據(jù)[10-13]。
⑤設(shè)備關(guān)閉。當(dāng)實(shí)驗(yàn)完成后,程序調(diào)用API函數(shù)CH375CloseDevice對(duì)設(shè)備進(jìn)行關(guān)閉操作,方便下一次實(shí)驗(yàn)的進(jìn)行。
2)數(shù)據(jù)管理。主要實(shí)現(xiàn)驗(yàn)證數(shù)據(jù)讀取的正確性,存儲(chǔ)數(shù)據(jù)并實(shí)時(shí)顯示。該部分主要包含以下功能:
①數(shù)據(jù)處理。主要是數(shù)據(jù)轉(zhuǎn)換和驗(yàn)證數(shù)據(jù)讀取的正確性。數(shù)據(jù)轉(zhuǎn)換是將以16進(jìn)制浮點(diǎn)數(shù)形式傳遞的原始數(shù)據(jù)轉(zhuǎn)換為10進(jìn)制浮點(diǎn)數(shù),便于對(duì)數(shù)據(jù)的查看和分析;在驗(yàn)證讀取數(shù)據(jù)正確性的時(shí)候,直接判斷整包校驗(yàn)和即可,若不正確則當(dāng)錯(cuò)誤幀處理。為了提高程序的執(zhí)行效率以及便于程序的維護(hù)和開發(fā),將校驗(yàn)和設(shè)置為雙份,這樣便不用整包檢驗(yàn),只需要對(duì)比雙份校驗(yàn)和是否相等即可,有效地提高了程序的執(zhí)行效率。
②數(shù)據(jù)存儲(chǔ)。
③數(shù)據(jù)顯示。由于C#繪圖過于繁瑣,所以上位機(jī)軟件借助于TeeChart插件進(jìn)行波形的繪制。
由于Visual Studio 2013.NET集成了大量實(shí)用類庫,本系統(tǒng)上位機(jī)軟件進(jìn)行編程時(shí),可使用Thread類來進(jìn)行多線程編程,輕松完成編程工作。部分核心代碼如下:
為保證線程間的數(shù)據(jù)能正確傳遞,通常要采用全局變量;跨線程調(diào)用數(shù)據(jù)時(shí),要采用委托的方法,避免多線程編程的復(fù)雜性破壞控件狀態(tài)。
上位機(jī)程序流程如圖3。
圖3 上位機(jī)程序流程
本系統(tǒng)上位機(jī)軟件經(jīng)過長(zhǎng)期運(yùn)行,數(shù)據(jù)采集情況正常,能夠正確讀取下位機(jī)采集數(shù)據(jù)并按規(guī)定格式處理,擁有較好的數(shù)據(jù)采集效率,達(dá)到了設(shè)計(jì)預(yù)期的要求。軟件界面效果圖如圖4。
圖4 上位機(jī)軟件界面
文中介紹了一種針對(duì)實(shí)驗(yàn)室現(xiàn)有的基于CH375和超聲換能器FPGA電路的數(shù)據(jù)采集上位機(jī)軟件設(shè)計(jì)方法,詳細(xì)分析了上位機(jī)與下位機(jī)之間的通信原理,并討論了上位機(jī)軟件設(shè)計(jì)的關(guān)鍵技術(shù)。經(jīng)過長(zhǎng)期測(cè)試,本文所設(shè)計(jì)的上位機(jī)軟件性能穩(wěn)定、操作簡(jiǎn)便,較好的滿足了數(shù)據(jù)采集系統(tǒng)對(duì)上位機(jī)軟件的要求[14-17]。
[1]童洪潔,李寶華.USB上位機(jī)程序開發(fā)與設(shè)計(jì)[J].儀器儀表用戶,2005,12(1):52-53.
[2]胡榮強(qiáng),郝艷杰,唐盛.USB接口在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2005,21(1):51-52.
[3]智兆華,張鵬.USB接口芯片CH375的原理及應(yīng)用[J].今日電子,2005(8):74-75.
[4]湯劍靈,高玉.USB通信芯片CH375在數(shù)據(jù)交換中的應(yīng)用[J].電子工程師,2007,33(10):61-63.
[5]蔡江洪,史小軍,朱為,等.利用FT245BM實(shí)現(xiàn)FPGA與PC機(jī)的USB通訊[J].電子器件.2005,28(1):132-137.
[6]張立.C#程序設(shè)計(jì)編程經(jīng)典[M].北京:清華大學(xué)出版社,2008.
[7]安榮,任勇峰,李圣昆.基于FPGA和USB2.0的數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2009(3):49-51.
[8]李朋勃,張洪平.基于FPGA和USB2.0的高速數(shù)據(jù)采集系統(tǒng)[J].電子技術(shù)應(yīng)用,2009(10):109-112.
[9]唐崇華.基于C#的數(shù)據(jù)采集組件的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2013(2):103-105.
[10]韓梅,崔海全.基于C#液位數(shù)據(jù)采集與處理軟件的設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2012,25(11):6-8.
[11]梁佳,張帥.基于MSP430和C#的數(shù)據(jù)采集系統(tǒng)開發(fā)[J].電子科技,2011,24(10):115-118.
[12]甘亞鵬,方磊.基于C#的ADC數(shù)據(jù)采集上位機(jī)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(13):67-68.
[13]徐泰,劉慶華,申繼鵬,等.基于C#的數(shù)據(jù)處理與分析的上位機(jī)軟件設(shè)計(jì)[J].電腦編程技巧與維護(hù),2015(5):19-21.
[14]高飛,湯志祥,李自強(qiáng),等.智能數(shù)據(jù)采集與分析系統(tǒng)[J].儀表技術(shù)與傳感器,2007(9):44-45.
[15]孟強(qiáng),徐慧,萬青苗.基于STM32的數(shù)據(jù)采集及顯示系統(tǒng)的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2013(5):3183-3186.
[16]李楠,宋曉梅,鞏學(xué)芳.一種支持USB和以太網(wǎng)端口的數(shù)據(jù)采集器設(shè)計(jì)[J].西安工程大學(xué)學(xué)報(bào),2014,28(5):593-597.
[17]王愛華.基于快速數(shù)據(jù)分組處理方法的改進(jìn)研究[J].重慶師范大學(xué)學(xué)報(bào):自然科學(xué)版,2015(4):113-117.
Design of the ultrasonic data acquisition system based on C#
LI Ming?qian1,2,LAN Ruo?ming1,2,ZHAI Guang?jie1
(1.National Space Science Center,Chinese Academy of Sciences,Beijing100190,China;2.University of Chinese Academy of Sciences,Beijing100049,China)
Based on the purpose of improving the efficiency of data acquisition and stability of ultrasonic data acquisition system,using the language of C#to write PC software to read the data through the inter?face CH375,and to transform,to store and to display the data.By using Visual Studio 2013.NET pro?gramming environment in the thread class combined CH375 dynamic link library,greatly improving the running efficiency of the program.Test results show that,the function of the system is running well,and improving the efficiency of data collecting provide a reference for future similar data acquisition system development and design.
C#language;USB interface;CH375;data acquisition
TN99
A
1674-6236(2017)22-0190-04
2016-01-12稿件編號(hào):201601077
李鳴謙(1991—),男,安徽阜陽人,碩士研究生。研究方向:計(jì)算機(jī)技術(shù)。