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