當(dāng)前位置:首頁(yè) > 測(cè)試測(cè)量 > 測(cè)試測(cè)量
[導(dǎo)讀] 作為一種特殊的信號(hào)源,任意波形發(fā)生器越來(lái)越廣泛地應(yīng)用于各個(gè)領(lǐng)域。它不僅具有產(chǎn)生常規(guī)波形的能力,而且可以仿真實(shí)際測(cè)試中需要的任意波形。手動(dòng)繪制是任意波形發(fā)生器的一項(xiàng)特殊功能,它是在給定的電腦屏幕上,按照

 作為一種特殊的信號(hào)源,任意波形發(fā)生器越來(lái)越廣泛地應(yīng)用于各個(gè)領(lǐng)域。它不僅具有產(chǎn)生常規(guī)波形的能力,而且可以仿真實(shí)際測(cè)試中需要的任意波形。手動(dòng)繪制是任意波形發(fā)生器的一項(xiàng)特殊功能,它是在給定的電腦屏幕上,按照用戶的需求,拖動(dòng)鼠標(biāo)繪制需要的波形形狀。這里介紹了一種采用虛擬儀器進(jìn)行任意波形手動(dòng)繪制功能軟件的設(shè)計(jì)方法。


l 手動(dòng)任意繪制功能描述及難點(diǎn)分析
    手動(dòng)任意繪制功能包括波形參數(shù)信息、波形示意圖、狀態(tài)信息以及系統(tǒng)設(shè)置信息等。手動(dòng)任意繪制波形功能也包括使用鼠標(biāo)繪制波形,以及在此基礎(chǔ)上對(duì)波形進(jìn)行各種修改,包括替代、翻轉(zhuǎn)、重新繪制、插入等。此外波形的顏色和點(diǎn)數(shù)可以根據(jù)用戶的需求進(jìn)行設(shè)置,同時(shí)要求波形能夠?qū)崟r(shí)顯示。該軟件的邏輯關(guān)系和數(shù)據(jù)結(jié)構(gòu)較為復(fù)雜,設(shè)計(jì)中需要考慮以下幾方面的問(wèn)題:
    (1)由于是手動(dòng)任意繪制,在繪制波形的過(guò)程中可能發(fā)生很多情況,因此需要包括對(duì)各種情況的處理。例如來(lái)回拖動(dòng)鼠標(biāo),鼠標(biāo)拖動(dòng)越界等。在繪制好波形后,對(duì)波形進(jìn)行各樣的修改也是設(shè)計(jì)的一個(gè)難點(diǎn)。
    (2)如何獲取離散點(diǎn)的坐標(biāo)值,采用何種插值處理計(jì)算離散點(diǎn)之間的坐標(biāo)值使得波形更加平滑也成為設(shè)計(jì)需要重點(diǎn)考慮的一個(gè)方面。
    (3)由于波形的點(diǎn)數(shù)可以很大,在波形的修改過(guò)程中可能要對(duì)數(shù)據(jù)進(jìn)行備份,因此也需要考慮到數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),保障整個(gè)軟件的速度和效率。
    (4)軟件應(yīng)具有良好的移植性,應(yīng)考慮用對(duì)象編程的思想對(duì)軟件進(jìn)行整體的一個(gè)架構(gòu)設(shè)計(jì)。


