999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VC的光強探測系統(tǒng)設計

2010-01-01 00:00:00
科教導刊 2010年3期

摘要為了便于觀察干涉、衍射等光學實驗現(xiàn)象,提高實驗精度,驗證實驗原理,而設計光強探測系統(tǒng)。系統(tǒng)由光信號的接收與轉換、電信號的傳輸與處理、數(shù)據(jù)的存儲及輸出三個部分組成。其中數(shù)據(jù)的存儲及輸出部分,基于VC設計實現(xiàn),包括數(shù)據(jù)存儲、探測繪圖、曲線模擬。通過不斷的修正和改進,以及新功能的添加,最終形成較滿意的可行系統(tǒng)。

關鍵詞光強探測 Visual C++ 數(shù)據(jù)存儲

中圖分類號:O43文獻標識碼:A

1 引言

設計實現(xiàn)光強探測系統(tǒng),主要是用其觀測光線在接收屏上的光強大小及分布,并將觀測數(shù)據(jù)記錄在計算機系統(tǒng)上,以光強曲線的方式快速直觀地顯示出來。可用于學生觀察干涉、衍射等光學實驗現(xiàn)象,并對所記錄的數(shù)據(jù)進行分析,驗證實驗原理,提高實驗精度。

2 系統(tǒng)結構及設計

光強探測系統(tǒng)分為光信號的接收與轉換、電信號的傳輸與處理、數(shù)據(jù)的存儲及輸出三個部分,如圖1所示。

圖1

例如在單縫夫瑯禾費衍射實驗中,采用散射角極小的激光光束,通過一條很細的狹縫(0.1~0.3mm),就可在狹縫后大于1.5m的光屏上看到夫瑯禾費衍射條紋。為了提高實驗探測精度和速度,用光機電結合的方式,以圖1的系統(tǒng)結構進行優(yōu)化,組成所需的單縫夫瑯禾費衍射實驗系統(tǒng)。利用光電探測器和步進式電機記錄各點的光強分布數(shù)據(jù),以代替?zhèn)鹘y(tǒng)人工機械讀取數(shù)據(jù);利用計算機接口技術和軟件技術,實現(xiàn)自動控制及數(shù)據(jù)存儲輸出,以代替人工計算檢驗數(shù)據(jù)。再配以專用實驗平臺,就可實現(xiàn)高精度的自動化實驗系統(tǒng)。

對于光強探測系統(tǒng)中光信號的接受與轉換、電信號的傳輸與處理可由設計成熟的光電探測系統(tǒng)獨立完成,相關應用很多,在這里因篇幅所限,不再討論。對于數(shù)據(jù)的存儲及輸出,是本文重點討論的內容。采用Visual C++語言來實現(xiàn)光強探測系統(tǒng),實現(xiàn)的功能包括:數(shù)據(jù)存儲、探測繪圖、曲線模擬。因VC屬于可視化與面向對象的程序設計技術,與人類習慣的思維方法比較一致,對象能直接獲得已有的特性,穩(wěn)定、易于修改、擴充和維護。并且VC的執(zhí)行速度,加之對Windows操作系統(tǒng)的支持,使得VC的在整個計算機的硬件和軟件方面的訪問和控制更加游刃有余。可以在很短時間內為用戶建立一個穩(wěn)固而安全的骨架,快速增加新的類、變量和處理函數(shù),方便而迅速地將某個消息映射到某個處理函數(shù)上,方便地操作本地或異地的數(shù)據(jù)庫。

3 基于VC的系統(tǒng)實現(xiàn)

系統(tǒng)設計的主界面上有3個圖標,分別單擊各個圖標會進入不同的屬性頁,每一個屬性頁上有不同的按鈕,分別負責處理不同的功能,框架圖如圖2所示。

圖2系統(tǒng)設計框架

3.1 數(shù)據(jù)存儲

3.1.1 儀器控制

首先打開串口。使用CreateFile()打開串口,然后關閉串口,設置緩沖區(qū)長度。改變端口設置使用如下的兩個方法:BOOL GetCommState(hComm,dcb);BOOL SetCommState(hComm,dcb);改變普通設置:BuildCommDCB(szSettings,DCB);最后將其設置成同步I/O讀寫數(shù)據(jù)。

3.1.2 數(shù)據(jù)保存

