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

?

基于BB60C的IQ數(shù)據(jù)采集與存儲系統(tǒng)設(shè)計

2019-04-04 01:46江弘杰賈維敏
現(xiàn)代電子技術(shù) 2019年2期
關(guān)鍵詞:函數(shù)庫虛擬儀器

江弘杰 賈維敏

關(guān)鍵詞: BB60C; 虛擬儀器; IQ數(shù)據(jù)采集; 存儲方案; 函數(shù)庫; 雙緩沖技術(shù)

中圖分類號: TN919?34; TP274 ? ? ? ? ? ? ? ? ?文獻標(biāo)識碼: A ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2019)02?0147?03

Design of IQ data acquisition and storage system based on BB60C

JIANG Hongjie, JIA Weimin

(Rocket Force University of Engineering, Xian 710025, China)

Abstract: An IQ data acquisition and storage scheme is designed taking the BB60C product of Signal Hound Company as the main hardware, so as to design a virtual instrument with high performance and broad application. Data acquisition relies on the API function library of the BB60C. Data storage relies on the SQL database. The double buffering technology is adopted to conduct batch data plotting by means of the Visual Studio control. A large quantity of data can be obtained conveniently and rapidly by means of the API function library, which has a high accuracy. The call of the SQL database can ensure the storage rate of the data. Some notes collected during the long?term development process, technologies that can be adopted, and part of core codes attached can facilitate the latter deep development and utilization of the module.

Keywords: BB60C; virtual instrument; IQ data acquisition; storage scheme; function library; double buffering technology

隨著信息科學(xué)的不斷發(fā)展,國內(nèi)外不斷涌現(xiàn)出各種各樣的儀器用于數(shù)字信號處理。但是主流還是以虛擬儀器為主,廠家只是負責(zé)將硬件做得盡可能完善,具體功能交由程序員完成。而當(dāng)前在該領(lǐng)域較為領(lǐng)先的是Signal Hound公司的BB60C產(chǎn)品,該產(chǎn)品具備數(shù)據(jù)處理精度高、開發(fā)域廣、便攜等優(yōu)點,非常適用于工程中項目的開發(fā)[1?5]。

1 ?硬件構(gòu)成及注意事項

鑒于精度要求,本文采用Signal Hound公司的BB60C產(chǎn)品作為硬件的主要模塊,該模塊相比于同類產(chǎn)品,主要有以下幾點特性:

1) 采用USB 3.0連接,既能快速獲得大量IQ數(shù)據(jù)[6],也能滿足供電要求,無需單獨供電;

2) 對應(yīng)豐富易用的應(yīng)用程序編程接口(API),便于開發(fā)員盡快熟悉;

3) 后續(xù)還可利用該模塊進行頻譜分析或頻譜監(jiān)測。

在搭建硬件平臺時,首先在自己的電腦上安裝對應(yīng)系統(tǒng)的驅(qū)動,目前該公司提供的最新的驅(qū)動為CDM v2.12.00 WHQL Certified。要求計算機操作系統(tǒng)為Windows 7/8/10,以保證高速大量數(shù)據(jù)(高達每秒4×107個IQ樣本)的處理速度。處理器要求至少為第三代或更新的英特爾i系列雙/四核處理器。計算機自帶USB 3.0接口。此外,若要進行存儲操作,提前確保內(nèi)存空間足夠,避免發(fā)生不必要的錯誤。

2 ?軟件設(shè)計

作為虛擬儀器,在某種程度上,軟件的設(shè)計就能夠決定整套系統(tǒng)的性能,因為硬件在生產(chǎn)定型之后,功能已經(jīng)固化,而軟件的設(shè)計才是產(chǎn)品最終的衡量標(biāo)準(zhǔn)[7?9]。

2.1 ?Visual C#開發(fā)環(huán)境設(shè)置

鑒于C#是微軟主推的面向?qū)ο蟮恼Z言,且據(jù)StackOverFlow的年度調(diào)查顯示,C#語言的受歡迎程度僅次于Java語言,這里就選擇C#進行軟件開發(fā)。首先,為使軟件可以調(diào)用API函數(shù)庫,需要C#連接Signal Hound提供的動態(tài)鏈接庫(bb_api.dll)和API庫(bb_api.lib)。具體方法是:將提供的bb_api.dll、bb_api.lib以及ftd2xx.dll鏈接庫拷貝至項目工程的bin子文件夾下的Debug子文件夾中。然后需要添加API頭文件(bb_api.h),該過程需要在C#窗體應(yīng)用程序中進行,在解決方案資源管理器中右擊項目工程,選擇添加現(xiàn)有項,然后將bb_api.h選中即可。

2.2 ?數(shù)據(jù)庫存儲與CSV文件

