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

📄 dlg_para.cpp

📁 功能非常强大的数据采集系统
💻 CPP
字号:
// DLG_PARA.cpp : implementation file
//

#include "stdafx.h"
#include "Ncap.h"
#include "DLG_PARA.h"
#include "ADOConn.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern CNcapApp theApp;
/////////////////////////////////////////////////////////////////////////////
// DLG_PARA dialog


DLG_PARA::DLG_PARA(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_PARA::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_PARA)
	m_iAppend = 0;
	m_iMove = 0;
	m_iPage = 0;
	m_iPort = 0;
	m_bSave = FALSE;
	m_bStop = FALSE;
	m_iNumber = 0;
	m_iDs_time = 0;
	m_iChannel = -1;
	m_iAuto_move = -1;
	m_sUnit = _T("");
	m_iMultiple = 0;
	m_sName = _T("");
	m_fVoltage = 0.0f;
	//}}AFX_DATA_INIT
}


void DLG_PARA::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_PARA)
	DDX_Control(pDX, IDC_PARA_IPADDRESS, m_cIp);
	DDX_Control(pDX, IDC_PARA_COM_BIT, m_cCom_bit);
	DDX_Control(pDX, IDC_PARA_COM, m_cCom);
	DDX_Text(pDX, IDC_PARA_APPEND, m_iAppend);
	DDX_Text(pDX, IDC_PARA_MOVE, m_iMove);
	DDX_Text(pDX, IDC_PARA_PAGE, m_iPage);
	DDX_Text(pDX, IDC_PARA_PORT, m_iPort);
	DDX_Check(pDX, IDC_PARA_SAVE, m_bSave);
	DDX_Check(pDX, IDC_PARA_STOP, m_bStop);
	DDX_Text(pDX, IDC_PARA_NUMBER, m_iNumber);
	DDX_Text(pDX, IDC_PARA_DS_TIME, m_iDs_time);
	DDX_Radio(pDX, IDC_PARA_SIN, m_iChannel);
	DDX_Radio(pDX, IDC_PARA_MOVE_FLAG, m_iAuto_move);
	DDX_Text(pDX, IDC_PARA_UNIT, m_sUnit);
	DDX_Text(pDX, IDC_PARA_MULTIPLE, m_iMultiple);
	DDV_MinMaxInt(pDX, m_iMultiple, 1, 10000);
	DDX_Text(pDX, IDC_PARA_NAME, m_sName);
	DDV_MaxChars(pDX, m_sName, 20);
	DDX_Text(pDX, IDC_PARA_VOLTAGE, m_fVoltage);
	DDV_MinMaxFloat(pDX, m_fVoltage, 0.f, 5.f);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_PARA, CDialog)
	//{{AFX_MSG_MAP(DLG_PARA)
	ON_BN_CLICKED(IDC_PARA_OK, OnParaOk)
	ON_BN_CLICKED(IDC_PARA_CANCLE, OnParaCancle)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_PARA message handlers

//-------------------------------------------------------------------------------------------------
// 消息预处理(主要针对按键处理)
//-------------------------------------------------------------------------------------------------
BOOL DLG_PARA::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
	{
		CDialog* Pwnd=(CDialog*)GetActiveWindow();						//取得对话框指针 
		Pwnd->NextDlgCtrl();											//切换到下一个输入焦点 
		return true;
	}
	
	return CDialog::PreTranslateMessage(pMsg);
}

