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

基于LabWindows/CVI的數(shù)據(jù)播放器設(shè)計(jì)與實(shí)現(xiàn)

2012-09-26 02:28:06陳懷民馬更生吳佳楠
電子設(shè)計(jì)工程 2012年22期
關(guān)鍵詞:界面設(shè)計(jì)

陳懷民,馬更生,吳佳楠

(西北工業(yè)大學(xué) 無人機(jī)特種技術(shù)重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710065)

在半物理仿真實(shí)驗(yàn)中,我們經(jīng)常需要對(duì)保存的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行回放研究。像串口調(diào)試助手、網(wǎng)絡(luò)調(diào)試助手等軟件雖然可以對(duì)數(shù)據(jù)文件進(jìn)行讀取和發(fā)送,然而它們僅僅是對(duì)整個(gè)文件內(nèi)的數(shù)據(jù)進(jìn)行整體發(fā)送,而無法按我們的需求進(jìn)行一幀一幀的發(fā)送。通常我們自己開發(fā)的用于數(shù)據(jù)研究的軟件也只是針對(duì)某一特定的數(shù)據(jù)文件進(jìn)行讀取,數(shù)據(jù)文件內(nèi)變量個(gè)數(shù)以及類型的改變,都要導(dǎo)致對(duì)軟件的源程序進(jìn)行修改,這樣就很繁瑣,并且對(duì)其他人員的使用、修改造成了一定的困難。

為了解決這一問題,利用LabWindows/CVI開發(fā)環(huán)境設(shè)計(jì)了數(shù)據(jù)播放器,可以按照實(shí)驗(yàn)時(shí)的真實(shí)采樣過程,將實(shí)驗(yàn)數(shù)據(jù)發(fā)送出去,再現(xiàn)實(shí)驗(yàn)過程,可反復(fù)對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行研究。通過使用ini配置文件的方式做到了通用,只需對(duì)ini文件進(jìn)行簡單的相應(yīng)修改,就可以播放不同格式不同數(shù)據(jù)量的文件,而無需對(duì)源程序進(jìn)行修改。同時(shí)由于LabWindows/CVI可以生成MSI格式的發(fā)布(安裝)文件,可以將編制好的應(yīng)用程序轉(zhuǎn)化為發(fā)布文件,這樣可以脫離LabWindows/CVI的開發(fā)環(huán)境,將發(fā)布程序安裝到任何一臺(tái)計(jì)算機(jī)上[1]。

1 數(shù)據(jù)播放器軟件功能

結(jié)合所需功能,在LabWindows/CVI下搭建數(shù)據(jù)播放器界面如圖1所示。

圖1 數(shù)據(jù)播放器界面圖Fig.1 Interface chart of the data player

采用配置文件即ini文件的形式對(duì)UDP通信和數(shù)據(jù)文件的信息進(jìn)行讀取。為了便于對(duì)ini文件的修改,設(shè)置了“打開配置文件”按鈕,可以方便的打開ini文件對(duì)其進(jìn)行修改,然后將其載入。選擇相應(yīng)的數(shù)據(jù)文件,即可進(jìn)行播放,數(shù)據(jù)可以按真實(shí)實(shí)驗(yàn)時(shí)的傳輸過程,將數(shù)據(jù)按采樣間隔發(fā)送出去。為了便于對(duì)數(shù)據(jù)播放位置的調(diào)整,設(shè)置了進(jìn)度條即CVI中的滾動(dòng)條控件,不僅可以顯示數(shù)據(jù)的播放進(jìn)度,而且可以通過對(duì)滾動(dòng)條的拖動(dòng)改變數(shù)據(jù)的播放位置。

2 ini文件的配置和載入

ini文件是Initialization file的縮寫,即初始化文件,不僅一般的應(yīng)用程序可以使用ini文件,其實(shí)windows操作系統(tǒng)也有自己的ini文件:win.ini,保存在Windows目錄下,Windows通過該文件對(duì)當(dāng)前操作系統(tǒng)進(jìn)行配置[2]。

ini文件將各種數(shù)據(jù)分成很多以“[]”組成的節(jié),而在每一節(jié)中又包含了很多項(xiàng)目,項(xiàng)后面緊跟著一個(gè)等號(hào),等號(hào)后面則是該項(xiàng)的值。實(shí)際上,ini文件中數(shù)據(jù)的存取是采用預(yù)先約定好的“項(xiàng)目=值”存儲(chǔ)結(jié)i構(gòu),各種數(shù)據(jù)被分門別類的存儲(chǔ)。ini文件的通用格式可以總結(jié)為:

在設(shè)計(jì)中將UDP通信的信息以及數(shù)據(jù)的相關(guān)信息寫入ini文件,使用中只需對(duì)ini文件進(jìn)行簡單的相應(yīng)改動(dòng)就可以讀取不同的數(shù)據(jù)文件。ini文件的設(shè)置如下:

其中在NetworkConfig中設(shè)置UDP通信的相關(guān)信息,如本地IP、本地端口號(hào)、對(duì)方IP、對(duì)方端口號(hào)。在DataConfig中按照數(shù)據(jù)文件的具體信息,在Key中填寫數(shù)據(jù)名稱,如“variable1”。 KeyValue 中 填 寫 變 量 的 格 式 , 如 “double”、“float”、“int”。各變量的排列順序完全按照數(shù)據(jù)文件內(nèi)變量的排列順序。在OtherConfig中設(shè)置幀間隔(即數(shù)據(jù)的采樣間隔)和數(shù)據(jù)的存放格式。由于數(shù)據(jù)的相關(guān)信息都是已知的,所以對(duì)ini文件的修改非常容易。

對(duì)NetworkConfig和OtherConfig中的信息進(jìn)行載入相對(duì)簡單,不再贅述。對(duì)數(shù)據(jù)變量及數(shù)據(jù)類型的載入,定義結(jié)構(gòu)體:

在載入ini文件的過程中,根據(jù)[DataConfig]中變量的多少建立數(shù)據(jù)變量的動(dòng)態(tài)鏈表[3],建立過程中對(duì)每個(gè)節(jié)點(diǎn)的成員進(jìn)行相應(yīng)賦值,datan用于區(qū)別變量在數(shù)據(jù)中的排列位置;dataname為變量的名稱;datatype為變量的數(shù)據(jù)類型;datalength為變量所占字節(jié)數(shù);同時(shí)我們還可以得到一幀數(shù)據(jù)總的字節(jié)數(shù)length。這些和真實(shí)數(shù)據(jù)的存儲(chǔ)都是相同的,這樣就保證了數(shù)據(jù)的播放和采樣接收時(shí)的情況完全相同。由于建立鏈表的程序較多,這里不再贅述。動(dòng)態(tài)鏈表的建立極大方便了數(shù)據(jù)的讀取和發(fā)送,對(duì)于數(shù)據(jù)變量的信息,只需按需要對(duì)鏈表進(jìn)行遍歷即可得到,而且有利于以后對(duì)軟件進(jìn)一步的升級(jí)。

3 數(shù)據(jù)文件的讀取

以ASCII格式的數(shù)據(jù)文件為例說明數(shù)據(jù)的讀取。對(duì)動(dòng)態(tài)鏈表進(jìn)行遍歷,判斷每個(gè)變量的數(shù)據(jù)類型,根據(jù)不同類型,分配不同的字節(jié)數(shù),將文件內(nèi)的數(shù)據(jù)按順序?qū)懭雰?nèi)存。程序流程圖如圖2所示。

圖2 數(shù)據(jù)文件讀取流程圖Fig.2 Flow chart of loading the data file

與ASCII格式的數(shù)據(jù)文件不同,二進(jìn)制數(shù)據(jù)文件的數(shù)據(jù)無需單個(gè)讀取,只需對(duì)鏈表進(jìn)行一次遍歷,分配適當(dāng)大小的內(nèi)存后一次性將文件內(nèi)數(shù)據(jù)全部寫入內(nèi)存。

4 數(shù)據(jù)發(fā)送

為了使得不同任務(wù)之間的協(xié)調(diào)操作與運(yùn)行、數(shù)據(jù)的交互等問題更加易于解決,程序中使用了異步定時(shí)器。不需要特殊的數(shù)據(jù)傳送機(jī)制,不需要建立共享存儲(chǔ)區(qū)或共享文件,這對(duì)于數(shù)據(jù)的讀取和發(fā)送增加了很多方便,同時(shí)增強(qiáng)了程序的靈活性。

異步定時(shí)器的創(chuàng)建:

timerid=NewAsyncTimer(playspeed, -1, 0, asynCB, 0);

timerid:控件句柄

playspeed:兩次事件的時(shí)間間隔,單位為秒

asynCB:自定義回調(diào)函數(shù),產(chǎn)生相當(dāng)于普通Timer控件的回調(diào)函數(shù)事件。

