李鳴謙,藍若明,翟光杰
(1.中國科學院國家空間科學中心北京100190;2.中國科學院大學北京100049)
基于C#的超聲數據采集系統上位機軟件設計
李鳴謙1,2,藍若明1,2,翟光杰1
(1.中國科學院國家空間科學中心北京100190;2.中國科學院大學北京100049)
基于提高超聲數據采集系統的穩定性和數據采集效率的目的,利用C#語言編寫上位機軟件從而將數據通過CH375接口進行讀取、轉換、存儲并實時顯示。通過使用Visual Studio 2013.NET編程環境中Thread類聯合CH375動態鏈接庫,大大提高程序運行效率。測試結果表明,系統各項功能運行良好,界面友好,提高了數據采集效率,為今后類似的數據采集系統的研發和設計提供參考。
C#語言;USB接口;CH375;數據采集
傳統的RS-232由于接口電路簡單、編程容易,得到廣泛運用,但其最大通信速度僅達到115.2 kb/s。隨著超聲技術的不斷發展,采集的數據量也在不斷的加大,這個速度不能滿足高速數據通信的需求。而USB(通用串行總線)在速度上具有RS-232無法匹敵的優勢,USB2.0達到480Mbits/s的傳輸速度,大有取代傳統RS-232的趨勢[1]。
針對實驗室現有的超聲換能器硬件電路,本文詳細介紹了基于CH375芯片的USB接口與上位機(計算機)通信的設計方法和技巧。
采用C#語言編寫上位機程序,實現上位機對超聲換能器硬件電路的讀寫控制,并對采集數據進行轉換、存儲、繪圖等處理。
CH375是由南京沁恒有限公司生產的USB總線通用接口芯片。支持主機方式和設備方式,并可動態切換主機和設備方式。本文中對CH375的操作是采用命令加數據的I/O操作方式,任何操作都是由上位機軟件先發命令給CH375,然后再執行數據輸入輸出。CH375接收到命令或數據后,以中斷方式通知下位機[2-4]。中斷處理流程如圖1。
CH375在計算機端提供了應用層接口,是由CH375動態鏈接庫DLL提供的面向功能應用的API。CH375動態鏈接庫提供的API包括:設備管理API、數據傳輸API、中斷處理API等。由于CH375DLL.DLL中API函數很多,本程序只用到了部分函數,主要介紹如下:
①CH375OpenDevice(UInt32 iIndex)。打開設備,返回句柄,出錯則無效;iIndex指定CH375設備序號,0對應第一個設備。
② CH375ResetDevice(UInt32 iIndex)。 復 位USB設備。
③ CH375WriteData(UInt32 iIndex, byte[]iBuffer,UInt32[]ioLength)。寫出數據塊。
④ CH375ReadData(UInt32 iIndex, byte[]oBuffer,UInt32[]ioLength)。讀取數據塊。
⑤CH375QueryBufUpload(UInt32 iIndex)。查詢內部上傳緩沖區中的已有數據包個數,成功返回數據包個數,出錯返回-1。
⑥ CH375CloseDevice(UInt32 iIndex)。 關 閉CH375設備。

圖1 中斷處理流程
上位機通過USB接口芯片CH375獲取下位機采集的數據,主要通過現場可編程門陣列(FPGA)的控制來實現[5]。因此在上位機與FPGA中要事先約定好通信協議,讓FPGA知道從上位機傳來的哪些命令。
數據包的格式為:包頭+包長+功能碼+數據+校驗和。
建立好通信協議后,當FPGA接收到從上位機發出的命令,則執行相應的操作,否則FPGA則一直處于等待狀態;當接收到新的命令后,FPGA將中斷當前操作,轉而執行新的命令操作。
本系統上位機軟件的任務是:通過CH375芯片與下位機進行通信,完成數據采集工作并對數據進行適當處理后,進行數據存儲與顯示。本上位機軟件是在Windows 7操作系統下Visual Studio 2013.NET編程環境中使用C#語言編程完成,通過調用CH375制造商提供的設備方式下的標準驅動CH375WDM.INF和動態鏈接庫:CH375DLL.DLL,通過加載驅動信息可以在應用程序中直接調用動態鏈接庫[6-9]。
上位機軟件的主要功能結構圖如圖2所示。主要實現了如下功能。