//-------------------------------------------------------------------------------------------------
// 对话窗初始化处理
// 参数:无
//-------------------------------------------------------------------------------------------------
BOOL DLG_PARA::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	BYTE v_bF1,v_bF2,v_bF3,v_bF4;
	CString v_sTemp=v_sIp;												//获得网络IP
	int v_iTemp=v_sTemp.Find(".");
	v_bF1=atoi(v_sTemp.Mid(0,v_iTemp));
	v_sTemp=v_sTemp.Mid(v_iTemp+1);
	v_iTemp=v_sTemp.Find(".");
	v_bF2=atoi(v_sTemp.Mid(0,v_iTemp));
	v_sTemp=v_sTemp.Mid(v_iTemp+1);
	v_iTemp=v_sTemp.Find(".");
	v_bF3=atoi(v_sTemp.Mid(0,v_iTemp));
	v_sTemp=v_sTemp.Mid(v_iTemp+1);
	v_bF4=atoi(v_sTemp);
	m_cIp.SetAddress(v_bF1,v_bF2,v_bF3,v_bF4);							//显示服务端IP
	m_iDs_time=v_iDs_time;												//时间间隔
	m_iNumber=v_iNumber;												//采集点数
	m_iChannel=v_iChannel;												//通道号
	m_iPort=v_iPort;													//网络端口
	m_iMove=v_iMove;													//移动点数
	m_iPage=v_iPage;													//一屏显示点数
	m_iAppend=v_iAppend;												//增加点数
	m_bSave=v_bSave;													//保存标志
	m_bStop=v_bStop;													//停止标志
	m_iAuto_move=v_iAuto_move;											//移动、增加选择
	m_sUnit=v_sUnit;													//物理量
	m_sName=v_sName;													//实验名称
	m_iMultiple=v_iMultiple;											//放大倍数
	m_fVoltage=v_fVoltage;												//初始电位

	m_cCom.SetCurSel(v_iCom);											//串口端口选择
	m_cCom_bit.SetCurSel(v_iCom_bit);									//串口速率选择
	
	UpdateData(false);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