在回調(diào)函數(shù)asynCB中,要將數(shù)據(jù)中的一幀數(shù)據(jù)完整的經(jīng)過UDP傳輸:

data=malloc(length);

memcpy (data, &wave[scrollbarposition*length], length);

UDPWrite(writerChannel, targetport, targetip, data, length);

異步定時(shí)器的時(shí)間間隔設(shè)定為數(shù)據(jù)文件的采樣間隔,這樣對(duì)于數(shù)據(jù)接收方來說,接收數(shù)據(jù)播放器的數(shù)據(jù)就如同接收實(shí)時(shí)采集的數(shù)據(jù)一樣,完全可以模擬之前實(shí)驗(yàn)時(shí)的數(shù)據(jù)采集情況。

為了方便的顯示和調(diào)整文件的播放進(jìn)度,使用了CVI中的滾動(dòng)條控件,CVI中滾動(dòng)條可以通過兩種方式得到:一種是利用函數(shù)ScrollBar_Create[4][5]創(chuàng)建,另一種方式是利用函數(shù)ScrollBar_ConvertFromGraph將繪圖控件轉(zhuǎn)化為滾動(dòng)條。本設(shè)計(jì)選用的是第二種方式:

ScrollBar_ConvertFromGraph (panelHandle,PANEL_GRAPH_HORIZONTAL,scrollbarCB , NULL);

其中scrollbarCB是滾動(dòng)條的回調(diào)函數(shù),可以實(shí)時(shí)響應(yīng)播放進(jìn)度的變化并改變滾動(dòng)條的位置。

滾動(dòng)條有兩種顯示方式,分別為水平滾動(dòng)條和垂直滾動(dòng)條。本設(shè)計(jì)選用水平滾動(dòng)條。

通過函數(shù)ScrollBar_GetAttribute和ScrollBar_SetAttribute分別獲得和設(shè)置滾動(dòng)條的屬性值,包括滾動(dòng)條的最小值、最大值、滾動(dòng)條一次滾動(dòng)的大小、滾動(dòng)條是否與拖動(dòng)的數(shù)值成比例進(jìn)行設(shè)置,這些設(shè)置相對(duì)比較簡單。

滾動(dòng)條的函數(shù)面板在菜單的Library中并不存在,因此首先需要注意的是應(yīng)該裝載儀器驅(qū)動(dòng)[6],然后將所需的函數(shù)面板文件scroll.fp添加到當(dāng)前工程中。和滾動(dòng)條一樣,ini文件和異步定時(shí)器的函數(shù)面板文件inifile.fp、asynctmr.fp也要添加到當(dāng)前工程中。如圖3所示。

圖3 添加函數(shù)面板文件Fig.3 Chart of loading the.fp file

為了使不同的數(shù)據(jù)文件可以有更好的播放效果,設(shè)計(jì)了兩種播放方式。一種是改變播放間隔,采用這種方式可以使數(shù)據(jù)以自定義的速度發(fā)送出去,而且沒有數(shù)據(jù)的丟失,適用于采樣間隔較大、數(shù)據(jù)較少的數(shù)據(jù)文件;另一種是類似視頻播放器的方式,對(duì)數(shù)據(jù)的播放可以進(jìn)行“快進(jìn)”和“慢放”,快進(jìn)是對(duì)數(shù)據(jù)進(jìn)行抽點(diǎn)播放,慢放則是對(duì)數(shù)據(jù)進(jìn)行重復(fù)播放。

5 運(yùn)行結(jié)果

采用ASCII格式的文件testdata.dat,其中包含3個(gè)變量,變量一是幅值為4,周期1 s的正弦變量;變量二是幅值為3,周期2 s的余弦變量;變量三是幅值為1,周期為1 s的三角波變量,采樣周期為20 ms。

播放器運(yùn)行界面如圖4所示。

圖4 播放器運(yùn)行界面圖Fig.4 Interface chart of data player run

數(shù)據(jù)接收界面采用CVI設(shè)計(jì)的虛擬示波器。示波器接收界面如圖5所示。

圖5 數(shù)據(jù)接收界面圖Fig.5 Interface chart of the data receive

由圖4的運(yùn)行界面可以看到數(shù)據(jù)文件的相關(guān)信息,可以很清楚的知道播放進(jìn)度。由圖5中3個(gè)變量的波形可以得出,接收到的收據(jù)和數(shù)據(jù)文件內(nèi)的數(shù)據(jù)完全相同,說明數(shù)據(jù)播放器的設(shè)計(jì)是可用的。

6 結(jié)束語