圖2 上位機軟件結構圖
1)設備管理。主要實現對下位機的控制操作。主要包括以下功能:
①設備打開。執行命令時,程序調用API函數CH375OpenDevice,用來對該設備進行進一步訪問。
②設備復位。程序調用CH375ResetDevice函數實現對設備的復位,方便下一次操作;
③參數設定。向下位機寫入數據,使下位機調整超聲換能器工作參數。
④數據讀取。數據讀取是該軟件中的重要部分,其算法的優劣決定了該軟件的有效性及實用性。執行讀取操作時,上位機軟件向CH375發送讀取命令,同時啟動監聽線程。CH375將該命令發送給下位機,下位機進行數據采集并發送上傳請求。監聽線程收到后,通知上位機收集數據[10-13]。
⑤設備關閉。當實驗完成后,程序調用API函數CH375CloseDevice對設備進行關閉操作,方便下一次實驗的進行。
2)數據管理。主要實現驗證數據讀取的正確性,存儲數據并實時顯示。該部分主要包含以下功能:
①數據處理。主要是數據轉換和驗證數據讀取的正確性。數據轉換是將以16進制浮點數形式傳遞的原始數據轉換為10進制浮點數,便于對數據的查看和分析;在驗證讀取數據正確性的時候,直接判斷整包校驗和即可,若不正確則當錯誤幀處理。為了提高程序的執行效率以及便于程序的維護和開發,將校驗和設置為雙份,這樣便不用整包檢驗,只需要對比雙份校驗和是否相等即可,有效地提高了程序的執行效率。
②數據存儲。
③數據顯示。由于C#繪圖過于繁瑣,所以上位機軟件借助于TeeChart插件進行波形的繪制。
由于Visual Studio 2013.NET集成了大量實用類庫,本系統上位機軟件進行編程時,可使用Thread類來進行多線程編程,輕松完成編程工作。部分核心代碼如下:

為保證線程間的數據能正確傳遞,通常要采用全局變量;跨線程調用數據時,要采用委托的方法,避免多線程編程的復雜性破壞控件狀態。


上位機程序流程如圖3。

圖3 上位機程序流程
本系統上位機軟件經過長期運行,數據采集情況正常,能夠正確讀取下位機采集數據并按規定格式處理,擁有較好的數據采集效率,達到了設計預期的要求。軟件界面效果圖如圖4。

圖4 上位機軟件界面
文中介紹了一種針對實驗室現有的基于CH375和超聲換能器FPGA電路的數據采集上位機軟件設計方法,詳細分析了上位機與下位機之間的通信原理,并討論了上位機軟件設計的關鍵技術。經過長期測試,本文所設計的上位機軟件性能穩定、操作簡便,較好的滿足了數據采集系統對上位機軟件的要求[14-17]。
[1]童洪潔,李寶華.USB上位機程序開發與設計[J].儀器儀表用戶,2005,12(1):52-53.
[2]胡榮強,郝艷杰,唐盛.USB接口在數據采集系統中的應用[J].微計算機信息,2005,21(1):51-52.
[3]智兆華,張鵬.USB接口芯片CH375的原理及應用[J].今日電子,2005(8):74-75.
[4]湯劍靈,高玉.USB通信芯片CH375在數據交換中的應用[J].電子工程師,2007,33(10):61-63.
[5]蔡江洪,史小軍,朱為,等.利用FT245BM實現FPGA與PC機的USB通訊[J].電子器件.2005,28(1):132-137.
[6]張立.C#程序設計編程經典[M].北京:清華大學出版社,2008.
[7]安榮,任勇峰,李圣昆.基于FPGA和USB2.0的數據采集系統[J].儀表技術與傳感器,2009(3):49-51.
[8]李朋勃,張洪平.基于FPGA和USB2.0的高速數據采集系統[J].電子技術應用,2009(10):109-112.
[9]唐崇華.基于C#的數據采集組件的設計與實現[J].軟件導刊,2013(2):103-105.
[10]韓梅,崔海全.基于C#液位數據采集與處理軟件的設計[J].工業控制計算機,2012,25(11):6-8.
[11]梁佳,張帥.基于MSP430和C#的數據采集系統開發[J].電子科技,2011,24(10):115-118.
[12]甘亞鵬,方磊.基于C#的ADC數據采集上位機[J].計算機光盤軟件與應用,2014(13):67-68.
[13]徐泰,劉慶華,申繼鵬,等.基于C#的數據處理與分析的上位機軟件設計[J].電腦編程技巧與維護,2015(5):19-21.
[14]高飛,湯志祥,李自強,等.智能數據采集與分析系統[J].儀表技術與傳感器,2007(9):44-45.
[15]孟強,徐慧,萬青苗.基于STM32的數據采集及顯示系統的設計[J].電腦知識與技術,2013(5):3183-3186.
[16]李楠,宋曉梅,鞏學芳.一種支持USB和以太網端口的數據采集器設計[J].西安工程大學學報,2014,28(5):593-597.
[17]王愛華.基于快速數據分組處理方法的改進研究[J].重慶師范大學學報:自然科學版,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稿件編號:201601077
李鳴謙(1991—),男,安徽阜陽人,碩士研究生。研究方向:計算機技術。