對于數(shù)據(jù)存儲的操作方式有許多,這里主要介紹SQL,即Structured Query Language(結(jié)構(gòu)化查詢語言)。SQL是專門為數(shù)據(jù)庫而建立的操作命令集,因此,它的功能強大、簡單易學(xué)且使用方便,此外,現(xiàn)在幾乎所有的數(shù)據(jù)庫均支持SQL[10?12]。下面介紹的是Visual Studio(VS)連接SQL數(shù)據(jù)庫并存儲數(shù)據(jù)的過程。首先,需要下載安裝數(shù)據(jù)庫,然后以Windows身份驗證方式登錄SQL Server Management Studio,在添加個人登錄名并在配置管理器中啟用TCP/IP協(xié)議后,即可通過VS軟件在數(shù)據(jù)庫中新建個人的數(shù)據(jù)庫并進行后續(xù)的存儲操作。在這些動作完成后,可以通過打開SQL里面的表格,直觀地看到操作后表格的內(nèi)容。主要的存儲操作包括:將SqlConnection類實例化后用open語句連接自己創(chuàng)建的數(shù)據(jù)庫;分別將“create table”與“alter table”語句,寫入SqlCommand命令字符串,以此實現(xiàn)表格的創(chuàng)建與數(shù)據(jù)的插入動作;鑒于每次都是批量數(shù)據(jù)的插入,調(diào)用SqlBulkCopy類,一次插入一個數(shù)組;存儲完成后,關(guān)閉與數(shù)據(jù)庫的連接,釋放占用資源。

此外,若是存儲次數(shù)不高的話,完全可以通過StreamWriter語句,將數(shù)據(jù)保存為.CSV文件(逗號分隔值文件格式)。該文件是以純文本形式存儲表格數(shù)據(jù),且對數(shù)據(jù)量沒用要求,因此對于存儲操作或者后期查看數(shù)據(jù)都非常方便。

2.3 ?雙緩沖技術(shù)與Measurement Studio

在采集完數(shù)據(jù)后,需要將數(shù)據(jù)以表格的形式表現(xiàn)在窗體內(nèi)。最簡單的操作就是將工具箱內(nèi)的PictureBox直接拉到界面上,然后在PictureBox上按比例畫坐標(biāo)軸并繪圖。由于每次繪制數(shù)據(jù)多且繪制次數(shù)頻繁,往往會造成閃爍現(xiàn)象,這時就需要用到雙緩沖技術(shù),即把圖形先繪制到緩沖區(qū),然后一次性繪制到PictureBox上。具體操作分為5步:引用BufferedGraphicsContext類并實例化;調(diào)用BufferedGraphicsContext.Allocate方法創(chuàng)建BufferedGraphics類的實例;通過設(shè)置BufferedGraphics.Graphics屬性,將圖形繪制到圖形緩沖區(qū);緩沖完成后,調(diào)用BufferedGraphics.Render方法將緩沖區(qū)的內(nèi)容繪制到PictureBox上;繪圖完成后,對BufferedGraphics的實例對象調(diào)用Dispose方法,以此釋放系統(tǒng)資源[13?15]。

上述方法思路簡單,但是繪圖操作較為復(fù)雜,在實踐過程中,還可嘗試使用NI公司專門開發(fā)的Measurement Studio編程平臺。該工具可以通過插入的方式內(nèi)嵌到VS軟件中,然后通過在工具箱內(nèi)以添加選項卡的方式,將圖表插入窗體,具體的使用方法可通過例程學(xué)習(xí)熟悉,這里就不再多做介紹。

2.4 ?多線程數(shù)據(jù)采集與存儲軟件設(shè)計

IQ數(shù)據(jù)的實時高速獲取與存儲,一方面要求系統(tǒng)不停獲取由API函數(shù)輸出的數(shù)據(jù);另一方面又要盡快將數(shù)據(jù)以圖像的形式展現(xiàn)在界面上,或者將數(shù)據(jù)存儲到數(shù)據(jù)庫中,這些動作必須同時進行,否則會造成數(shù)據(jù)溢出丟失。為此,利用Thread語句定義多個線程,各線程相互之間互相配合,流程見圖1。

圖1中,主線程IQ_data_process用于獲取IQ數(shù)據(jù),IQ_paint_process線程用于每次獲取數(shù)據(jù)后立刻將其繪制到界面上,IQ_save_process線程用于存儲模式下,數(shù)據(jù)及時存儲于數(shù)據(jù)庫中,鑒于繪圖線程與存儲線程占用過多內(nèi)存,建議兩者不要同時進行。

2.5 ?軟件實現(xiàn)

鑒于篇幅所限,這里給出程序中的部分核心代碼。

1) 調(diào)用bb_api.h頭文件,獲取IQ數(shù)據(jù)