以上基于LabWindows/CVI的數(shù)據(jù)播放器的設(shè)計(jì)與實(shí)現(xiàn),詳細(xì)介紹了ini文件的配置和載入,數(shù)據(jù)文件的讀取和發(fā)送,簡要介紹了異步定時(shí)器和滾動(dòng)條控件的使用。本設(shè)計(jì)的核心是ini文件的靈活配置以及對(duì)數(shù)據(jù)文件內(nèi)的變量進(jìn)行的動(dòng)態(tài)鏈表的建立。在讀取不同的數(shù)據(jù)文件時(shí),無需關(guān)注程序本身的修改,只需根據(jù)數(shù)據(jù)文件的具體信息對(duì)ini文件進(jìn)行簡單的配置即可,從而節(jié)省了很多繁瑣的修改程序的過程。

[1]宋宇峰.LabWindows/CVI逐步深入與開發(fā)實(shí)例[M].北京:機(jī)械工業(yè)出版社,2003.

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

[3]譚浩強(qiáng).C程序設(shè)計(jì)[M].3版.北京:清華大學(xué)出版社,2006.

[4]Nation Instruments Corportation.LabWindows/CVI Help[S].2006.

[5]劉君華.基于LabWindows/CVI的虛擬儀器設(shè)計(jì)[M].北京:電子工業(yè)出版社,2003.

[6]孫曉云,郭立煒,孫會(huì)琴.基于LabWindows/CVI的虛擬儀器設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2005.

猜你喜歡
界面設(shè)計(jì)
國企黨委前置研究的“四個(gè)界面”
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設(shè)計(jì)萌到家
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
空間界面
金秋(2017年4期)2017-06-07 08:22:16
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
電子顯微打開材料界面世界之門
人機(jī)交互界面發(fā)展趨勢研究
主站蜘蛛池模板: 亚洲欧洲天堂色AV| 久久96热在精品国产高清| 国产成熟女人性满足视频| 国产成人精品在线1区| 乱码国产乱码精品精在线播放| 亚洲天堂2014| 亚洲中久无码永久在线观看软件| 国产欧美精品一区二区| 人禽伦免费交视频网页播放| 国产一级毛片yw| 国产成人你懂的在线观看| 日韩麻豆小视频| 91色老久久精品偷偷蜜臀| 亚洲日韩精品欧美中文字幕| 色网站免费在线观看| 美女亚洲一区| 亚洲免费福利视频| 久久精品国产亚洲AV忘忧草18| 丁香六月激情综合| 国产啪在线| 茄子视频毛片免费观看| 久久天天躁狠狠躁夜夜2020一| 亚洲国产无码有码| 国产精品青青| 久久网综合| 日韩在线欧美在线| 亚洲va欧美ⅴa国产va影院| 制服丝袜无码每日更新| 亚洲天堂视频在线免费观看| 久久精品欧美一区二区| 香蕉国产精品视频| 国产亚洲精品97AA片在线播放| 亚洲精品国产成人7777| 九九香蕉视频| 国产麻豆va精品视频| 天天综合网色| 国产产在线精品亚洲aavv| 免费又爽又刺激高潮网址| 亚洲人成在线免费观看| 99精品福利视频| 色妺妺在线视频喷水| 国产女人在线视频| 国产日韩欧美黄色片免费观看| 日韩成人在线网站| 麻豆国产原创视频在线播放| 超碰免费91| 亚洲AV成人一区国产精品| 97国产在线观看| jizz国产在线| 国产视频你懂得| 国禁国产you女视频网站| 先锋资源久久| 精品久久国产综合精麻豆| 成人免费午夜视频| 欧美成人怡春院在线激情| 亚洲欧美不卡| 色综合网址| 国产网站黄| 亚洲色大成网站www国产| 欧美在线精品怡红院| 午夜日b视频| 亚洲高清日韩heyzo| 伊人激情综合网| 日韩视频免费| 99热这里只有精品免费国产| 九色综合伊人久久富二代| 成人国产精品网站在线看| 波多野结衣第一页| 精品五夜婷香蕉国产线看观看| 四虎AV麻豆| 国产一区二区三区夜色| 91九色最新地址| 国产va视频| 免费国产高清视频| 亚洲va精品中文字幕| 欧美日一级片| 青青草原国产精品啪啪视频| 狠狠亚洲婷婷综合色香| 国内精品久久久久久久久久影视| 99re这里只有国产中文精品国产精品| 亚洲第一色视频| 激情综合网址|