為了便于光強數(shù)據(jù)的記錄、讀寫、保存與修改,設計直接生成“光強數(shù)據(jù).txt”的數(shù)據(jù)保存文檔,里面分行分列保存了步進式電機上的光電接收器件接收到的數(shù)據(jù),包括采樣點序號、坐標以及光強。

首先打開MFC ClassWizard,為對話框CPage3添加相關的消息,在Member Variables選項卡中為類CPage3的各個控件添加相應的成員變量。

然后進入ClassWizard菜單下,找到該按紐對應的ID(即IDC_SAVE),選擇它的ID為它的單擊事件(BN_CLICKED)添加功能,然后點擊ADD FUNCTION其功能名為ON_IDC_SAVE,最后點擊EDIT CODE編輯其代碼。其代碼原型如下所示:

void CPage3::OnSave()

{ CStdioFile sf;

sf.Open(\"光強數(shù)據(jù).txt\",CFile::modeCreate | CFile::modeWrite) }

文本文檔創(chuàng)建好之后,就要將相應的數(shù)據(jù)寫入這個文檔。由于采用的是字符串輸出的函數(shù)格式,所以要先將接收到的Float型的數(shù)值變量轉換成CString型的變量,其語句為:

strOut1.Format(\"%s%d\",strOut1,i);

這樣就可以采用循環(huán)的方式,并在適當?shù)奈恢眉尤霌Q行輸出符,將各個變量在文檔的相應位置輸出出來。

3.2 探測繪圖

3.2.1 繪制曲線

第一步,添加一個圖片靜態(tài)控件,修改其屬性,在其選項框中復選Client edge和Modal frame兩項,創(chuàng)建好繪圖區(qū)域。

第二步,為繪圖按紐添加相應功能,只要點擊該按紐軟件就會在繪圖區(qū)域里面繪制出相應的圖形。通過ClassWizard選擇IDC_BUTDRAW為對象,選擇其單擊事件添加命令,然后點擊EDIT CODE編輯該命令。然后在MFC ClassWizard下,為對話框添加相關消息,如表1。

表1控件屬性

第三步,就是在繪圖區(qū)域里面繪制坐標軸,坐標軸的繪制實際上就是線段的繪制,使用繪制直線的函數(shù):

CPoint CDC::MoveTo(int x,int y);

BOOL CDC::LineTo(int xEnd,int yEnd);

上述函數(shù)實現(xiàn)的功能分別是:調整畫筆的起始坐標(即從哪個點開始畫線)和指定所畫線段的終點坐標(即在哪個點結束),函數(shù)里面兩個變量分別對應點的橫坐標與縱坐標。

然后利用TextOut函數(shù)在繪圖區(qū)相應的位置輸出坐標軸的名稱以及原點的名稱,分別為S,I(對應于坐標和光強)和O點。

繪圖功能形成流程圖,如圖3所示:

圖3繪圖流程

3.2.2 清除區(qū)域

為了能夠實現(xiàn)實驗曲線的實時繪制,必須添加清除繪圖區(qū)域的功能,以實現(xiàn)衍射曲線的重繪功能。添加OnButclear函數(shù),在函數(shù)中輸入如下代碼:

void CPage1::OnButclear()

{

InvalidateRect(CRect(0,0,330,330));

}

3.3 曲線模擬

為了能夠對比觀察實驗曲線和理想衍射曲線之間的異同,實現(xiàn)衍射曲線的自動模擬功能,采用GIF動畫的自動播放功能,提供一個直觀的畫面。

首先還是要在該界面上創(chuàng)建一個圖片控件(Picture Control)。在項目中插入文件:把PictureEx.h,PictureEx.cpp文件拷貝到項目文件夾下,在Add to Project的Files選項中選上PictureEx.h,PictureEx.cpp,Insert。從對話框控件中把Picture Control(圖片控件)拖入主對話框中,修改其屬性:ID:IDC_GIF,TYPE:Rectangle,其余接受缺省選項。再在ClassWiard中為IDF_GIF加入CSatic控制變量m_GifPic, 觀察GifDemoDlg.h中是否加上了#include \"PictureEx.h\"(由ClassWizard加入)。然后將CSatic m_GifPic更改成CPictureEx m_GifPic;

加載動畫文件:先將要加載的動畫文件放到 res 資源文件夾下,再將其Import進項目中,由于MFC只支持256BMP文件的圖片,因此要新建一個圖片類型:“GIF”,將已經(jīng)做好了的GIF文件放進去 ,并將其ID修改成:IDR_GIF1。

import(導入)GIF動畫的詳細過程:在ResourceView窗口中,單擊鼠標右鍵,在出現(xiàn)的環(huán)境菜單中選擇“import”命令,會出現(xiàn)“import resource”選擇文件對話框,文件類型選擇“所有文件”,open as 選項為\"auto\",再選擇動畫文件所在目錄,選上要載入的動畫文件“模擬曲線.gif”,再單擊 import,由于gif動畫類型不是VC默認的文件類型,這時會出現(xiàn)\"custom resource type\"對話框,鍵入“GIF”,再單擊ok,然后修改其ID。

在CPage2::OnInitDialog()函數(shù)中加入如下代碼:

{…………………

// TODO: Add extra initialization here

if (m_GifPic.Load(MAKEINTRESOURCE(IDR_GIF1),_T(\"Gif\")))

m_GifPic.Draw();

}

此時就可以在這個屬性頁上順利地添加GIF動畫了,其效果圖如圖4(以單縫夫瑯禾費衍射曲線為例)所示。

圖4模擬曲線

參考文獻

[1]史大椿著.光學測量與應用光學實驗.機械工業(yè)出版社,1992.

[2]楊枝靈,王開著.Visual C++ 數(shù)字圖像獲取處理及實踐應用.人民郵電出版社,2003.

[3]劉靜華,王永生著.最新VC++繪圖程序設計技巧與實例教程.科學出版社,2001.

[4]Bjarne Stroustrup著.The C++ Programming Language.裘宗燕,譯.機械工業(yè)出版社,2002.

[5]Chris H.Pappas William H.Maurray 著.Visual C++ 6參考大全.希望圖書創(chuàng)作室,2004.

[6]David J.Kruglinski著.Programming Visual C++ .潘愛民,王國印,譯.清華大學出版社,2001.

主站蜘蛛池模板: 久久久精品久久久久三级| 专干老肥熟女视频网站| 国产综合日韩另类一区二区| 国产人碰人摸人爱免费视频| 2020最新国产精品视频| 欧美精品另类| 97综合久久| 日本不卡视频在线| 中文字幕无码中文字幕有码在线| 国产一区在线观看无码| 青青操国产视频| 国产成人夜色91| 成人在线观看一区| 久久毛片免费基地| 日本影院一区| 久久精品人人做人人爽97| 少妇精品网站| 国产理论最新国产精品视频| 热99re99首页精品亚洲五月天| 亚洲一区二区三区国产精华液| 青青青草国产| 精品国产网| 全色黄大色大片免费久久老太| 日韩久草视频| 成年片色大黄全免费网站久久| 久久亚洲国产视频| 国产成人无码Av在线播放无广告| 国产欧美日韩视频怡春院| 91福利免费| 亚洲福利视频网址| 国产xx在线观看| 亚洲精品福利网站| 无码免费的亚洲视频| 免费激情网址| 午夜毛片福利| 国产亚洲视频中文字幕视频| 黄色国产在线| 亚洲av无码成人专区| 97亚洲色综久久精品| 国产91精品久久| 久久91精品牛牛| 色婷婷电影网| 永久在线精品免费视频观看| 老色鬼欧美精品| 日韩国产 在线| 香蕉久久国产精品免| 欧美成人看片一区二区三区| 亚洲成人动漫在线观看| 91色在线观看| 中文字幕无码中文字幕有码在线| 欧美色丁香| 九九免费观看全部免费视频| 亚洲三级影院| 国产啪在线91| 国产精品视频导航| 欧洲在线免费视频| 天天做天天爱夜夜爽毛片毛片| 久久久噜噜噜久久中文字幕色伊伊| 国产欧美日韩精品综合在线| 国产91麻豆视频| 538国产在线| 亚洲人成网站在线观看播放不卡| www.亚洲一区二区三区| 国产麻豆精品在线观看| 国产午夜一级毛片| 亚洲人成电影在线播放| 久久国产精品77777| 一本色道久久88综合日韩精品| 美女免费黄网站| 亚洲成av人无码综合在线观看| 精品国产污污免费网站| 欧美特黄一级大黄录像| 在线观看无码av五月花| 亚洲精品色AV无码看| 亚洲男人在线天堂| 国产精品女主播| 精品人妻系列无码专区久久| 丁香亚洲综合五月天婷婷| 爆乳熟妇一区二区三区| 欧美另类第一页| 九色视频在线免费观看| 亚洲精品大秀视频|