ÇнÀ¸ñÇ¥    1

ÇнÀÁÖÁ¦    1

¿¹½À³»¿ë    1

½Ç½À¹æ¹ý    1

°ú    Á¦    1

¿ÂµµÁ¦¾î(½Ì±Û´ÙÅ¥¸ÕÆ®)

ÇнÀ¸ñÇ¥

´ÙÀ̾î·Î±× ¹Ú½º¸¦ ¸¸µé°í ¸Þ´º¿¡¼­ À̸¦ ¼±ÅÃÇÏ¿© Á¦¾îÇÑ´Ù.

ÇнÀÁÖÁ¦

¼Û½Å°ú ¼ö½Å ½ÅÈ£ÀÇ Ã³¸®

Åë½Å¼Óµµ

¿¹½À³»¿ë

Åë½Å ÀÎÅÍ·´Æ®, Åë½Å¹öÆÛ

½Ç½À¹æ¹ý

´ÙÀ̾î·Î±×¸¦ ¸¸µç´Ù.

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;

}

 

 arrow01cóÀ½

°ú    Á¦