Курсовая работа: Применение автоматизированного адаптивного интерферометра для исследования наносмещений микрообъектов
4. S. Di Girolamo, A.A.Kamshilin, R.V.Romashko, Yu.N.Kulchin, J.-C.Launay. Fast adaptive interferometer on dynamic reflection hologram in CdTe:V // Optics Express. – 2007. – Vol.15. – No.2. – P.545-555.
5. М. П. Петров, С. И. Степанов, А. В. Хоменко. Фоточувствительные электрооптические среды в голографии и оптической обработке информации. – Л.: Наука Ленингр. отд.-ние. – 1983. – 269 с.
6. A. Ashkin, G. D. Boyd, J. M. Dziedzic, R. G. Smith, A. A. Ballman, J. J. Levinstein, K. Nassau. Optically-induced refractive index inhomogeneities in LiNbO3 and LiTaO3 // Appl. Phys. Lett. – 1966. – V.9. – P.72.
7. P. Gunter, J.-P. Huignard, eds. Photorefractive materials and their applications 2: Materials. – Springer Series in Optical Sciences. – 2007. – V.114. – 646 p.
8. G. Zhang, D. Kip, D. D. Nolte, J. Xu, eds. OSA Trends in Optics and Photonics: Photorefractive Effects, Materials, and Devices. – 2005. – V.99.
9. P. Delaye, C. Denz, L. Mager, G. Montemezzani, eds. OSA Trends in Optics and Photonics: Photorefractive Effects, Materials, and Devices. – 2003. – V.87.
10. В. Л. Винецкий, Н. В. Кухтарев. Динамическая голография. – Киев: Наукова думка. – 1983. – 125 с.
11. Di Girolamo S., Romashko R.V., Kulchin Y.N., Kamshilin A.A. Orthogonal geometry of wave interaction in a photorefractive crystal for linear phase demodulation // Opt. Commun. – 2010. - V.283. - P.128-131.
12. R. V. Romashko, S. Di Girolamo, Y. N. Kulchin, and A. A. Kamshilin. Photorefractive vectorial wave mixingin different geometries// J. Opt. Soc. Am. -2010. -Vol. 27. No. 2. –P. 311-317.
Приложение
Программа «motor control for 8DCMC1»
Данная программа создана в среде MS Visual C++ 6.0 на базе класса MFC. Состоит из двух диалоговых окон: SERIALGATETEST_DIALOG и ABOUTBOX. Реализованы следующие функции:
1. Взаимодействие с COM – портом компьютера. Чтение и запись информации в памяти контроллера 8DCMC1 по средствам интерфейса RS232. Эта функция реализована в виде отдельной библиотеки – SerialGate.dll.
2. Аналог командной строки для управления шаговыми двигателями, содержащий поле ввода и поле вывода.
3. Задание параметров работы шаговых двигателей (скорость, ускорение).
4. 2D-cканирование выбранного участка.
5. Опрос АЦП, запись полученных данных в файл.
Листинг SerialGateTest.cpp:
#include "stdafx.h"
#include "SerialGateTest.h"
#include "SerialGateTestDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BEGIN_MESSAGE_MAP(CSerialGateTestApp, CWinApp)
//{{AFX_MSG_MAP(CSerialGateTestApp)
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CSerialGateTestApp construction
CSerialGateTestApp::CSerialGateTestApp()
{
}
CSerialGateTestApp theApp;
// CSerialGateTestApp initialization
BOOL CSerialGateTestApp::InitInstance()
{
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls();// Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic();// Call this when linking to MFC statically
#endif
CSerialGateTestDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
return FALSE;
}
Листинг SerialGateTestDlg.cpp:
#include <stdio.h>
#include <string.h>
#include <string>
#include "stdafx.h"
#include "SerialGateTest.h"
#include "SerialGateTestDlg.h"
#include <windows.h>
#include <math.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//using System;
int key=0;
//#include "thread.h"
//#include System::Threading;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSerialGateTestDlg dialog
CSerialGateTestDlg::CSerialGateTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSerialGateTestDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSerialGateTestDlg)
m_port = 5;
m_rate = 9600;
m_recieve = _T("");
m_send = _T("");
m_axsis = _T("");
m_vel = _T("");
m_asel = _T("");
m_gomr = _T("");
m_mraxsis0 = _T("");
m_mraxsis1 = _T("");
m_tapeaxsis0 = _T("");
m_tapeaxsis1 = _T("");
m_dataininput = _T("");
m_dataoutput = _T("");
m_past = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CSerialGateTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSerialGateTestDlg)
DDX_Control(pDX, IDC_RECIEVE, m_recievecontr);
DDX_Text(pDX, IDC_PORT, m_port);
DDX_Text(pDX, IDC_RATE, m_rate);
DDX_Text(pDX, IDC_RECIEVE, m_recieve);
DDX_Text(pDX, IDC_SEND, m_send);
DDX_Text(pDX, IDC_SETAXSCIS, m_axsis);
DDX_Text(pDX, IDC_SETVEL, m_vel);
DDX_Text(pDX, IDC_SETASEL, m_asel);
DDX_Text(pDX, IDC_MR, m_gomr);
DDX_Text(pDX, IDC_MRAXSIS0, m_mraxsis0);
DDX_Text(pDX, IDC_MRAXSIS1, m_mraxsis1);
DDX_Text(pDX, IDC_TAPEAXSIS1, m_tapeaxsis1);
DDX_Text(pDX, IDC_DATAEXCHANGE, m_dataininput);
DDX_Text(pDX, IDC_DATAEXCHANGE2, m_dataoutput);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSerialGateTestDlg, CDialog)
//{{AFX_MSG_MAP(CSerialGateTestDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON2, OnOpen)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON1, OnSend)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_ON_SETAXSIS, OnOnSetaxsis)
ON_BN_CLICKED(IDC_ON_SETACSEL, OnOnSetacsel)
ON_BN_CLICKED(IDC_ON_SETVELOS, OnOnSetvelos)
ON_BN_CLICKED(IDC_ON_MOTROON, OnOnMotroon)
ON_BN_CLICKED(IDC_ON_MOTOROFF, OnOnMotoroff)
ON_BN_CLICKED(IDC_ON_MR, OnOnMr)
ON_BN_CLICKED(IDC_ON_GO, OnOnGo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSerialGateTestDlg message handlers
BOOL CSerialGateTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);// Set big icon
SetIcon(m_hIcon, FALSE);// Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CSerialGateTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CSerialGateTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);