status = bb_api.bbGetIQUnpacked(id, iqData, iqCount, triggers, triggerCount, purge, ref dataRemaining, ref sampleLoss, ref sec, ref nano); ? ? ? ? ? ? ? ? ? ? ? ? //其中iqData為所需的IQ數(shù)組

2) 數(shù)據(jù)庫建表完成后,批量存儲數(shù)據(jù)

using(SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(group[0], SqlBulkCopyOptions.UseInternalTransaction))

//group[0]為連接SQL字符串

{ ? ? ?try ? ? ?{

sqlBulkCopy.DestinationTableName = group[1];

//group[1]為表名

sqlBulkCopy.BatchSize = batchSize; ? //一次事務(wù)插入的行數(shù)

for (int i = 0; i < sourceDataTable.Columns.Count; i++)

{

sqlBulkCopy.ColumnMappings.Add(sourceDataTable.Columns[i].ColumnName, sourceDataTable.Columns[i].ColumnName);

//將數(shù)據(jù)先寫入sqlBulkCopy中

} ? ? ? ? ?sqlBulkCopy.WriteToServer(sourceDataTable);

//將數(shù)據(jù)寫入SQL服務(wù)器

} ? ? ? catch (Exception ex)

{

MessageBox.Show(ex.ToString()); ? ? ? ? ? //異常拋出

} ? ? }

3) 雙緩沖技術(shù)繪圖

BufferedGraphicsContext current = BufferedGraphicsManager.Current; ? ? ? ?//獲得對 BufferedGraphicsContext 類的實例的引用

BufferedGraphics bg;

bg = current.Allocate(pictureBox1.CreateGraphics(), pictureBox1.DisplayRectangle); ? ? ? ? //創(chuàng)建 BufferedGraphics 類的實例

Graphics g = bg.Graphics; ? ? ? ? //將圖形繪制到圖形緩沖區(qū)

PaintImage(g); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //繪圖

bg.Render(pictureBox1.CreateGraphics());

//完成圖形緩沖區(qū)中的繪制后,將緩沖區(qū)的內(nèi)容呈現(xiàn)到

指定的繪圖圖面pictureBox1

bg.Dispose(); ? ?//完成呈現(xiàn)圖形之后,對實例釋放系統(tǒng)資源

3 ?性能評估

為了驗證該系統(tǒng)的性能,對數(shù)據(jù)采集、數(shù)據(jù)庫存儲以及畫圖顯示功能進行了測試和分析。在測試中,使用自行設(shè)計的信號源(簡單的鋸齒波信號),模擬硬件接收到的信號。將該信號分別接入示波器與設(shè)計的軟件后,發(fā)現(xiàn)軟件顯示的圖像與示波器顯示的圖像并無差異,證明數(shù)據(jù)采集以及信號顯示并無問題。而后,在一段時間內(nèi)(30 s內(nèi)),打開數(shù)據(jù)庫存儲線程,同時對示波器進行錄像,數(shù)據(jù)庫存儲完成后,調(diào)用存儲的數(shù)據(jù)進行畫圖,并與錄像進行對比,結(jié)果仍一樣。由此,可以判定該系統(tǒng)在IQ數(shù)據(jù)采集與存儲方面可以正常工作。但是由于缺少大存儲介質(zhì),無法驗證對于長時間的數(shù)據(jù)存儲是否會發(fā)生故障。

4 ?結(jié) ?語

本文介紹的數(shù)據(jù)采集與存儲方案主要是基于BB60C硬件的軟件開發(fā)方案,在達到硬件每秒處理產(chǎn)生4×107個IQ樣本的基本要求的基礎(chǔ)上,完成數(shù)據(jù)的顯示與存儲功能,后期經(jīng)FFT變換,即可用于頻譜分析。文中對于開發(fā)過程進行詳細的描述,并給出了核心代碼,便于后續(xù)開發(fā)。

參考文獻

[1] 楊宇宸,向海生.一種高速數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)[J].雷達科學(xué)與技術(shù),2016,14(5):526?530.

YANG Yuchen, XIANG Haisheng. Design and implementation of high speed data acquisition system [J]. Radar science and technology, 2016, 14(5): 526?530.

[2] 連杰,田小超.基于STM32的高精度、大容量、多通道同步數(shù)據(jù)采集存儲系統(tǒng)的設(shè)計[J].電子制作,2015(7):28.

LIAN Jie, TIAN Xiaochao. Design of high precision, large capacity and multi?channel synchronous data acquisition and storage system based on STM32 [J]. Practical electronics, 2015(7): 28.

[3] 韋偉.基于FPGA的高速數(shù)據(jù)采集與存儲設(shè)備的實現(xiàn)[D].西安:西安電子科技大學(xué),2014.

WEI Wei. Implementation of high speed data acquisition and storage equipment based on FPGA [D]. Xian: Xidian University, 2014.

