任意波形編輯軟件中手動任意繪制功能的設(shè)計
(4)波形的處理也是手動繪制功能的一個亮點,其中包括剪切、插入、翻轉(zhuǎn)、粘貼等,用到的原理是一樣的,即是對波形處理前和處理后的數(shù)據(jù)都進行存儲,然后進行一對一的更新。在設(shè)計過程中,使用鏈表完成。這樣既保證了數(shù)據(jù)的實時更新,也可以不浪費內(nèi)存來管理數(shù)據(jù)。圖2即為手動繪制的一個任意波形。本文引用地址:http://cafeforensic.com/article/195839.htm
3.2 任意波形編輯軟件中拖動放大功能的實現(xiàn)
在波形顯示區(qū)域內(nèi)移動鼠標(biāo),當(dāng)放到了合適的位置,然后按下鼠標(biāo)左鍵,開始拖動鼠標(biāo)。拖動過程中按住鼠標(biāo)左鍵不放,這時會出現(xiàn)一個矩形,矩形的左上角即是鼠標(biāo)開始按下的位置,矩形的右下角是當(dāng)前鼠標(biāo)的位置。
因此,矩形的大小隨鼠標(biāo)的移動而更新。直到拖動到需要的位置,放開左鍵,至此放大操作完成??梢钥吹奖痪匦伟鼑牡牟ㄐ尾糠直蝗溜@示。
此功能的設(shè)計中,需用到函數(shù)SetAxisRange()改變顯示區(qū)的橫縱向范圍,還用到“手動繪制波形”設(shè)計中使用的時鐘控件。于是在整個軟件的設(shè)計中用到兩個時鐘控件:
第一個時鐘在手動繪制波形時用來采集離散的波形點.另外還負(fù)責(zé)實時顯示鼠標(biāo)坐標(biāo)的功能;
第二個時鐘就是現(xiàn)在為了繪制不斷更新的矩形而設(shè)的。需要注意的是:兩個時鐘控件不能同時處于激活狀態(tài),即時鐘1初始為非激活狀態(tài)(unenable),當(dāng)選中了“鼠標(biāo)拖動放大波形”菜單項時,先停止時鐘1,再將時鐘2激活(enable)。除了控件時鐘控件的使用,在鼠標(biāo)拖動過程中還需執(zhí)行不斷刷新波形的操作。
因為,當(dāng)生成矩形時,該矩形有填充色,會覆蓋顯示區(qū)的波形,為了使矩形看起來是只有邊框而沒有填充色的效果,需要不斷地刷新波形。因此,操作過程中會看到波形有輕微的抖動現(xiàn)象。其實現(xiàn)的原理和波形擴展的原理是一致的,將當(dāng)前區(qū)域內(nèi)的波形參數(shù)存儲,并將其復(fù)制一份,然后對其進行插值處理。如果需要也可以對波形進行平滑處理,平滑處理的方法是求平均值。
先選定一個要進行平滑處理的波形點,然后將它左面幾個點和右面幾個點的幅度值相加,再除以相加的總波形點數(shù)。這樣平滑處理后的波形將有一定程度的失真,因每個點的幅值是其左邊和右邊各8個點的幅值的平均值,因此更新后的幅值將有所減小。但平滑效果較好,對于比較不規(guī)則的波形,連續(xù)進行多次平滑處理之后,波形將變得較為光滑平坦。圖2即為鼠標(biāo)拖動放大波形操作過程示意圖。
4 結(jié) 語
基于LabWindows,/CVI的任意波形編輯軟件中手動任意繪制軟件成本低、效率高、移植性好,無論是采用何種發(fā)送數(shù)據(jù)的方式,都比較容易進行接口操作,在虛擬儀器的圖形界面編程領(lǐng)域有著良好的發(fā)展前景。與此同時,手動任意繪制波形軟件不必受到具體儀器的功能限制,這給設(shè)計帶來了很大的靈活性。目前,筆者開發(fā)的任意波形發(fā)生器手動任意繪制軟件可以選用串口和USB接口發(fā)送數(shù)據(jù),也可以實現(xiàn)和VXI通信。已經(jīng)應(yīng)用到100 MSPS任意波形發(fā)生器上。經(jīng)過各種測試,性能穩(wěn)定,操作簡單,使用方便。以后還可以根據(jù)不同的儀器要求,進一步增加具有其他功能的虛擬儀器,做進一步的擴展,使得系統(tǒng)更加完善。
評論