2 總體設(shè)計(jì)流程圖
    手動(dòng)繪制是波形生成方法中最直觀、最方便的方法。它同時(shí)也體現(xiàn)了任意波形編輯過(guò)程中的“任意性”。在設(shè)計(jì)中,選用LabWindows/CVI做為軟件開(kāi)發(fā)平臺(tái)。具體操作時(shí),用戶將鼠標(biāo)移動(dòng)到需要的起始位置,然后按下鼠標(biāo)不放,根據(jù)需要的波形形狀拖動(dòng)鼠標(biāo)在波形顯示區(qū)移動(dòng),當(dāng)?shù)竭_(dá)合適的位置時(shí),放開(kāi)鼠標(biāo),則一次繪制過(guò)程完成。在整個(gè)過(guò)程中首先需要確定接收什么樣的信號(hào)觸發(fā)繪制波形事件發(fā)生,繪制波形也必須被限制在特定的區(qū)域內(nèi),如若超出繪圖區(qū)域需做出相應(yīng)處理;波形的點(diǎn)數(shù)可以根據(jù)用戶的需要自行選擇,如若不選擇則默認(rèn)為65 536個(gè)點(diǎn),這也是設(shè)計(jì)的最大波形點(diǎn)數(shù)。手動(dòng)任意繪制可能發(fā)生各種各樣的情況,比如鼠標(biāo)可以前后拖動(dòng),因此需要對(duì)這樣的情況做出相應(yīng)的處理,即對(duì)鼠標(biāo)拖動(dòng)過(guò)程中的有效值進(jìn)行存儲(chǔ)。由于涉及到波形的修改,也需要對(duì)波形的部分存儲(chǔ)值進(jìn)行更新。在整個(gè)繪制過(guò)程中鼠標(biāo)連續(xù)操作,需要采集到各個(gè)離散的點(diǎn),然后進(jìn)行插值處理,做到整個(gè)波形比較平滑。
    整個(gè)設(shè)計(jì)主要由監(jiān)測(cè)模塊、處理模塊和顯示模塊3部分組成。監(jiān)測(cè)模塊主要完成對(duì)鼠標(biāo)左鍵的監(jiān)測(cè),設(shè)定波形數(shù)據(jù)的初始值,對(duì)其他模塊進(jìn)行初始化,并啟動(dòng)采集離散點(diǎn)時(shí)鐘,每隔2 ms進(jìn)行一次采點(diǎn);處理數(shù)據(jù)主要包括4個(gè)步驟:獲取當(dāng)前數(shù)據(jù)并查看是否有效;根據(jù)有效值做線性插值處理使得波形平滑;存儲(chǔ)當(dāng)前數(shù)據(jù);實(shí)時(shí)顯示鼠標(biāo)的當(dāng)前坐標(biāo)。顯示模塊主要完成波形顏色和顯示點(diǎn)數(shù)的設(shè)置,并對(duì)波形做實(shí)時(shí)顯示。圖1即為總體設(shè)計(jì)流程圖。

3 具體實(shí)現(xiàn)
3.1 手動(dòng)任意繪制波形具體實(shí)現(xiàn)
    (1)在手動(dòng)繪制時(shí),鼠標(biāo)左鍵一直按下可以有兩個(gè)操作,一是繪制任意波形;二是拉動(dòng)滑塊,此時(shí)要判斷是拉動(dòng)滑塊還是繪波形,這時(shí)筆者采用判斷標(biāo)志變量的方法解決此問(wèn)題。
    (2)由于鼠標(biāo)是連續(xù)操作,因此根據(jù)需要使用筆者選用定時(shí)函數(shù),每隔一定的時(shí)間(2 ms)被觸發(fā)1次,每次執(zhí)行函數(shù)采集1個(gè)離散的點(diǎn),即獲取當(dāng)前光標(biāo)處的橫縱坐標(biāo),這樣就得到了一系列的離散點(diǎn),相鄰離散點(diǎn)之前的間隔是不等的,這與用戶拖動(dòng)鼠標(biāo)的速度有關(guān)。于是還有許多波形點(diǎn)數(shù)沒(méi)有賦值,這樣就要在相鄰的離散點(diǎn)之間插值計(jì)算出那些空缺的幅值。考慮到兩個(gè)相鄰點(diǎn)之間的距離比較小,于是可以采用線性插值,插值計(jì)算出來(lái)的波形是比較光滑的。
    (3)正如難點(diǎn)分析中講到,手動(dòng)任意繪制可能發(fā)生的情況很多,用戶可以從前向后繪制波形也可以從后向前繪制波形,甚至可以重復(fù)繪制。而且,在繪制過(guò)程中還可能超出當(dāng)前的繪圖范圍,因此采用只有當(dāng)鼠標(biāo)位置在波形內(nèi)部時(shí)才采集當(dāng)前坐標(biāo)點(diǎn),超出波形范圍則取最大值的方法。再者,對(duì)于繪制中的方向及重復(fù)繪制問(wèn)題,采用取兩點(diǎn)之間的絕對(duì)值解決,然后再進(jìn)行線性插值并計(jì)算兩點(diǎn)之間的其他各點(diǎn)的幅值,最后對(duì)波形各點(diǎn)相應(yīng)值進(jìn)行存儲(chǔ)更新和坐標(biāo)映射。
    (4)波形的處理也是手動(dòng)繪制功能的一個(gè)亮點(diǎn),其中包括剪切、插入、翻轉(zhuǎn)、粘貼等,用到的原理是一樣的,即是對(duì)波形處理前和處理后的數(shù)據(jù)都進(jìn)行存儲(chǔ),然后進(jìn)行一對(duì)一的更新。在設(shè)計(jì)過(guò)程中,使用鏈表完成。這樣既保證了數(shù)據(jù)的實(shí)時(shí)更新,也可以不浪費(fèi)內(nèi)存來(lái)管理數(shù)據(jù)。圖2即為手動(dòng)繪制的一個(gè)任意波形。