[4] 王楊云逗,李斌,亓亮.基于單片機的高精度海量數(shù)據(jù)采集與存儲系統(tǒng)[J].現(xiàn)代電子技術(shù),2013,36(8):128?129.

WANG Yangyundou, LI Bin, QI Liang. High accuracy mass data acquisition and storage system based on single chip microcomputer [J]. Modern electronics technique, 2013, 36(8): 128?129.

[5] 汪志剛.大容量數(shù)據(jù)采集存儲系統(tǒng)的研究與實現(xiàn)[D].成都:電子科技大學(xué),2010.

WANG Zhigang. Research and implementation of large capacity data acquisition and storage system [D]. Chengdu: University of Electronic Science and Technology of China, 2010.

[6] National Instruments. What is I/Q data? [EB/OL]. [2018?09?12]. http://www.ni.com/tutorial/4805/en/.

[7] 李欣,謝宏.虛擬儀器技術(shù)在通信原理教學(xué)中的應(yīng)用[J].實驗室研究與探索,2014,33(5):155?159.

LI Xin, XIE Hong. Application of virtual instrument technology in communication principle teaching [J]. Research and exploration in laboratory, 2014, 33(5): 155?159.

[8] 王超,李可,杜奔新.虛擬儀器技術(shù)在實驗室的應(yīng)用研究[J].實驗技術(shù)與管理,2013,30(12):105?107.

WANG Chao, LI Ke, DU Benxin. Research on application of virtual instrument technology in laboratories [J]. Experimental technology and management, 2013, 30(12): 105?107.

[9] 伍星華,王旭.國內(nèi)虛擬儀器技術(shù)的應(yīng)用研究現(xiàn)狀及展望[J].現(xiàn)代科學(xué)儀器,2011(4):112?116.

WU Xinghua, WANG Xu. Present situation and prospect of application research on domestic virtual instrument technology [J]. Modern scientific instruments, 2011(4): 112?116.

[10] 王巖.基于SQL數(shù)據(jù)庫的性能優(yōu)化探討[J].通訊世界,2015(22):221.

WANG Yan. Research on performance optimization based on SQL database [J]. Telecom world, 2015(22): 221.

[11] 余鵬.基于SQL數(shù)據(jù)庫的性能優(yōu)化研究[J].中國科技信息,2014(2):76?77.

YU Peng. Research on performance optimization based on SQL database [J]. Chinese science and technology information, 2014(2): 76?77.

[12] 肖念.淺析SQL數(shù)據(jù)庫的設(shè)計[J].計算機光盤軟件與應(yīng)用,2013,16(6):201?202.

XIAO Nian. Analysis of the design of SQL database [J]. Computer CD software and applications, 2013, 16(6): 201?202.

[13] 江建國,溫少營,張瑞楠.基于雙緩沖技術(shù)的GDI+無閃爍繪圖[J].計算機應(yīng)用,2012,32(z2):136?139.

JIANG Jianguo, WEN Shaoying, ZHANG Ruinan. Flicker?free GDI+ drawing based on double buffering [J]. Journal of computer applications, 2012, 32(S2): 136?139.

[14] 周建伙,顧申申.基于Visual C#和Measurement Studio混合編程的數(shù)據(jù)采集分析和繪圖軟件[J].工業(yè)控制計算機,2015,28(9):24?25.

ZHOU Jianhuo, GU Shenshen. Data collection and graphing software based on Visual C# and Measurement Studio [J]. Industrial control computer, 2015, 28(9): 24?25.

[15] 張兵,楊岳.基于Visual C#和Measurement Studio融合的虛擬示波器設(shè)計開發(fā)[J].企業(yè)技術(shù)開發(fā),2010,29(1):6?7.

ZHANG Bing, YANG Yue. The virtual oscilloscope development based on the integration of Visual C# and Measurement Studio [J]. Technological development of enterprise, 2010, 29(1): 6?7.

猜你喜歡
函數(shù)庫虛擬儀器
用于優(yōu)化雷達信號處理的VSIPL函數(shù)庫
基于Python的開源GIS應(yīng)用開發(fā)
Scratch求最值和平均值
Android系統(tǒng)架構(gòu)及應(yīng)用程序開發(fā)探索
PCB 刻制機功能開發(fā)及在虛擬儀器實驗室建設(shè)中的應(yīng)用
虛擬儀器及其在電工電子實驗中的應(yīng)用
一種基于虛擬儀器的電控柴油機實驗臺的設(shè)計
虛擬儀器技術(shù)在農(nóng)業(yè)裝備測控中的應(yīng)用
基于虛擬儀器的DMFC實時監(jiān)控系統(tǒng)
構(gòu)建基于24XX系列存儲器通用函數(shù)庫的研究