📄 dlg_para.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 + -