新聞中心

EEPW首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 任意波形編輯軟件中手動(dòng)任意繪制功能的設(shè)計(jì)

任意波形編輯軟件中手動(dòng)任意繪制功能的設(shè)計(jì)

作者: 時(shí)間:2009-06-17 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://m.butianyuan.cn/article/195839.htm


l 任意繪制功能描述及難點(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ì)中需要考慮以下幾方面的問題:
(1)由于是手動(dòng)任意繪制,在繪制波形的過程中可能發(fā)生很多情況,因此需要包括對(duì)各種情況的處理。例如來回拖動(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ù)可以很大,在波形的修改過程中可能要對(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)了任意波形編輯過程中的“任意性”。在設(shè)計(jì)中,選用LabWindows/CVI做為軟件開發(fā)平臺(tái)。具體操作時(shí),用戶將鼠標(biāo)移動(dòng)到需要的起始位置,然后按下鼠標(biāo)不放,根據(jù)需要的波形形狀拖動(dòng)鼠標(biāo)在波形顯示區(qū)移動(dòng),當(dāng)?shù)竭_(dá)合適的位置時(shí),放開鼠標(biāo),則一次繪制過程完成。在整個(gè)過程中首先需要確定接收什么樣的信號(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)過程中的有效值進(jìn)行存儲(chǔ)。由于涉及到波形的修改,也需要對(duì)波形的部分存儲(chǔ)值進(jìn)行更新。在整個(gè)繪制過程中鼠標(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)志變量的方法解決此問題。
(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ù)沒有賦值,這樣就要在相鄰的離散點(diǎn)之間插值計(jì)算出那些空缺的幅值??紤]到兩個(gè)相鄰點(diǎn)之間的距離比較小,于是可以采用線性插值,插值計(jì)算出來的波形是比較光滑的。
(3)正如難點(diǎn)分析中講到,手動(dòng)任意繪制可能發(fā)生的情況很多,用戶可以從前向后繪制波形也可以從后向前繪制波形,甚至可以重復(fù)繪制。而且,在繪制過程中還可能超出當(dāng)前的繪圖范圍,因此采用只有當(dāng)鼠標(biāo)位置在波形內(nèi)部時(shí)才采集當(dāng)前坐標(biāo)點(diǎn),超出波形范圍則取最大值的方法。再者,對(duì)于繪制中的方向及重復(fù)繪制問題,采用取兩點(diǎn)之間的絕對(duì)值解決,然后再進(jìn)行線性插值并計(jì)算兩點(diǎn)之間的其他各點(diǎn)的幅值,最后對(duì)波形各點(diǎn)相應(yīng)值進(jìn)行存儲(chǔ)更新和坐標(biāo)映射。


上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