摘 要:結合普通高校的近代物理實驗電子自旋共振,介紹新型電子自旋共振儀器的數據處理支撐系統,在實驗測量過程中,利用VB 6.0平臺實時采集數據,并由控制程序將所測得的數據繪制成動態曲線顯示在繪圖區中,通過雙游標可以輕松地獲得動態曲線上任意點的坐標值,并根據數值分析實驗結果。對實驗總體分析精確、清晰,打破了傳統物理實驗的枯燥性。
關鍵詞:智能電子自旋共振儀; VB 6.0; 動態曲線; 雙游標; 實時通信
中圖分類號:TP311 文獻標識碼:A
文章編號:1004-373X(2010)10-0202-02
Realization of Drawing Module in Smart Electron Spin Resonance System Based on VB6.0
XIAO Yu-zhi1, DUAN Xin-wen2, ZHAO Jian-fei2
(1. Network Information Department, Qinghai Normal University, Xinning 810008, China; 2. Physics Department, Qinghai Normal University, Xinning 810008, China)
Abstract:A new data-processing support system of a novel electron spin resonance instrument is introduced in combination with the electron spin resonance in the modern physics experiment in the common colleges and universities. During the experimental measurement, the real-time data acquisition is performed with VB6.0 platform, and the dynamic curve is plotted according to the measured data and displayed in the drawing area by the control program. The coordinate value of any point on the curve can be obtained easily through the double-dynamic cursor. The experimental results are analyzed based on the numerical value.. The overall analysis of the experimental is precise and clear.
Keywords:intelligent electronic spin resonance instrument; VB6.0; dynamic curve; double-cursor; real-time communication
近年來,電子順磁共振(electron paramagnetic resonance,EPR)或稱電子自旋共振(electron spin resonance,ESR)技術已成為一門新型的科學技術[1]。它的應用領域非常廣泛,特別是在物理、化學、醫學方面的應用更為突出,許多電子生產廠家向市場推出了不同型號的電子自旋共振儀器[2],其硬件的發展非常迅速,然而相應的系統軟件的支撐卻比較薄弱,所以電子自旋共振儀器的系統支撐軟件的開發將成為一個新的熱點。
1 繪圖模塊的開發環境
對某一個系統的開發,開發者可以選用各種編程語言來完成,通常使用的高級語言如C++,Java,PB,Visual Basic等,各種語言有各自的優點與缺點,基于不同的用戶需求選用的語言也有所不同。該實驗系統的開發中選用了Visual Basic 6.0,選用它的主要原因是[3]:
(1) Visual Basic 6.0具有友好的可視化界面;
(2) Visual Basic 6.0自帶的通信控件可以方便地與智能電子自旋共振儀器進行通信;
(3) Visual Basic 6.0中的畫線功能可以自由地繪出繪圖區中的譜線;
(4) 程序代碼易于以后的修改與擴充。
2 繪圖區實現[4]
在此使用圖片框(pictuer 2)來顯示共振譜線,所以第一步就是要在窗體上定位圖片框,并為其設置外觀及其他屬性。在該實驗中,繪圖區(picMain)中顯示曲線有坐標值,所以首先畫出圖片框,然后在圖片框中定制曲線生成區。定制圖片框或繪圖區都要先確定他們在窗體的哪個位置。所以下面先闡述VB中坐標系的定義。
2.1 坐標系的確定
VB坐標系介紹:VB里有3種坐標系,屏幕坐標系、窗體坐標系和窗體內的對象坐標系。這3種坐標系都是以其左上角為坐標原點,與平常使用的幾何坐標系不一致,常使人們繪圖時感到不習慣。VB允許編程人員自定義坐標系,根據需要定義坐標原點的位置。默認的坐標系統是容器的左上角的坐標為(0,0),右下角坐標為(Width,Height),為了根據自己的需要來定義坐標系統,用到了Scale相關屬性。
通過設置ScaleLeft和ScaleTop來設置左上角的坐標。實驗中右下角坐標為:
Private Function draw_pic()
…
pic_main.ScaleWidth = XX*(pic_max_x-1)
pic_main.ScaleHeight =YY*((pic_max_y / pic_y * 4)-1)
End Function
2.2 設置繪圖區網格
定制好了繪圖區,為了繪圖區的美觀,繪圖中區加了橫縱相交的網格。橫坐標固定只有5個細分格,縱坐標固定4個細分格。部分代碼如下:
Private Function draw_pic()
…
For i = 1 To pic_max_x / pic_x - 1
pic_main.Line (XX * i * 5, 0)-(XX * i * 5, pic_main.ScaleHeight)
…
End Function
2.3 設置坐標
根據繪圖區的大小與高度繪制x軸和y軸。
3 繪圖模塊實時曲線的生成[5-9]
畫好繪圖區及坐標系后,就要在繪圖區繪制實時曲線, 實時曲線的繪制一般借助于Timer控件來完成,使用Timer控件,定期將串口或是其他儀器中監測到的數據送往pic_main,而曲線的繪制一般畫成折線圖,采用PictureBox1的Line方法繪制。用Line方法可以在窗體或圖片框上繪制一條直線或繪制一個矩形。
Line方法的一般格式:
[對象名.] Line (x1,y1)- (x2,y2) [,顏色]
其中:(x1,y1)為始點坐標;(x2,y2)為終點坐標;顏色可以使用RGB函數,規定畫線或畫矩形的顏色。代碼如下:
3.1 曲線的生成
曲線的生成為:
Private Sub draw_line()
…
next_y = pic_main.ScaleHeight - ValueArray(i) / pic_max_y * pic_
main.ScaleHeight
…
End Sub
3.2 時鐘更新曲線
時鐘更新曲線為:
Private Sub timer1_timer()
…
If Trim(data_array(i)) <> \"\" And i < 75 Then ′去處字符串首尾的空格
ValueArray(i) = CLng(\"H\" + data_array(i)) ′十六進制轉換成十進制
…
pic_main.Enabled = True
End Sub
這樣,就完成了在繪圖區中顯示從單片機實時采集到的數據的任務。
4 雙游標讀取某兩點的數值差
用4條線來描述雙游標。首先在繪圖區上放置4條直線控件,4條線放置成2對坐標形式(十字相交)。并設置4條線的屬性:
4條直線的名稱分別為線c0_x,c0_y,c1_x,c1_y。
顏色分別為c0_x.bordercolor=H000000FF;c1_x.bordercolor H00FFFF00。
4.1 獲取任意點的坐標值
通過在曲線上單擊鼠標左鍵來獲得坐標值
Private Sub pic_main_MouseDown(Button As Integer, Shift As Integer, x As Single,y As Single) ′取坐標
If (Abs(c0_x.Y1 - y) < Abs(c0_x.X1 - x)) Then
event_line_length_0 = Abs(c0_x.Y1 - y)
…
End Sub
4.2 任意點坐標值的顯示
因為獲取的是任意點的坐標值,所以鼠標放在曲線的任意位置時,坐標C0()與坐標C1()的值相應的要改變。
某點的坐標如圖1所示。
圖1 某點坐標
Private Sub pic_main_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
…
lbl_c0.Caption = \"坐標C0:(\" + str(FormatNumber((75 - (1 - x / pic_main.ScaleWidth) * pic_max_x), 2)) + \",\" + str(FormatNumber((1 - y / pic_main.ScaleHeight) * pic_max_y, 2)) + \")\"
…
End Sub
最后實驗生成的曲線如圖2所示。
圖2 實驗曲線
5 結 語
電子自旋共振儀數據支撐系統,基于VB 6.0平臺,代碼簡單、容易擴充。學生可以根據個人需求進行系統功能的擴充。系統設計的控制程序[10]將所測得的數據繪制成動態曲線顯示在繪圖區中,實驗數據的采集更為直觀和準確。
參考文獻
[1]陳志英,李光輝.單總線(1-Wire Bus)技術及其應用[J].國外電子元器件,2003(7):74-75.
[2]楊金巖,鄭應強.8051單片機數據傳輸接口擴展技術與應用實例[M].北京:人民郵電出版社,2005.
[3]BOB RESELMAN, RICHARD PEASLEY. Visual Basic 6.0使用指南[M].北京:電子工業出版社,2001.
[4]李蘭,李瑋.Visual Basic.NET圖形圖像編程與實例詳解[M].北京:電子工業出版社,2002.
[5]JAN AXELSON.串行端口大全[M].北京:中國電力出版社,2004.
[6]佚名.一種8086單片機和PC機的串行通信[EB/OL].[2004-10-06].http://www.embeddedic.com/.
[7]李鴻吉.Visual Basic高級編程技術[M].北京:科學出版社,2003.
[8]林永.Visual Basic程序員Windows API編程手冊[M].北京:人民郵電出版社,2002.
[9][美]STEVEN JORDAN.Visual Basic 6編程寶典[M].北京:電子工業出版社,2005.
[10]蔡美琴.MCS-51系列單片機系統及其應用[M].北京:高等教育出版社,1990.