|
ÅÊÅ©2´ë ¼öÀ§ ÃøÁ¤ |
|||
ÇнÀ¸ñÇ¥ |
||||
1´ëÀÇ ÅÊÅ©´Â ÀúÁ¶·Î »ç¿ëÇϰí 1´ë´Â ¹°ÀÌ Èê·¯³ª°¡´Â »óÅ¿¡¼ ¼öÀ§Á¶ÀýÀ» ÇÑ´Ù. |
||||
ÇнÀÁÖÁ¦ |
||||
1. ¹°ÅÊÅ©¸¦ 2´ë ¸¸µé°í 1´ë´Â ÀúÁ¶·Î »ç¿ëÇϰí 1´ë´Â ¼öÀ§Á¶Àý¿ëÀ¸·Î »ç¿ëÇÑ´Ù. 2. ȸ鿡¼ Á¶ÀýÇÒ ¹°ÀÇ ³ôÀÌ¿Í Á¦¾î ¹üÀ§¸¦ ¼±ÅÃÇÏ¸é ÆßÇÁ°¡ On/Off µÇ¸é¼ ¼öÀ§¸¦ Á¶ÀýÇÑ´Ù. 3. ±âº» ÇÁ·Î±×·¥Àº Àü ½Ã°£ÀÇ ÅÊÅ© ¼öÀ§ Á¶Àý ÇÁ·Î±×·¥À» ÀÌ¾î¼ ÀÛ¼ºÇÑ´Ù. |
||||
|
|
|||
´ÙÀ½°ú ȸ·Î¸¦ ¿¬°áÇÑ´Ù. ÀÌ ¶§ ¡°USB-6008¡±¿¡´Â DC24V³ª AC220V ´ÜÀÚ°¡ ¿¬°áµÇ¸é PC°¡ ȸ¼Õ µÊÀ¸·Î °¢º°È÷ Á¶½ÉÇØ¾ß ÇÑ´Ù. |
||||
¿¹½À³»¿ë |
||||
|
||||
½Ç½À¹æ¹ý |
||||
¸ñ Â÷ |
||||
´ÙÀ̾î·Î±× ¹Ú½º¿¡ ±×¸²°ú °°ÀÌ ÅÊÅ©¸¦ ¸ðµÎ º¹»ç ÇÏ¿© ¶È°°ÀÌ 2°³¸¦ ¸¸µé°í ÆßÇÁ Led¸¦ Ãß°¡ÇÑ´Ù. ±×¸®°í ±×·¡ÇÁ¸¦ Ãß°¡ÇÑ´Ù. ¾Æ·¡´Â ¸¶¿ì½º·Î ¼±ÅÃÇÏ°í ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» ´·¯¼ º¯¼ö Ãß°¡¸¦ ÇÏ¿© ¸â¹ö º£¸®¾îºíÀ» Á¤ÀÇ ÇÑ´Ù. |
||||
Çì´õ ÆÄÀÏ¿¡ ¾Æ·¡¸¦ Ãß°¡ÇÑ´Ù. |
||||
|
// LevelDlg.h : Çì´õÆÄÀÏ // #pragma once #include "nislide.h" #include "nibutton.h" #include "ninumedit.h" #include "nigraph.h" // CLevelDlg ´ëÈ»óÀÚ class CLevelDlg : public
CDialog { // »ý¼ºÀÔ´Ï´Ù. public: CNiDAQmxTask
TaskIn01; //
ÀÔ·ÂÀ»À§ÇÑTask CNiDAQmxTask
TaskIn02; //
ÀÔ·ÂÀ»À§ÇÑTask CNiDAQmxTask
TaskOut01; // Ãâ·ÂÀ»À§ÇÑTask CNiDAQmxTask
TaskOut02; CLevelDlg(CWnd*
pParent = NULL); // Ç¥ÁØ»ý¼ºÀÚÀÔ´Ï´Ù. // ´ÙÀ̾î·Î±×¹Ú½º¿¡±Û¾¾¸¦¾²±âÀ§ÇÑÁ¤ÀÇ BOOL
m_bTransparent; COLORREF m_colorText; COLORREF m_colorBk; LOGFONT m_logFont; // ´ëÈ»óÀÚµ¥ÀÌÅÍÀÔ´Ï´Ù. enum { IDD = IDD_LEVEL_DIALOG }; protected: virtual void
DoDataExchange(CDataExchange* pDX); // DDX/DDV Áö¿øÀÔ´Ï´Ù. // ±¸ÇöÀÔ´Ï´Ù. protected: HICON
m_hIcon; // »ý¼ºµÈ¸Þ½ÃÁö¸ÊÇÔ¼ö virtual BOOL OnInitDialog(); afx_msg
void OnSysCommand(UINT nID, LPARAM lParam); afx_msg
void OnPaint(); afx_msg
HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: NI::CNiSlide
m_Tank1; afx_msg
void OnTimer(UINT_PTR nIDEvent); NI::CNiSlide
m_Alarm1; NI::CNiButton
m_bLed1_1; NI::CNiButton
m_bLed1_2; NI::CNiButton
m_bLed2_1; NI::CNiButton
m_bLed2_2; NI::CNiSlide
m_Alarm2; NI::CNiSlide
m_Tank2; public: NI::CNiNumEdit
m_dK; public: NI::CNiButton
m_nPump; NI::CNiGraph
m_Graph; }; |
|
||
¡°LevelDlg.cpp¡± ÆÄÀÏ¿¡¼ ´ÙÀ½ »¡°£ ±Û¾¾ ºÎºÐÀ» ¼öÁ¤ÇÑ´Ù. |
||||
|
// LevelDlg.cpp : ±¸ÇöÆÄÀÏ // #include "stdafx.h" #include "Level.h" #include "LevelDlg.h" #include <stdlib.h> #ifdef _DEBUG #define new DEBUG_NEW #endif CNiBoolVector vector(8); // ÀÀ¿ëÇÁ·Î±×·¥Á¤º¸¿¡»ç¿ëµÇ´ÂCAboutDlg ´ëÈ»óÀÚÀÔ´Ï´Ù. class CAboutDlg : public
CDialog { public: CAboutDlg(); // ´ëÈ»óÀÚµ¥ÀÌÅÍÀÔ´Ï´Ù. enum { IDD = IDD_ABOUTBOX }; protected: virtual void
DoDataExchange(CDataExchange* pDX); //
DDX/DDV Áö¿øÀÔ´Ï´Ù. // ±¸ÇöÀÔ´Ï´Ù. protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // CLevelDlg ´ëÈ»óÀÚ CLevelDlg::CLevelDlg(CWnd* pParent /*=NULL*/) :
CDialog(CLevelDlg::IDD, pParent) { m_hIcon
= AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CLevelDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX,
IDC_CWSLIDE1, m_Tank1); DDX_Control(pDX,
IDC_CWSLIDE2, m_Alarm1); DDX_Control(pDX,
IDC_CWBOOLEAN1, m_bLed1_1); DDX_Control(pDX,
IDC_CWBOOLEAN2, m_bLed1_2); DDX_Control(pDX,
IDC_CWBOOLEAN3, m_bLed2_1); DDX_Control(pDX,
IDC_CWBOOLEAN4, m_bLed2_2); DDX_Control(pDX,
IDC_CWSLIDE4, m_Alarm2); DDX_Control(pDX,
IDC_CWSLIDE3, m_Tank2); DDX_Control(pDX,
IDC_CWNUMEDIT1, m_dK); DDX_Control(pDX,
IDC_CWBOOLEAN5, m_nPump); DDX_Control(pDX,
IDC_CWGRAPH1, m_Graph); } BEGIN_MESSAGE_MAP(CLevelDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_WM_TIMER() END_MESSAGE_MAP() // CLevelDlg ¸Þ½ÃÁö󸮱â BOOL CLevelDlg::OnInitDialog() { CDialog::OnInitDialog(); // ½Ã½ºÅÛ¸Þ´º¿¡"Á¤º¸..." ¸Þ´ºÇ׸ñÀ»Ãß°¡ÇÕ´Ï´Ù. // IDM_ABOUTBOX´Â½Ã½ºÅÛ¸í·É¹üÀ§¿¡ÀÖ¾î¾ßÇÕ´Ï´Ù. 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); } } // ÀÌ´ëÈ»óÀÚÀǾÆÀÌÄÜÀ»¼³Á¤ÇÕ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥ÀÇÁÖâÀÌ´ëÈ»óÀÚ°¡¾Æ´Ò°æ¿ì¿¡´Â // ÇÁ·¹ÀÓ¿öÅ©°¡ÀÌÀÛ¾÷À»ÀÚµ¿À¸·Î¼öÇàÇÕ´Ï´Ù. SetIcon(m_hIcon,
TRUE); // Å«¾ÆÀÌÄÜÀ»¼³Á¤ÇÕ´Ï´Ù. SetIcon(m_hIcon,
FALSE); // ÀÛÀº¾ÆÀÌÄÜÀ»¼³Á¤ÇÕ´Ï´Ù. // TODO: ¿©±â¿¡Ãß°¡ÃʱâÈÀÛ¾÷À»Ãß°¡ÇÕ´Ï´Ù. // µðÁöÅ»Ãâ·ÂÀ»À§ÇÑÃʱâÈ //========== ÆùÆ®¼³Á¤=========================== m_bTransparent =
FALSE; m_colorText = RGB(0, 0, 0); //
ÆùÆ®»ö»ó m_colorBk = RGB(230,230,230); //
ÆùÆ®¹è°Ï»ö»ó m_logFont.lfHeight =
-40; //ÆùƮũ±â m_logFont.lfWidth =
0; m_logFont.lfEscapement =
0; m_logFont.lfOrientation =
0; //m_logFont.lfWeight =
FW_NORMAL; m_logFont.lfWeight =
900; // ±½Àº±Û¾¾ m_logFont.lfItalic =
FALSE; m_logFont.lfUnderline =
FALSE; m_logFont.lfStrikeOut =
FALSE; m_logFont.lfCharSet =
DEFAULT_CHARSET; m_logFont.lfOutPrecision =
OUT_CHARACTER_PRECIS; m_logFont.lfClipPrecision = CLIP_CHARACTER_PRECIS; m_logFont.lfQuality =
DEFAULT_QUALITY; m_logFont.lfPitchAndFamily = DEFAULT_PITCH|FF_DONTCARE; strcpy(m_logFont.lfFaceName,
"Arial"); //========== ÆùÆ®¼³Á¤=========================== vector[0]=1;vector[1]=1;vector[2]=1;vector[3]=1; vector[4]=1;vector[5]=1;vector[6]=1;vector[7]=1; double minimum=-10; double maximum=10; TaskIn01.AIChannels.CreateVoltageChannel("Dev1/ai0",_T(""),
static_cast<DAQmxAITerminalConfiguration>(-1),
minimum, maximum, DAQmxAIVoltageUnitsVolts); TaskIn02.AIChannels.CreateVoltageChannel("Dev1/ai1",_T(""),
static_cast<DAQmxAITerminalConfiguration>(-1),
minimum, maximum, DAQmxAIVoltageUnitsVolts); TaskOut01.DOChannels.CreateChannel("Dev1/port0/line0:7",
"", DAQmxOneChannelForAllLines); TaskOut02.DOChannels.CreateChannel("Dev1/port0/line0:7",
"", DAQmxOneChannelForAllLines); SetTimer(1,200,NULL); return TRUE;
// Æ÷Ä¿½º¸¦ÄÁÆ®·Ñ¿¡¼³Á¤ÇÏÁö¾ÊÀ¸¸éTRUE¸¦¹ÝȯÇÕ´Ï´Ù. } void CLevelDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg
dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID,
lParam); } } // ´ëÈ»óÀÚ¿¡ÃÖ¼ÒÈ´ÜÃ߸¦Ãß°¡ÇÒ°æ¿ì¾ÆÀÌÄÜÀ»±×¸®·Á¸é // ¾Æ·¡Äڵ尡ÇÊ¿äÇÕ´Ï´Ù. ¹®¼/ºä¸ðµ¨À»»ç¿ëÇÏ´ÂMFC ÀÀ¿ëÇÁ·Î±×·¥Àǰæ¿ì¿¡´Â // ÇÁ·¹ÀÓ¿öÅ©¿¡¼ÀÌÀÛ¾÷À»ÀÚµ¿À¸·Î¼öÇàÇÕ´Ï´Ù. void CLevelDlg::OnPaint() { /* //
ÆùÆ®¸¦¾²±âÀ§ÇØ¿ø·¡ÀÇÇÔ¼ö¸¦Áö¿ì°í¾Æ·¡ÇÁ·Î±×·¥À»Ãß°¡ÇÑ´Ù. if
(IsIconic()) { CPaintDC
dc(this); // ±×¸®±â¸¦À§Çѵð¹ÙÀ̽ºÄÁÅØ½ºÆ® SendMessage(WM_ICONERASEBKGND,
reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); //
Ŭ¶óÀÌ¾ðÆ®»ç°¢Çü¿¡¼¾ÆÀÌÄÜÀ»°¡¿îµ¥¿¡¸ÂÃä´Ï´Ù. int
cxIcon = GetSystemMetrics(SM_CXICON); int
cyIcon = GetSystemMetrics(SM_CYICON); CRect
rect; GetClientRect(&rect); int
x = (rect.Width() - cxIcon + 1) / 2; int
y = (rect.Height() - cyIcon + 1) / 2; //
¾ÆÀÌÄÜÀ»±×¸³´Ï´Ù. dc.DrawIcon(x,
y, m_hIcon); } else { CDialog::OnPaint(); } */ CPaintDC
dc(this); // device context for painting // TODO: Add your message
handler code here CRect rect; CString s; int x,y; GetClientRect(&rect); // LOGFONT·ÎºÎÅÍÆùÆ®¸¦»ý¼º CFont newFont, *pOldFont; newFont.CreateFontIndirect(&m_logFont); // »ý¼ºµÈÆùÆ®¸¦DC¿¡¼±Åà pOldFont = (CFont
*)dc.SelectObject(&newFont); // ÅØ½ºÆ®ÀÇÀü°æ»ö°ú¹è°æ»ö¼³Á¤ dc.SetTextColor(m_colorText); dc.SetBkColor(m_colorBk); // ¹è°æ¸ðµå¸¦¼³Á¤ if(m_bTransparent)
dc.SetBkMode(TRANSPARENT); else dc.SetBkMode(OPAQUE); // ÅØ½ºÆ®¸¦±×¸² x=70; y=0; // ±Û¾¾ÀÇÀ§Ä¡ rect=CRect(x,y,x+900,y+50); // ±Û¾¾¸¦¾²´Â¹Ú½ºÀÇÅ©±â dc.DrawText("2008³â¸ÞīƮ·Î´Ð½º°ú¼öÀ§Á¶ÀýÁ¹¾÷ÀÛǰ", &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER); // Do not call CDialog::OnPaint() for painting messages } // »ç¿ëÀÚ°¡ÃÖ¼ÒȵÈâÀ»²ô´Âµ¿¾È¿¡Ä¿¼°¡Ç¥½ÃµÇµµ·Ï½Ã½ºÅÛ¿¡¼ // ÀÌÇÔ¼ö¸¦È£ÃâÇÕ´Ï´Ù. HCURSOR CLevelDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CLevelDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: ¿©±â¿¡¸Þ½ÃÁö󸮱âÄڵ带Ãß°¡¹×/¶Ç´Â±âº»°ªÀ»È£ÃâÇÕ´Ï´Ù.
CNiString data; double meanValue,meanValue2; //µ¥ÀÌÅ͸¦ÃøÁ¤ÇÑ´Ù. CNiDAQmxAnalogSingleChannelReader
reader(TaskIn01.Stream); CNiDAQmxAnalogSingleChannelReader
reader2(TaskIn02.Stream); //ÃøÁ¤°ªÀ»ÅÊÅ©·¹º§·ÎÃâ·ÂÇÑ´Ù. data<<reader.ReadSingleSample(); data >> meanValue; m_Tank1.Value = meanValue; m_Alarm1.GetPointers().Item(1).Value
= meanValue; data<<reader2.ReadSingleSample(); data >> meanValue2; m_Tank2.Value = meanValue2; m_Alarm2.GetPointers().Item(1).Value
= meanValue2; // ÅÊÅ©¼öÀ§ÃÖ´ë, ÃÖ¼Ò¼³Á¤¿¡µû¸¥Ãâ·ÂÀ»³»º¸³½´Ù. // ÅÊÅ©ÀÇ»óÀ§·¹º§Led ·¥ÇÁÇ¥½Ã //(»óÀ§·¹º§º¸´Ù³ôÀ¸¸éÃâ·ÂÀ»¸ØÃá´Ù.) if(meanValue
>= m_Alarm1.GetPointers().Item(3).Value) { m_bLed1_1.Value
= 1; //vector[0]=1; } else m_bLed1_1.Value
= 0; //ÆßÇÁÃâ·ÂÁ¦¾î double
k=m_dK.Value; if(meanValue >=
m_Alarm1.GetPointers().Item(3).Value+m_dK.Value) { vector[0]=1; m_nPump.Value
= 0; } else if(meanValue <=
m_Alarm1.GetPointers().Item(3).Value-m_dK.Value) { vector[0]=0; m_nPump.Value
= 1; } // ÅÊÅ©ÀÇÇÏÀ§·¹º§Led ·¥ÇÁÇ¥½Ã //(ÇÏÀ§·¹º§º¸´Ù³¸À¸¸éÃâ·ÂÀ»³»º¸³½´Ù.) if(meanValue<=m_Alarm1.GetPointers().Item(2).Value)
{ m_bLed1_2.Value
= 0; //vector[0]=0; } else m_bLed1_2.Value
= 0; // ÅÊÅ©ÀÇ»óÀ§·¹º§Led ·¥ÇÁÇ¥½Ã if(meanValue2
>= m_Alarm2.GetPointers().Item(3).Value) m_bLed2_1.Value
= 1; else m_bLed2_1.Value
= 0; // ÅÊÅ©ÀÇÇÏÀ§·¹º§Led ·¥ÇÁÇ¥½Ã if(meanValue2<=m_Alarm2.GetPointers().Item(2).Value)
m_bLed2_2.Value
= 1; else m_bLed2_2.Value
= 0; CNiDAQmxDigitalSingleChannelWriter
writer(TaskOut01.Stream); writer.WriteSingleSampleMultiLine(true,
vector); // ±×·¡ÇÁ¸¦±×¸°´Ù. m_Graph.GetPlots().Item("Plot-1").ChartY(meanValue); m_Graph.GetPlots().Item("Plot-2").ChartY(m_Alarm1.GetPointers().Item(3).Value); CDialog::OnTimer(nIDEvent); } |
|
||
|
||||
|
||||
°ú Á¦ |
||||
|
||||
Áß¿äÇÔ¼ö |
||||
|
||||