⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proppage1.cpp

📁 使用C开发的嵌入式平台软件源程序.有串行通讯、数据库入库等功能。
💻 CPP
字号:
// PropPage1.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "PropPage1.h"
#include "Database.h"
#include "前置机.h"

IMPLEMENT_DYNCREATE(CPropPage1, CPropertyPage)

CPropPage1::CPropPage1() : CPropertyPage(CPropPage1::IDD){
}

CPropPage1::~CPropPage1(){
}

void CPropPage1::DoDataExchange(CDataExchange* pDX){
	CPropertyPage::DoDataExchange(pDX);
	DDX_Control(pDX, IDLV_OVERVIEW, m_lcOverview);
}

BEGIN_MESSAGE_MAP(CPropPage1, CPropertyPage)
	ON_NOTIFY(LVN_ITEMCHANGED, IDLV_OVERVIEW, OnItemchangedOverview)
	ON_BN_CLICKED(IDC_BUTTON1, OnSendComm)
	ON_BN_CLICKED(IDC_BUTTON2, OnOpenStation)
	ON_BN_CLICKED(IDC_BUTTON3, OnOpenData)
	ON_BN_CLICKED(IDC_BUTTON4, OnOpenSend)
	ON_BN_CLICKED(IDC_BUTTON5, OnOpenPassWord)
	ON_WM_TIMER()
END_MESSAGE_MAP()

BOOL CPropPage1::OnInitDialog() {
	CPropertyPage::OnInitDialog();
    Socket_Total = 300; //套接口连接计数。五分钟之内不进行套接口连接。
 	m_uTimerID = (UINT)SetTimer(0x451,1000,NULL);//设定定时器时钟间隔.
    //m_uTimerID = SetTimer(1, 1000, 0);
	OnInitialComm();//串行口初始化.
	CenterWindow(GetDesktopWindow()); //窗口居中.
	return TRUE;  
}

void CPropPage1::OnTimer(UINT nIDEvent){
	CDialog::OnTimer(nIDEvent);
	MSG msg;
	while(::PeekMessage(&msg, m_hWnd, WM_TIMER, WM_TIMER, PM_REMOVE));
	OnRecieveComm();//接收数据.
	OnSocketSend();//套接口发送数据按钮程序.
}

void CPropPage1::OnDestroy(){
	CDialog::OnDestroy();
	KillTimer(m_uTimerID);
	CloseHandle(m_hIDComDev);//关闭串行口.
	//free(g_pszSQLQueryString);
}

