ÇнÀ¸ñÇ¥ |
|||||||||
´ÙÀ̾î·Î±× ¹Ú½º¸¦ ¸¸µé°í ¸Þ´º¿¡¼ À̸¦ ¼±ÅÃÇÏ¿© Á¦¾îÇÑ´Ù. |
|||||||||
ÇнÀÁÖÁ¦ |
|||||||||
¼Û½Å°ú ¼ö½Å ½ÅÈ£ÀÇ Ã³¸® Åë½Å¼Óµµ |
|||||||||
¿¹½À³»¿ë |
|||||||||
Åë½Å ÀÎÅÍ·´Æ®, Åë½Å¹öÆÛ |
|||||||||
½Ç½À¹æ¹ý |
|||||||||
´ÙÀ̾î·Î±×¸¦ ¸¸µç´Ù. |
ID´Â ¡°IDD_DLG_TEMP¡±·Î ÇÑ´Ù.
|
||||||||
´ÙÀ̾î·Î±× ¹Ú½ºÀÇ ¼Ó¼ºÃ»¿¡¼ ´ÙÀ½ »¡°£»ö ºÎºÐÀÇ 3°³¸¦ ¼öÁ¤ÇÑ´Ù. |
´ÙÀ̾î·Î±×¹Ú½º¸¦ ¸¶¿ì½º·Î ´õºíÅ©¸¯ÇÏ¿© ¾Æ·¡¿Í °°ÀÌ Å¬·¡½º
À̸§À» ¡°DlgTemp¡±·Î ÇÑ´Ù. |
||||||||
CDlgTemp Ŭ·¡½º¿¡¼ Create ÇÔ¼ö¸¦
Ãß°¡ÇÑ´Ù. |
|||||||||
»ý¼ºµÈ Create ÇÔ¼ö¸¦ Çì´õ ÆÄÀϰú ¼Ò½ºÆÄÀÏ¿¡¼ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÑ´Ù. |
|||||||||
// Çì´õ ÆÄÀÏ ¼öÁ¤ public: //virtual BOOL Create(LPCTSTR lpszTemplateName, CWnd*
pParentWnd = NULL); virtual BOOL
Create(CWnd* pParentWnd = NULL); //¼Ò½ºÆÄÀÏ ¼öÁ¤ //BOOL CDlgTemp::Create(LPCTSTR
lpszTemplateName, CWnd* pParentWnd) BOOL CDlgTemp::Create(CWnd*
pParentWnd) { // TODO: ¿©±â¿¡Æ¯¼öȵÈÄڵ带Ãß°¡¹×/¶Ç´Â±âº»Å¬·¡½º¸¦È£ÃâÇÕ´Ï´Ù. //return CDialog::Create(lpszTemplateName, pParentWnd); return
CDialog::Create(IDD, pParentWnd); } |
|
||||||||
°°Àº ¹æ¹ýÀ¸·Î ´ÙÀÌ·Î±× ¹Ú½º¸¦ ¸¸µé°í ID´Â ¡°IDD_DLG_CONTROL¡±·Î ÇÑ´Ù. ¼Ó¼ºÀº ¾ÕÀÇ ´ÙÀ̾î·Î±×¿Í °°ÀÌ Çϰí Ŭ·¡½º
À̸§Àº ¡°CDlgControl¡±·Î ÇÑ´Ù. ±×¸®°í Create ÇÔ¼ö¸¦ µ¿ÀÏÇÏ°Ô ¸¸µç´Ù.
|
|||||||||
Create ÇÔ¼ö¸¦
µ¿ÀÏÇÏ°Ô ¼öÁ¤ÇÑ´Ù. |
|||||||||
// Çì´õ ÆÄÀÏ ¼öÁ¤ public: virtual BOOL Create(CWnd* pParentWnd = NULL); //¼Ò½ºÆÄÀÏ ¼öÁ¤ BOOL
CDlgControl::Create(CWnd* pParentWnd) { // TODO: ¿©±â¿¡Æ¯¼öȵÈÄڵ带Ãß°¡¹×/¶Ç´Â±âº»Å¬·¡½º¸¦È£ÃâÇÕ´Ï´Ù. return
CDialog::Create(IDD, pParentWnd); } |
|
||||||||
SRs232View.h ¿¡ ´ÙÀ̾î·Î±× ¹Ú½ºÀÇ Çì´õ ÆÄÀÏÀ» include ÇÏ°í °¢°¢ÀÇ Æ÷ÀÎÅ͸¦ Á¤ÀÇ ÇÑ´Ù. |
|||||||||
#pragma once #include "CommThread.h"
// (1) #include
"DlgTemp.h" #include "DlgControl.h" class CSRs232View : public
CView { protected: // serialization¿¡¼¸¸¸¸µé¾îÁý´Ï´Ù. CSRs232View(); DECLARE_DYNCREATE(CSRs232View) // Ư¼ºÀÔ´Ï´Ù. public: CCommThread
m_ComuPort; // (1) CSRs232Doc*
GetDocument() const; // ÀÛ¾÷ÀÔ´Ï´Ù. public: int nActDlg;
// ȸ鿡ÀÛ¾÷ÁßÀÎÆÇ³Ú¹øÈ£ CDlgTemp
*pDlgTemp; //´ÙÀ̾î·Î±×¹Ú½º¸¦Æ÷ÀÎÅͷμ±¾ðm_nActPanel=0 CDlgConfig
*pDlgConfig; //´ÙÀ̾î·Î±×¹Ú½º¸¦Æ÷ÀÎÅͷμ±¾ðm_nActPanel=1 // ÀçÁ¤ÀÇÀÔ´Ï´Ù. |
|
||||||||
¸Þ´º¿¡ ¡°¿Âµµº¸±â¡±ÀÇ ID¸¦ ¡°ID_Menu_DlgTemp¡±·Î ÇÏ°í ¡°¿ÂµµÁ¦¾îº¯¼ö¡±ÀÇ ID¸¦ ¡°,ID_Menu_DlgControl¡±·Î ¸¸µç´Ù. |
|||||||||
CSRs232View Ŭ·¡½º¸¦ ¼±ÅÃÇÏ°í ¼Ó¼º¿¡¼
ID_Menu_DlgTempÀÇ Command ÇÔ¼ö¸¦ ¸¸µç´Ù. °°Àº ¹æ¹ýÀ¸·Î ID_Menu_DlgControlÀÇ Command ÇÔ¼ö¸¦ ¸¸µç´Ù. |
|||||||||
CSRs232View Ŭ·¡½º¿¡ ¸Þ´º¸¦
¼±ÅÃÇϸé ÇØ´çÇÏ´Â ´ÙÀ̾î·Î±×¹Ú½º¸¦ ¶ç¿ì±â À§ÇÑ ÇÔ¼ö¸¦
¸¸µç´Ù. |
|||||||||
CSRs232Doc Ŭ·¡½º¿¡ ¿Âµµ¸¦
ÀúÀåÇϱâ À§ÇÑ º¯¼ö¸¦
¼±¾ðÇÑ´Ù. |
|||||||||
// SRs232Doc.h : CSRs232Doc Ŭ·¡½ºÀÇÀÎÅÍÆäÀ̽º // #pragma once class CSRs232Doc : public
CDocument { protected: // serialization¿¡¼¸¸¸¸µé¾îÁý´Ï´Ù. CSRs232Doc(); DECLARE_DYNCREATE(CSRs232Doc) // Ư¼ºÀÔ´Ï´Ù. public: double dTemp; //ÇöÀç¿ÂµµÀúÀå |
|
||||||||
IDD_DLG_TEMP ´ÙÀ̾î·Î±× ¹Ú½º¿¡
µµ±¸»óÀÚ CWNumEdit
Control·Î ¼ýÀÚ Ç¥½ÃâÀ» ³Ö°í ¸¶¿ì½º ¿À¸¥ÂÊ۸¦ ´·¯ º¯¼öÃß°¡¸¦ ¼±ÅÃÇÏ°í º¯¼ö¸íÀ» ¡°m_dTemp¡±·Î ÇÑ´Ù. |
|||||||||
±×·¡ÇÁ¸¦ Ãß°¡ÇÏ°í º¯¼ö¸íÀ» ¡°m_Graph¡±·Î ÇÑ´Ù. |
|||||||||
CDlgTemp Ŭ·¡½º¿¡ ¾Æ·¡¿Í °°ÀÌ ÇöÀç µ¥ÀÌÅ͸¦ ¾÷µ¥ÀÌÆ® Çϱâ À§ÇÑ ÇÔ¼ö¸¦
¸¸µç´Ù.
|
|||||||||
#include "stdafx.h" #include "SRs232.h" #include "DlgTemp.h" // ´ÙÀ½¼ø¼´ë·ÎÇØ´õÆÄÀÏÀ»Ãß°¡Çؾ߿¡·¯°¡¾ø´Ù. #include
"MainFrm.h" #include
"SRs232Doc.h" #include "SRs232View.h" //===============
»ý·« ===================== void CDlgTemp::UpdatePanelData(void) { m_dTemp.Value=((CSRs232Doc
*)((CMainFrame *)AfxGetMainWnd())->GetActiveDocument())->dTemp; m_Graph.GetPlots().Item("Plot-1").ChartY(m_dTemp.Value); } |
|
||||||||
View Ŭ·¡½º¿¡¼ ´ÙÀ½À» ¼öÁ¤ÇÑ´Ù. |
|||||||||
LONG CSRs232View::OnCommunication(UINT port, LONG
lParam) //
(7) { BYTE
aByte=0x00; int size= (m_ComuPort.m_QueueRead).GetSize(); for( int i=0; i<
size; i++ ) { (m_ComuPort.m_QueueRead).GetByte(&aByte); if(aByte==0x02) iText=0; //
Åë½Å½ÃÀÛÀ»³ªÅ¸³½´Ù. if( aByte!= NULL ) buff[iText++]= aByte; else { iText--; size--; } } CSRs232Doc* pDoc
= GetDocument(); if(aByte==0x0A) {// Åë½Å³¡À»³ªÅ¸³½´Ù. if(buff[3]=='D'
&& buff[4]=='R' &&
buff[5]=='S' && buff[7]=='O' && buff[8]=='K')
{ dTemp=StringToDouble(&buff[10])/10.; //RedrawWindow(); pDoc->dTemp =
dTemp; pDlgTemp->UpdatePanelData(); } } return 0; } |
|
||||||||
´ÙÀ½Àº ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇϸé ȸ鿡 ¹Ù·Î ¿Âµµ ´ÙÀ̾î·Î±×¹Ú½º°¡ ³ª¿Àµµ·Ï ÇÁ·Î±×·¥ÇÑ´Ù. CSRs232App::InitInstance()
ÇÔ¼ö¿¡ ´ÙÀ½À» Ãß°¡ÇÑ´Ù. |
|||||||||
BOOL CSRs232App::InitInstance() { // ÀÀ¿ëÇÁ·Î±×·¥¸Å´ÏÆä½ºÆ®°¡ComCtl32.dll ¹öÀü6 ÀÌ»óÀ»»ç¿ëÇÏ¿©ºñÁÖ¾ó½ºÅ¸ÀÏÀ» // »ç¿ëÇϵµ·ÏÁöÁ¤Çϴ°æ¿ì, Windows XP »ó¿¡¼¹Ýµå½ÃInitCommonControlsEx()°¡ÇÊ¿äÇÕ´Ï´Ù. // InitCommonControlsEx()¸¦»ç¿ëÇÏÁö¾ÊÀ¸¸éâÀ»¸¸µé¼ö¾ø½À´Ï´Ù. INITCOMMONCONTROLSEX
InitCtrls; InitCtrls.dwSize
= sizeof(InitCtrls); // ÀÀ¿ëÇÁ·Î±×·¥¿¡¼»ç¿ëÇÒ¸ðµç°ø¿ëÄÁÆ®·ÑŬ·¡½º¸¦Æ÷ÇÔÇϵµ·Ï // ÀÌÇ׸ñÀ»¼³Á¤ÇϽʽÿÀ. InitCtrls.dwICC
= ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); // OLE ¶óÀ̺귯¸®¸¦ÃʱâÈÇÕ´Ï´Ù. if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); // Ç¥ÁØÃʱâÈ // À̵é±â´ÉÀ»»ç¿ëÇÏÁö¾Ê°íÃÖÁ¾½ÇÇàÆÄÀÏÀÇÅ©±â¸¦ÁÙÀÌ·Á¸é // ¾Æ·¡¿¡¼ÇÊ¿ä¾ø´ÂƯÁ¤ÃʱâÈ // ·çƾÀ»Á¦°ÅÇØ¾ßÇÕ´Ï´Ù. // ÇØ´ç¼³Á¤ÀÌÀúÀåµÈ·¹Áö½ºÆ®¸®Å°¸¦º¯°æÇϽʽÿÀ. // TODO: À̹®ÀÚ¿À»È¸»ç¶Ç´ÂÁ¶Á÷ÀÇÀ̸§°ú°°Àº // ÀûÀýÇѳ»¿ëÀ¸·Î¼öÁ¤ÇؾßÇÕ´Ï´Ù. SetRegistryKey(_T("·ÎÄÃÀÀ¿ëÇÁ·Î±×·¥¸¶¹ý»ç¿¡¼»ý¼ºµÈÀÀ¿ëÇÁ·Î±×·¥")); LoadStdProfileSettings(4); // MRU¸¦Æ÷ÇÔÇÏ¿©Ç¥ÁØINI ÆÄÀϿɼÇÀ»·ÎµåÇÕ´Ï´Ù. // ÀÀ¿ëÇÁ·Î±×·¥Àǹ®¼ÅÛÇø´À»µî·ÏÇÕ´Ï´Ù. ¹®¼ÅÛÇø´Àº // ¹®¼, ÇÁ·¹ÀÓâ¹×ºä»çÀÌÀÇ¿¬°á¿ªÇÒÀ»ÇÕ´Ï´Ù. CSingleDocTemplate*
pDocTemplate; pDocTemplate
= new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CSRs232Doc), RUNTIME_CLASS(CMainFrame), // ÁÖSDI ÇÁ·¹ÀÓâÀÔ´Ï´Ù. RUNTIME_CLASS(CSRs232View)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // Ç¥Áؼиí·É, DDE, ÆÄÀÏ¿±â¿¡´ëÇѸí·ÉÁÙÀ»±¸¹®ºÐ¼®ÇÕ´Ï´Ù. CCommandLineInfo
cmdInfo; ParseCommandLine(cmdInfo); // ¸í·ÉÁÙ¿¡ÁöÁ¤µÈ¸í·ÉÀ»µð½ºÆÐÄ¡ÇÕ´Ï´Ù. // ÀÀ¿ëÇÁ·Î±×·¥ÀÌ/RegServer, /Register, /Unregserver ¶Ç´Â/Unregister·Î½ÃÀ۵Ȱæ¿ìFALSE¸¦¹ÝȯÇÕ´Ï´Ù. if (!ProcessShellCommand(cmdInfo)) return FALSE; // âÇϳª¸¸ÃʱâȵǾúÀ¸¹Ç·ÎÀ̸¦Ç¥½ÃÇϰí¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù. m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); ((CSRs232View
*)((CMainFrame
*)AfxGetMainWnd())->GetActiveView())->pDlgTemp->ShowWindow(SW_MAXIMIZE);; // Á¢¹Ì»ç°¡ÀÖÀ»°æ¿ì¿¡¸¸DragAcceptFiles¸¦È£ÃâÇÕ´Ï´Ù. // SDI ÀÀ¿ëÇÁ·Î±×·¥¿¡¼´ÂProcessShellCommand
ÈÄ¿¡ÀÌ·¯ÇÑÈ£ÃâÀ̹߻ýÇØ¾ßÇÕ´Ï´Ù. return TRUE; } |
|
||||||||
°ú Á¦ |
|||||||||