亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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)行簡(jiǎ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)行簡(jiǎ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ì)簡(jiǎn)單,不再贅述。對(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ì)比較簡(jiǎn)單。

        滾動(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é)束語(yǔ)

        以上基于LabWindows/CVI的數(shù)據(jù)播放器的設(shè)計(jì)與實(shí)現(xiàn),詳細(xì)介紹了ini文件的配置和載入,數(shù)據(jù)文件的讀取和發(fā)送,簡(jiǎn)要介紹了異步定時(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ǎn)單的配置即可,從而節(jié)省了很多繁瑣的修改程序的過程。

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

        [2]王建新,楊世鳳,隋美麗.LabWindows/CVI測(cè)試技術(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ì)
        國(guó)企黨委前置研究的“四個(gè)界面”
        何為設(shè)計(jì)的守護(hù)之道?
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        瞞天過?!律O(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ā)展趨勢(shì)研究
        国产一区二区三区4区| 曰欧一片内射vα在线影院| 久久人人妻人人做人人爽| 精品囯产成人国产在线观看| 一区二区三区少妇熟女高潮| 人妻精品视频一区二区三区| 亚洲av最新在线网址| 久久无码人妻一区=区三区| 丰满人妻一区二区三区免费| 亚洲精品国产精品乱码视色| 久久国产精品久久久久久| 欧美深夜福利网站在线观看| 91蜜桃精品一区二区三区毛片| 日韩在线观看入口一二三四| 又粗又粗又黄又硬又深色的| 无码人妻专区免费视频| 国产精品午夜高潮呻吟久久av | 免费国产在线精品一区| 少妇人妻真实偷人精品视频| 国产精品亚洲ΑV天堂无码| 91九色极品探花内射| 欧美69久成人做爰视频| 日韩AV不卡六区七区| 国产精品一区二区三区蜜臀| 日本一级特黄aa大片| 色噜噜狠狠一区二区三区果冻| 亚洲欧美国产日产综合不卡| 天堂网av在线免费看| 丰满的人妻hd高清日本| 成年视频国产免费观看| 最新国产主播一区二区| 精品人妻系列无码人妻漫画| 国产在线精品一区二区| 欧洲AV秘 无码一区二区三| 91成人黄色蘑菇视频| 亚洲成av人片在线观看麦芽| 青青国产成人久久91| 日本精品一区二区三区试看 | 亚洲天天综合色制服丝袜在线 | 青青草在线免费视频播放| 毛片大全真人在线|