BOOL CPropPage1::OnSetActive() {
	g_DB.SeekStationDB(CEDB_SEEK_BEGINNING);
	DWORD dwStyle = ListView_GetExtendedListViewStyle(m_lcOverview); //增加栅格线。
	dwStyle = LVS_EX_FULLROWSELECT; //增加栅格线。
	ListView_SetExtendedListViewStyle (m_lcOverview,dwStyle); //增加栅格线。
    for (int Column=m_lcOverview.GetHeaderCtrl()->GetItemCount(); Column >= 0; Column--) m_lcOverview.DeleteColumn(Column);//删除所有的表头。
	m_lcOverview.InsertColumn(0, TEXT("序号"), LVCFMT_LEFT, 40);
	m_lcOverview.InsertColumn(1, TEXT("站号"), LVCFMT_LEFT, 40);
	m_lcOverview.InsertColumn(2, TEXT("测站名称"), LVCFMT_LEFT, 100);
	m_lcOverview.InsertColumn(3, TEXT("雨量精度"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(4, TEXT("海拔高程"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(5, TEXT("来数时间"), LVCFMT_LEFT, 130);
	m_lcOverview.InsertColumn(6, TEXT("累计雨量"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(7, TEXT("雨量站"), LVCFMT_LEFT, 50);
	m_lcOverview.InsertColumn(8, TEXT("水位站"), LVCFMT_LEFT, 50);
	m_lcOverview.InsertColumn(9, TEXT("开度站"), LVCFMT_LEFT, 50);
	m_lcOverview.InsertColumn(10, TEXT("雨量阀值"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(11, TEXT("水位阀值"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(12, TEXT("水位采集间隔"), LVCFMT_LEFT, 80);
	m_lcOverview.InsertColumn(13, TEXT("数据自报间隔"), LVCFMT_LEFT, 80);
	m_lcOverview.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_lcOverview.DeleteAllItems();
	int nCount = 0;
    int nColumnCount = m_lcOverview.GetHeaderCtrl()->GetItemCount();
	CRecordStation record;
	bool bResult = g_DB.ReadStationRecord(record);
	while(bResult){	
        m_lcOverview.InsertItem(nCount, record.m_strNumber);
		m_lcOverview.SetItemText(nCount,1,record.m_strAddress);
		m_lcOverview.SetItemText(nCount,2,record.m_strName);
		m_lcOverview.SetItemText(nCount,3,record.m_strRainFenbian);
		m_lcOverview.SetItemText(nCount,4,record.m_strWaterHeight);
		m_lcOverview.SetItemText(nCount,5,record.m_DateTime);
		m_lcOverview.SetItemText(nCount,6,record.m_strRainTotal);
		m_lcOverview.SetItemText(nCount,7,record.m_strRainStation);
		m_lcOverview.SetItemText(nCount,8,record.m_strWaterStation);
		m_lcOverview.SetItemText(nCount,9,record.m_strKaiduStation);
		m_lcOverview.SetItemText(nCount,10,record.m_strSetup1);
		m_lcOverview.SetItemText(nCount,11,record.m_strSetup2);
		m_lcOverview.SetItemText(nCount,12,record.m_strSetup3);
		m_lcOverview.SetItemText(nCount,13,record.m_strSetup4);
        nCount++;
		bResult = g_DB.SeekStationDB(CEDB_SEEK_CURRENT, 1);
		if(bResult) bResult = g_DB.ReadStationRecord(record);
	}
	CCeDBApp *pCeDBApp = (CCeDBApp *)AfxGetApp();
	if(m_lcOverview.GetItemCount() < 1) pCeDBApp->m_nItem = -1;
	else m_lcOverview.SetItemState(pCeDBApp->m_nItem, LVIS_SELECTED, LVIS_SELECTED);
	return CPropertyPage::OnSetActive();
}

BOOL CPropPage1::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) {
	return CPropertyPage::OnNotify(wParam, lParam, pResult);
}

void CPropPage1::OnItemchangedOverview(NMHDR* pNMHDR, LRESULT* pResult) {
}

BOOL CPropPage1::OnCommand(WPARAM wParam, LPARAM lParam) {
	return CPropertyPage::OnCommand(wParam, lParam);
}


void CPropPage1::OnOpenStation(){//打开设置表按钮程序.
	DWORD dwStyle = ListView_GetExtendedListViewStyle(m_lcOverview); //增加栅格线。
	dwStyle = LVS_EX_FULLROWSELECT; //增加栅格线。
	ListView_SetExtendedListViewStyle (m_lcOverview,dwStyle); //增加栅格线。
    for (int Column=m_lcOverview.GetHeaderCtrl()->GetItemCount(); Column >= 0; Column--) m_lcOverview.DeleteColumn(Column);//删除所有的表头。
	m_lcOverview.InsertColumn(0, TEXT("序号"), LVCFMT_LEFT, 40);
	m_lcOverview.InsertColumn(1, TEXT("站号"), LVCFMT_LEFT, 40);
	m_lcOverview.InsertColumn(2, TEXT("测站名称"), LVCFMT_LEFT, 120);
	m_lcOverview.InsertColumn(3, TEXT("来数时间"), LVCFMT_LEFT, 130);
	m_lcOverview.InsertColumn(4, TEXT("雨量站"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(5, TEXT("水位站"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(6, TEXT("开度站"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(7, TEXT("雨量累计"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(8, TEXT("雨量精度"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(9, TEXT("海拔高程"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(10, TEXT("雨量阀值"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(11, TEXT("水位阀值"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(12, TEXT("水位采集间隔"), LVCFMT_LEFT, 60);
	m_lcOverview.InsertColumn(13, TEXT("数据自报间隔"), LVCFMT_LEFT, 60);
	int nCount = 0; CRecordStation record;
	m_lcOverview.DeleteAllItems();//清除所有的项目。
 	bool bResult = g_DB.SeekStationDB(CEDB_SEEK_BEGINNING, 0);
	bResult = g_DB.ReadStationRecord(record);
	while(bResult){//记录存在。
        m_lcOverview.InsertItem(nCount, record.m_strNumber);
		m_lcOverview.SetItemText(nCount,1,record.m_strAddress);
		m_lcOverview.SetItemText(nCount,2,record.m_strName);
		m_lcOverview.SetItemText(nCount,3,record.m_DateTime);
		m_lcOverview.SetItemText(nCount,4,record.m_strRainStation);
		m_lcOverview.SetItemText(nCount,5,record.m_strWaterStation);
		m_lcOverview.SetItemText(nCount,6,record.m_strKaiduStation);
		m_lcOverview.SetItemText(nCount,7,record.m_strRainTotal);
		m_lcOverview.SetItemText(nCount,8,record.m_strRainFenbian);
		m_lcOverview.SetItemText(nCount,9,record.m_strWaterHeight);
 		m_lcOverview.SetItemText(nCount,10,record.m_strSetup1);
		m_lcOverview.SetItemText(nCount,11,record.m_strSetup2);
		m_lcOverview.SetItemText(nCount,12,record.m_strSetup3);
		m_lcOverview.SetItemText(nCount,13,record.m_strSetup4);
        nCount++;//报表增加一行。
		bResult = g_DB.SeekStationDB(CEDB_SEEK_CURRENT, 1);
		if(bResult) bResult = g_DB.ReadStationRecord(record);
	}
}

void CPropPage1::OnOpenData(){//打开数据表按钮程序.
    CRecordData record;
	DWORD dwStyle = ListView_GetExtendedListViewStyle(m_lcOverview); //增加栅格线。
	dwStyle = LVS_EX_FULLROWSELECT; //增加栅格线。
	ListView_SetExtendedListViewStyle (m_lcOverview,dwStyle); //增加栅格线。
	for (int Column=m_lcOverview.GetHeaderCtrl()->GetItemCount(); Column >= 0; Column--) m_lcOverview.DeleteColumn(Column);//删除所有的表头。
	m_lcOverview.InsertColumn(0, TEXT("站号"), LVCFMT_LEFT, 40);
	m_lcOverview.InsertColumn(1, TEXT("站名"), LVCFMT_LEFT, 100);
	m_lcOverview.InsertColumn(2, TEXT("时间"), LVCFMT_LEFT, 130);
	m_lcOverview.InsertColumn(3, TEXT("类型"), LVCFMT_LEFT, 70);
	m_lcOverview.InsertColumn(4, TEXT("数据"), LVCFMT_LEFT, 80);
	m_lcOverview.DeleteAllItems();//清除所有的项目。
  	bool bResult = g_DB.SeekDataDB(CEDB_SEEK_END, 0);
	for(int nCount = 0; nCount <= 1000; nCount++){
	    if(bResult) bResult = g_DB.ReadDataRecord(record);
	    if(bResult){//记录存在。	
        m_lcOverview.InsertItem(nCount, record.m_strAddress);
		m_lcOverview.SetItemText(nCount,1,record.m_strName);
		m_lcOverview.SetItemText(nCount,2,record.m_DateTime);
		m_lcOverview.SetItemText(nCount,3,record.m_strType);
		m_lcOverview.SetItemText(nCount,4,record.m_strData);}
		bResult = g_DB.SeekDataDB(CEDB_SEEK_CURRENT, -1);
	}
}

void CPropPage1::OnOpenSend(){//打开数据传送表按钮程序.
    CRecordSend record;
	DWORD dwStyle = ListView_GetExtendedListViewStyle(m_lcOverview); //增加栅格线。
	dwStyle = LVS_EX_FULLROWSELECT; //增加栅格线。
	ListView_SetExtendedListViewStyle (m_lcOverview,dwStyle); //增加栅格线。
	for (int Column=m_lcOverview.GetHeaderCtrl()->GetItemCount(); Column >= 0; Column--) m_lcOverview.DeleteColumn(Column);//删除所有的表头。
	m_lcOverview.InsertColumn(0, TEXT("站号"), LVCFMT_LEFT, 40);
	m_lcOverview.InsertColumn(1, TEXT("站名"), LVCFMT_LEFT, 100);
	m_lcOverview.InsertColumn(2, TEXT("时间"), LVCFMT_LEFT, 130);
	m_lcOverview.InsertColumn(3, TEXT("类型"), LVCFMT_LEFT, 70);
	m_lcOverview.InsertColumn(4, TEXT("数据"), LVCFMT_LEFT, 80);
	m_lcOverview.DeleteAllItems();//清除所有的项目。
  	bool bResult = g_DB.SeekSendDB(CEDB_SEEK_END, 0);
	for(int nCount = 0; nCount <= 1000; nCount++){
	    if(bResult) bResult = g_DB.ReadSendRecord(record);
	    if(bResult){//记录存在。	
        m_lcOverview.InsertItem(nCount, record.m_strAddress);
		m_lcOverview.SetItemText(nCount,1,record.m_strName);
		m_lcOverview.SetItemText(nCount,2,record.m_DateTime);
		m_lcOverview.SetItemText(nCount,3,record.m_strType);
		m_lcOverview.SetItemText(nCount,4,record.m_strData);}
		bResult = g_DB.SeekSendDB(CEDB_SEEK_CURRENT, -1);
	}
    Socket_Total = 0; //立即向服务器发送数据.
}

void CPropPage1::OnOpenPassWord(){//打开密码设置表按钮程序.
    CRecordPassWord record;
	DWORD dwStyle = ListView_GetExtendedListViewStyle(m_lcOverview); //增加栅格线。
	dwStyle = LVS_EX_FULLROWSELECT; //增加栅格线。
	ListView_SetExtendedListViewStyle (m_lcOverview,dwStyle); //增加栅格线。
	for (int Column=m_lcOverview.GetHeaderCtrl()->GetItemCount(); Column >= 0; Column--) m_lcOverview.DeleteColumn(Column);//删除所有的表头。
	m_lcOverview.InsertColumn(0, TEXT("名称"), LVCFMT_LEFT, 100);
	m_lcOverview.InsertColumn(1, TEXT("数据"), LVCFMT_LEFT, 200);
	m_lcOverview.DeleteAllItems();//清除所有的项目。
  	bool bResult = g_DB.SeekPassWordDB(CEDB_SEEK_BEGINNING, 0);
	for(int nCount = 0; nCount <= 100; nCount++){
	    if(bResult) bResult = g_DB.ReadPassWordRecord(record);
	    if(bResult){//记录存在。	
        m_lcOverview.InsertItem(nCount, record.m_strName);
		m_lcOverview.SetItemText(nCount,1,record.m_strData);}
		bResult = g_DB.SeekPassWordDB(CEDB_SEEK_CURRENT, 1);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -