微型圖框在虛擬儀器中的效用探究
1圖片框坐標概述
2數字存儲示波器的波形重建
首先確定波形在屏幕顯示範圍,即X向像素點×Y向像素點,再把圖片框劃分為8行10列,共有80個小格,其中電壓區域在上麵的40格為正,下麵40格為負。圖片框的X軸表示時基,Y軸表示電壓值。圖片框的Y方向像素值固定,圖片框的X電壓值用Picture.ScaleWidth=存儲深度值/n設置,選擇不同的存儲深度有不同的X軸長度,n依需要定:n=1顯示全部存儲深度的數據波形;n=2則顯示1/2存儲深度的數據波形,且時基隨Picture.
ScaleWidth值變化。則依Picture.Scale Width變化,存儲深度範圍可設置觀看任意長度數據,加上滾動條控件的移動可觀察前後的數據。在重新設置存儲深度後須重新設置圖片框的X軸長度。
靈ling敏min度du是shi數shu字zi存cun儲chu示shi波bo器qi能neng顯xian示shi的de最zui大da電dian壓ya值zhi。對dui同tong一yi個ge輸shu入ru信xin號hao,屏ping幕mu上shang的de波bo形xing幅fu值zhi隨sui靈ling敏min度du的de增zeng加jia而er變bian低di,隨sui靈ling敏min度du的de降jiang低di而er增zeng高gao。要yao正zheng確que重zhong建jian波bo形xing,須xu正zheng確que計ji算suan圖tu片pian框kuangY軸方向的電壓值和計算X軸的時間顯示值,Y軸反映輸入信號的幅值,X軸時間數字反映輸入信號的周期。先用靈敏度和Y方向上的最大像素值計算出1V電壓對應的像素值,再計算A/D轉換的電壓值,兩值相乘則為電壓對應的像素值。計算電壓對應的像素值代碼:ChKK=(Ymax/2)/ChSensitivi ty Ymax為圖片框Y軸最大像素值;ChSensitivity為設置電壓靈敏度;ChKK―1V對應的像素值。
圖片框坐標左上角為0,垂直向下Y軸增加,水平向右X軸增加,0V水平線在圖片框的中間,正電壓在0V水平線上方,而負電壓在下方。因此,ChPixel(i)=ChPixel(i)(-1),繪製圖形代碼如下:For i=1 To DataLegth-1 Picture.Line ((i-1), Y0+ChPixel(i-1+MoveValue))-(i, Y0 + ChPixel(i +MoveValue)), HFF00 Next i //DataLegth―存儲深度,Y0―0V的Y軸中心位置//MoveValue―滾動條移動位置值X軸顯示值是數字存儲示波器的時基,與采樣頻率、存儲深度有關,即:TimeValue=(1/采樣頻率)×(存儲深度值/n)/10 TimeValue是每個小格的時間,因圖片框劃分成8行10列,所以需除以10.
3任意波形發生器的自定義波形輸出
任ren意yi波bo形xing發fa生sheng器qi可ke輸shu出chu標biao準zhun波bo形xing和he自zi定ding義yi波bo形xing。選xuan擇ze自zi定ding義yi波bo形xing時shi,用yong戶hu采cai用yong鼠shu標biao繪hui圖tu方fang式shi繪hui製zhi所suo需xu波bo形xing,而er圖tu形xing繪hui製zhi是shi在zai圖tu片pian框kuang中zhong進jin行xing,在zai程cheng序xu可ke視shi化hua界jie麵mian上shang放fang置zhi圖tu片pian框kuang,其qi大da小xiao可ke任ren意yi,然ran後hou用yongD/A的分辨率定義該圖片框的高度:Picture.ScaleHeight=D/A分辨率用任意波形發生器要求的一個周期的數據個數定義該圖片框寬度:Picture.ScaleWidth=數據個數圖片框的坐標是左上角為0,垂直向下Y軸增加,水平向右X軸增加。程序通過MouseDown、MouseUp、MouseMove事件對鼠標位置及狀態的變化作出響應,圖片框的MouseDown、MouseUp、MouseMove事件返回鼠標當前位置的坐標值X、Y.
在MouseDown與MouseUp事件裏通知應用程序開始繪圖與停止繪圖。按下鼠標按鈕觸發MouseDown事件,記錄鼠標的X、Y位置作為起始位置;按住鼠標在圖片框上拖動指針時,不斷觸發MouseMove事件,該事件與Line方法結合把鼠標移動的軌跡畫線並把鼠標的X、Y坐標存入以X為序的數組中,數組存的Y值是輸出到D/A的二進製值。由於鼠標經圖片框的每個像素時,並不產生MouseMove事件,在X不連續的地方,則需要線性插值:Picture.Line (OldX, OldY)-(X, Y), QBColor(0)XPos(X)=X: YPos(X)=Y DiffX=X-OldX If (diffX >= 2) Then //開始插值Dd=(Y-OldY)/diffX For i=OldX+1 To X-1 XPos(i)=i YPos(i)=YPos(OldX)+dd (i-OldX)Next i End If //插值結束OldX=X: OldY=Y釋放鼠標按鈕觸發MouseUp事件,結束繪圖。
此時可將Ypos(i)zhiyichanshengboxingshuchu。ruyonghubumanyixuxiugai,zezaihuihaodetuxingshangzaixuxiugaideweizhianxiashubiaoanniu,tuodongshubiao,chengxujiangdangqianshubiaoweizhicunruxianqianshuzu,tihuanyuanlaiweizhidezhi,shifangshubiaoshi,chengxuyongbaocundeshuzuzhongxinhuizhituxing,bingjiangshuzudezhishuchu。
4結語
采用VB圖片框的ScaleWidth、ScalHeight自定義刻度屬性,可靈活、直觀地進行程序設計。將其應用於虛擬儀器程序,可縮短程序的開發時間。http://98fo.cn