3.2 任意波形編輯軟件中拖動(dòng)放大功能的實(shí)現(xiàn)
    在波形顯示區(qū)域內(nèi)移動(dòng)鼠標(biāo),當(dāng)放到了合適的位置,然后按下鼠標(biāo)左鍵,開(kāi)始拖動(dòng)鼠標(biāo)。拖動(dòng)過(guò)程中按住鼠標(biāo)左鍵不放,這時(shí)會(huì)出現(xiàn)一個(gè)矩形,矩形的左上角即是鼠標(biāo)開(kāi)始按下的位置,矩形的右下角是當(dāng)前鼠標(biāo)的位置。
    因此,矩形的大小隨鼠標(biāo)的移動(dòng)而更新。直到拖動(dòng)到需要的位置,放開(kāi)左鍵,至此放大操作完成??梢钥吹奖痪匦伟鼑牡牟ㄐ尾糠直蝗溜@示。
    此功能的設(shè)計(jì)中,需用到函數(shù)SetAxisRange()改變顯示區(qū)的橫縱向范圍,還用到“手動(dòng)繪制波形”設(shè)計(jì)中使用的時(shí)鐘控件。于是在整個(gè)軟件的設(shè)計(jì)中用到兩個(gè)時(shí)鐘控件:
    第一個(gè)時(shí)鐘在手動(dòng)繪制波形時(shí)用來(lái)采集離散的波形點(diǎn).另外還負(fù)責(zé)實(shí)時(shí)顯示鼠標(biāo)坐標(biāo)的功能;
    第二個(gè)時(shí)鐘就是現(xiàn)在為了繪制不斷更新的矩形而設(shè)的。需要注意的是:兩個(gè)時(shí)鐘控件不能同時(shí)處于激活狀態(tài),即時(shí)鐘1初始為非激活狀態(tài)(unenable),當(dāng)選中了“鼠標(biāo)拖動(dòng)放大波形”菜單項(xiàng)時(shí),先停止時(shí)鐘1,再將時(shí)鐘2激活(enable)。除了控件時(shí)鐘控件的使用,在鼠標(biāo)拖動(dòng)過(guò)程中還需執(zhí)行不斷刷新波形的操作。
    因?yàn)?,?dāng)生成矩形時(shí),該矩形有填充色,會(huì)覆蓋顯示區(qū)的波形,為了使矩形看起來(lái)是只有邊框而沒(méi)有填充色的效果,需要不斷地刷新波形。因此,操作過(guò)程中會(huì)看到波形有輕微的抖動(dòng)現(xiàn)象。其實(shí)現(xiàn)的原理和波形擴(kuò)展的原理是一致的,將當(dāng)前區(qū)域內(nèi)的波形參數(shù)存儲(chǔ),并將其復(fù)制一份,然后對(duì)其進(jìn)行插值處理。如果需要也可以對(duì)波形進(jìn)行平滑處理,平滑處理的方法是求平均值。
    先選定一個(gè)要進(jìn)行平滑處理的波形點(diǎn),然后將它左面幾個(gè)點(diǎn)和右面幾個(gè)點(diǎn)的幅度值相加,再除以相加的總波形點(diǎn)數(shù)。這樣平滑處理后的波形將有一定程度的失真,因每個(gè)點(diǎn)的幅值是其左邊和右邊各8個(gè)點(diǎn)的幅值的平均值,因此更新后的幅值將有所減小。但平滑效果較好,對(duì)于比較不規(guī)則的波形,連續(xù)進(jìn)行多次平滑處理之后,波形將變得較為光滑平坦。圖2即為鼠標(biāo)拖動(dòng)放大波形操作過(guò)程示意圖。

4 結(jié) 語(yǔ)
    基于LabWindows,/CVI的任意波形編輯軟件中手動(dòng)任意繪制軟件成本低、效率高、移植性好,無(wú)論是采用何種發(fā)送數(shù)據(jù)的方式,都比較容易進(jìn)行接口操作,在虛擬儀器的圖形界面編程領(lǐng)域有著良好的發(fā)展前景。與此同時(shí),手動(dòng)任意繪制波形軟件不必受到具體儀器的功能限制,這給設(shè)計(jì)帶來(lái)了很大的靈活性。目前,筆者開(kāi)發(fā)的任意波形發(fā)生器手動(dòng)任意繪制軟件可以選用串口和USB接口發(fā)送數(shù)據(jù),也可以實(shí)現(xiàn)和VXI通信。已經(jīng)應(yīng)用到100 MSPS任意波形發(fā)生器上。經(jīng)過(guò)各種測(cè)試,性能穩(wěn)定,操作簡(jiǎn)單,使用方便。以后還可以根據(jù)不同的儀器要求,進(jìn)一步增加具有其他功能的虛擬儀器,做進(jìn)一步的擴(kuò)展,使得系統(tǒng)更加完善。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