//-------------------------------------------------------------------------------------------------
// 确认退出处理:保存修改的数据
// 参数:无
//-------------------------------------------------------------------------------------------------
void DLG_PARA::OnParaOk() 
{
	// TODO: Add your control notification handler code here
	CString		v_sTemp,v_sTemp1;										//临时变量
	CString		v_sSql;													//SQL语句
	char		v_sBuffer[10]="\0";										//临时缓冲区
	BYTE		v_bF1,v_bF2,v_bF3,v_bF4;								//临时变量

	UpdateData(true);
	if(m_iDs_time!=v_iDs_time)											//时间间隔
	{
		v_sTemp.Format("%d",m_iDs_time);
		v_sSql="UPDATE state SET zds_time="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iDs_time=m_iDs_time;
	}
	if(m_iNumber!=v_iNumber)											//采集点数
	{
		v_sTemp.Format("%d",m_iNumber);
		v_sSql="UPDATE state SET znumber="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iNumber=m_iNumber;
	}
	if(m_bSave!=v_bSave)												//自动保存
	{
		v_sTemp.Format("%d",m_bSave);
		v_sSql="UPDATE state SET zauto_save='"+v_sTemp+"'";
		We_save(v_sSql);												//执行命令
		theApp.a_bAuto_save=m_bSave;
	}
	if(m_bStop!=v_bStop)												//自动停止
	{
		v_sTemp.Format("%d",m_bStop);
		v_sSql="UPDATE state SET zauto_stop='"+v_sTemp+"'";
		We_save(v_sSql);												//执行命令
		theApp.a_bAuto_stop=m_bStop;
	}
	if(m_iChannel!=v_iChannel)											//通道号
	{
		v_sTemp.Format("%d",m_iChannel);
		v_sSql="UPDATE state SET zchannel='"+v_sTemp+"'";
		We_save(v_sSql);												//执行命令
		theApp.a_iChannel=m_iChannel;
	}
	if(m_iPage!=v_iPage)												//一屏显示点数
	{
		v_sTemp.Format("%d",m_iPage);
		v_sSql="UPDATE state SET znumber_page="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iNumber_page=m_iPage;
	}
	if(m_iMove!=v_iMove)												//自动移动点数
	{
		v_sTemp.Format("%d",m_iMove);
		v_sSql="UPDATE state SET znumber_move="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iNumber_move=m_iMove;
	}
	if(m_sUnit!=v_sUnit)												//物理量
	{
		v_sUnit=m_sUnit;
		v_sUnit.TrimLeft();
		v_sSql="UPDATE state SET zunit='"+v_sUnit+"'";
		We_save(v_sSql);												//执行命令
		theApp.a_sUnit=v_sUnit;
	}
	if(m_sName!=v_sName)												//实验名称
	{
		v_sName=m_sName;
		v_sName.TrimLeft();
		v_sSql="UPDATE state SET zname='"+v_sName+"'";
		We_save(v_sSql);												//执行命令
		theApp.a_sName=v_sName;
	}
	if(m_iAppend!=v_iAppend)											//自动增加点数
	{
		v_sTemp.Format("%d",m_iAppend);
		v_sSql="UPDATE state SET znumber_append="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iNumber_append=m_iAppend;
	}
	if(m_iMultiple!=v_iMultiple)										//放大倍数
	{
		v_sTemp.Format("%d",m_iMultiple);
		v_sSql="UPDATE state SET zmultiple="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iMultiple=m_iMultiple;
	}
	if(m_fVoltage!=v_fVoltage)											//初始电位
	{
		v_sTemp.Format("%.4f",m_fVoltage);
		v_sSql="UPDATE state SET zvoltage="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_fVoltage=m_fVoltage;
	}
	if(m_iAuto_move!=v_iAuto_move)										//自动增加点数
	{
		v_sTemp.Format("%d",m_iAuto_move);
		v_sSql="UPDATE state SET zauto_move="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iAuto_move=m_iAuto_move;
	}
	if(v_iCom!=m_cCom.GetCurSel())										//串口端口
	{
		v_sTemp.Format("%d",m_cCom.GetCurSel());
		v_sSql="UPDATE state SET zcom="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iCom=m_cCom.GetCurSel();
	}
	if(v_iCom_bit!=m_cCom_bit.GetCurSel())								//串口速率
	{
		v_sTemp.Format("%d",m_cCom_bit.GetCurSel());
		v_sSql="UPDATE state SET zcom_bit="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iBit=m_cCom_bit.GetCurSel();
	}

	if (m_cIp.IsBlank()||m_iPort==0)									//网络IP
	{
		MessageBox("  请输入服务器 IP 地址及其端口号 !  ","信息提示!",MB_OK);
		m_cIp.SetFocus();
		return;
	}
	if (m_cIp.GetAddress(v_bF1,v_bF2,v_bF3,v_bF4) < 4)
	{
		MessageBox("  非法的 IP 地址 !  ","信息提示!",MB_OK);
		m_cIp.SetFocus();
		return;
	}
	v_sTemp1=_itoa(v_bF1,v_sBuffer,10);									//获得IP字符串
	v_sTemp1 += _T('.');
	v_sTemp1 += _itoa(v_bF2,v_sBuffer,10);
	v_sTemp1 += _T('.');
	v_sTemp1 += _itoa(v_bF3,v_sBuffer,10);
	v_sTemp1 += _T('.');
	v_sTemp1 += _itoa(v_bF4,v_sBuffer,10);	
	if(v_sTemp1!=theApp.a_sIp)											//网络IP
	{
		v_sSql="UPDATE state SET zip='"+v_sTemp1+"'";
		We_save(v_sSql);												//执行命令
		theApp.a_sIp=v_sTemp1;
	}	

	if(m_iPort!=v_iPort)												//网络端口
	{
		v_sTemp.Format("%d",m_iPort);
		v_sSql="UPDATE state SET zport="+v_sTemp;
		We_save(v_sSql);												//执行命令
		theApp.a_iPort=m_iPort;
	}

	CDialog::OnOK();	
}

//-------------------------------------------------------------------------------------------------
// 取消退出处理:直接退出
// 参数:无
//-------------------------------------------------------------------------------------------------
void DLG_PARA::OnParaCancle() 
{
	// TODO: Add your control notification handler code here

	CDialog::OnCancel();	
}

//-------------------------------------------------------------------------------------------------
// 执行数据库命令
//-------------------------------------------------------------------------------------------------
bool DLG_PARA::We_save(CString v_sSql) 
{
	// TODO: Add your control notification handler code here
	bool v_bReturn=true;
	ADOConn v_cAdoConn;													// 数据库实例
	v_cAdoConn.OnInitADOConn(theApp.a_iDatabase_Type,theApp.a_sDatabase_Ip,theApp.a_sDatabase_Name,theApp.a_sDatabase_User,theApp.a_sDatabase_Password);
																		// 连接数据库
	if (!v_cAdoConn.ExecuteSQL((_bstr_t)v_sSql))						// 执行数据库操作
		v_bReturn=false;
	v_cAdoConn.ExitConnect();											//断开连接
	return v_bReturn;
}

//-------------------------------------------------------------------------------------------------
// 结束
//-------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

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