国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C#的超聲數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件設(shè)計(jì)

2017-12-01 00:34:04李鳴謙藍(lán)若明翟光杰
電子設(shè)計(jì)工程 2017年22期
關(guān)鍵詞:機(jī)軟件下位上位

李鳴謙,藍(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ǔ)、繪圖等處理。

1 通信原理介紹

1.1 CH375芯片簡(jiǎn)介

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 中斷處理流程

1.2 FPGA與上位機(jī)之間的通信協(xié)議

上位機(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í)行新的命令操作。

2 上位機(jī)軟件設(shè)計(jì)

本系統(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]。

2.1 軟件結(jié)構(gòu)設(shè)計(jì)

上位機(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)行波形的繪制。

2.2 程序流程設(shè)計(jì)

由于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ī)程序流程

3 運(yùn)行效果及軟件界面

本系統(tǒng)上位機(jī)軟件經(jīng)過長(zhǎng)期運(yùn)行,數(shù)據(jù)采集情況正常,能夠正確讀取下位機(jī)采集數(shù)據(jù)并按規(guī)定格式處理,擁有較好的數(shù)據(jù)采集效率,達(dá)到了設(shè)計(jì)預(yù)期的要求。軟件界面效果圖如圖4。

圖4 上位機(jī)軟件界面

4 結(jié) 論

文中介紹了一種針對(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ù)。

猜你喜歡
機(jī)軟件下位上位
發(fā)射機(jī)房監(jiān)控系統(tǒng)之下位機(jī)
特斯拉 風(fēng)云之老阿姨上位
車迷(2018年12期)2018-07-26 00:42:22
“三扶”齊上位 決戰(zhàn)必打贏
基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
道岔監(jiān)測(cè)系統(tǒng)上位機(jī)軟件設(shè)計(jì)
景洪電廠監(jiān)控系統(tǒng)下位機(jī)數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
圍觀黨“下位”,吐槽帝“登基”
基于正交試驗(yàn)法的北斗用戶機(jī)軟件測(cè)試用例設(shè)計(jì)
PCI-e高速數(shù)據(jù)采集卡的驅(qū)動(dòng)與上位機(jī)軟件設(shè)計(jì)
電子器件(2015年5期)2015-12-29 08:43:12
以新思路促推現(xiàn)代農(nóng)業(yè)上位
庄河市| 固原市| 洪雅县| 马龙县| 广丰县| 银川市| 仁怀市| 岑巩县| 阿鲁科尔沁旗| 临汾市| 大冶市| 游戏| 崇仁县| 达日县| 杨浦区| 安阳县| 南漳县| 安陆市| 阳东县| 田阳县| 枝江市| 三明市| 泰宁县| 建瓯市| 余姚市| 承德市| 正宁县| 平罗县| 鄱阳县| 临猗县| 宜宾县| 漳平市| 紫阳县| 南昌县| 贺兰县| 海伦市| 新乡县| 淳化县| 调兵山市| 卢氏县| 西华县|