基于无线传感器网络的智能家居安防系统初步构建
int gogo=0; int speed=9600; int tab=0;
CString FilePath;
// 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() // CSerialPortTestDlg dialog
CSerialPortTestDlg::CSerialPortTestDlg(CWnd* pParent /*=NULL*/) : CDialog(CSerialPortTestDlg::IDD, pParent) { //{{AFX_DATA_INIT(CSerialPortTestDlg) m_strEditReceiveMsg = _T(\ m_strEditSendMsg = _T(\ //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_bSerialPortOpened=FALSE; //stop=FALSE; i=1; m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- 38 -
浙江理工大学信息电子学院本科毕业论文
}
void CSerialPortTestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSerialPortTestDlg) DDX_Control(pDX, IDC_COMBO_COMPORT, m_ctrlComboComPort); DDX_Text(pDX, IDC_EDIT_RECEIVEMSG, m_strEditReceiveMsg); DDV_MaxChars(pDX, m_strEditReceiveMsg, 1024); DDX_Text(pDX, IDC_EDIT_SENDMSG, m_strEditSendMsg); DDV_MaxChars(pDX, m_strEditSendMsg, 1024); DDX_Control(pDX, IDC_MULTICOLORPLOT, m_ctrlMultiColorPlot); //}}AFX_DATA_MAP }
BEGIN_MESSAGE_MAP(CSerialPortTestDlg, CDialog) //{{AFX_MSG_MAP(CSerialPortTestDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_OPEN, OnButtonOpen) ON_BN_CLICKED(IDC_BUTTON_CLOSE, OnButtonClose) ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend) ON_MESSAGE(WM_COMM_RXCHAR,OnComm) ON_BN_CLICKED(IDC_BUTTON1, OnButtonClear) ON_BN_CLICKED(IDC_RADIO_K, OnRadioK) ON_BN_CLICKED(IDC_RADIO_W, OnRadioW) ON_BN_CLICKED(IDC_RADIO_S, OnRadioS) ON_BN_CLICKED(IDC_RADIO_zz, OnRADIOzz) ON_BN_CLICKED(IDC_RADIO_xz, OnRADIOxz) ON_BN_CLICKED(IDC_BUTTON_Stop, OnBUTTONStop) ON_BN_CLICKED(IDC_BUTTON_OPENFAN, OnButtonOpenfan) ON_BN_CLICKED(IDC_BUTTON_CLOSEFAN, OnButtonClosefan) //}}AFX_MSG_MAP END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CSerialPortTestDlg message handlers BOOL CSerialPortTestDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add \ // 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); } }
- 39 -
基于无线传感器网络的智能家居安防系统初步构建
// 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 Isfanopen=TRUE; m_ctrlMultiColorPlot.zdx_bool=FALSE; zdx_ztr_choice+=\ FilePath=\ m_ctrlComboComPort.SetCurSel(0); zdx_danwei=\ ((CButton *)GetDlgItem(IDC_RADIO_K))->SetCheck(TRUE);//初始复选框为可燃气体 ((CButton *)GetDlgItem(IDC_RADIO_zz))->SetCheck(TRUE);//初始复选框为柱状显示 m_ctrlMultiColorPlot.SetTitle(\当前室内燃气浓度:\ m_ctrlMultiColorPlot.SetUnit(\ m_ctrlMultiColorPlot.LockRang(0.00f,270.00f); m_ctrlMultiColorPlot.SetPlotGranulatrity(4); m_ctrlMultiColorPlot.SetGridResolutionX(15); m_ctrlMultiColorPlot.ShowTitle(4); m_ctrlMultiColorPlot.SetPlotType(BAR); SetTimer(1,200,NULL);
return TRUE; // return TRUE unless you set the focus to a control }
void CSerialPortTestDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }
void CSerialPortTestDlg::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); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } }
- 40 -
浙江理工大学信息电子学院本科毕业论文
HCURSOR CSerialPortTestDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon;}
LONG CSerialPortTestDlg::OnComm(WPARAM ch,LPARAM port) {
int a,compare; CString str,STR_FAN_CTRL=\ CFile file; //显示当前时间 年-月-日 时:分:秒 tTime=CTime::GetCurrentTime(); //根据得到的当前时间格式化为字符串形式
strTime=tTime.Format(\年-%m月-%d日 当前时间:%H:%M:%S\ GetDlgItem(IDC_STATIC)->SetWindowText(strTime); ch=ch-110;//可根据实际环境调节 a=(int)(ch); if(m_ctrlMultiColorPlot.zdx_bool==FALSE) { if(zdx_ztr_choice==\可燃气预警处理 { if(a>300) if(Isfanopen==TRUE) { Isfanopen=FALSE; m_SerialPort.WriteToPort((LPCTSTR)\ } } if(zdx_ztr_choice==\温度预警处理 { if(a>28) if(Isfanopen==TRUE) { Isfanopen=FALSE; m_SerialPort.WriteToPort((LPCTSTR)\ } } if(zdx_ztr_choice==\湿度预警处理 { if(a>60) if(Isfanopen==TRUE) { Isfanopen=FALSE; m_SerialPort.WriteToPort((LPCTSTR)\ } } zdx_str.Format(\ m_strEditReceiveMsg+=zdx_str; Stor_str+=ch; m_strEditReceiveMsg+=zdx_danwei; m_strEditReceiveMsg+=\ i++; if(i==0) { Stor_str+=\
- 41 -
基于无线传感器网络的智能家居安防系统初步构建
} if(i==300)i=0; m_ctrlMultiColorPlot.SetData((float)a);
str.Format(\将数组转换为Cstring型变量 if (Stor_str.GetLength()>=300) { CStdioFile zdx_readfile; CString zdx_readstr1,zdx_readstr2; if(zdx_readfile.Open(FilePath,CFile::modeRead)) { while(zdx_readfile.ReadString(zdx_readstr1))//逐行查询,至到文件尾 { zdx_readstr2+=zdx_readstr1; } zdx_readfile.Close(); } if (file.Open(FilePath,CFile::modeCreate|CFile::modeReadWrite)) { file.Write(zdx_readstr2,zdx_readstr2.GetLength());//原来的数据 file.Write(Stor_str,300);//写入新的数据 file.Close(); Stor_str.Empty();//清除编辑框内容 } } if(m_strEditReceiveMsg.GetLength()>300)m_strEditReceiveMsg.Empty(); UpdateData(false); } return 0; }
void CSerialPortTestDlg::OnButtonOpen() { // TODO: Add your control notification handler code here int nPort=m_ctrlComboComPort.GetCurSel()+1; if(m_SerialPort.InitPort(this,nPort,9600,'n',8,1,EV_RXFLAG|EV_RXCHAR,512)) { m_SerialPort.StartMonitoring(); m_bSerialPortOpened=TRUE; ::MessageBox(NULL,\打开串口成功!\\n波特率:9600\\n奇偶校验:无\\n数据位:8\\n停止位:1\\n\提示!提示!\ } else { ::MessageBox(NULL,\没有发现此串口或被占用!\提示!提示!\ m_bSerialPortOpened=FALSE; } GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened); GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened); }
void CSerialPortTestDlg::OnButtonClose() { // TODO: Add your control notification handler code here m_SerialPort.ClosePort();
- 42 -