// AnalogPropertyDlg1.cpp : implementation file // #include "stdafx.h" #include "IDE.h" #include "AnalogPropertyDlg.h" #include "DlgSelectDev.h" #include "StringOperation.h" #include "DlgBitManager.h" #include ".\analogpropertydlg.h" #include "SelectVariantDlg.h" #include "DlgVarStatusManager.h" #include "DlgDatePlan.h" #include "Dlg_ShowMessage.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAnalogPropertyDlg dialog CAnalogPropertyDlg::CAnalogPropertyDlg(CWnd* pParent /*=NULL*/) : CDialog(CAnalogPropertyDlg::IDD, pParent) { //{{AFX_DATA_INIT(CAnalogPropertyDlg) //}}AFX_DATA_INIT m_operation=EDIT; m_DDXFields.SetSize(50); m_nVarID = 0; m_nVarSaveNum=0; m_nVarSaveNumOld=0; m_nPrevRow = 0; } void CAnalogPropertyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAnalogPropertyDlg) //}}AFX_DATA_MAP DDX_Control(pDX, IDC_COMBO_VAR_TYPE, m_cmbVarType); DDX_Control(pDX, IDC_COMBO_CODE_FUNC, m_cmbFuncCode); m_DDXFields.DDX(pDX); } BEGIN_MESSAGE_MAP(CAnalogPropertyDlg, CDialog) //{{AFX_MSG_MAP(CAnalogPropertyDlg) //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BTN_CANCEL, OnBnClickedBtnCancel) ON_BN_CLICKED(IDC_BTN_SAVE, OnBnClickedBtnSave) ON_BN_CLICKED(IDC_BTN_SEL_DEV, OnBnClickedBtnSelDev) ON_BN_CLICKED(IDC_BTN_SEL_REG, OnBnClickedBtnSelReg) ON_BN_CLICKED(IDC_BTN_SEL_BIT, OnBnClickedBtnSelBit) ON_CBN_SELENDOK(IDC_COMBO_VAR_TYPE, OnCbnSelendokComboVarType) ON_BN_CLICKED(IDC_BTN_SEL_ALARM_VAR1, OnBnClickedBtnSelAlarmVar) ON_BN_CLICKED(IDC_BTN_SET_STATUS1, OnBnClickedBtnSetStatus) ON_BN_CLICKED(IDC_BTN_DATE_PLAN, OnBnClickedBtnDatePlan) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAnalogPropertyDlg message handlers BOOL CAnalogPropertyDlg::OnInitDialog() { CDialog::OnInitDialog(); //排序所选的列号 int nTemp; for( int i=0;im_nArrayListID[j] ) { nTemp = m_nArrayListID[i]; m_nArrayListID[i] = m_nArrayListID[j]; m_nArrayListID[j] = nTemp; } } } int iIndex = 0; m_DDXFields.m_pWnd=this; m_DDXFields.SetDBType( g_strDBType ); m_DDXFields.ElementAt(iIndex).Set(_T("id"), IDC_EDT_VAR_ID); m_DDXFields.ElementAt(iIndex).m_description=g_strVarID; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("boolreserved3"), IDC_EDT_IS_MODIFY); m_DDXFields.ElementAt(iIndex).m_description=g_strIsModify; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T( "uid" ),IDC_EDT_VAR_UID) ; m_DDXFields.ElementAt(iIndex).m_description=g_strVarUid1; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T( "varname" ),IDC_EDT_VAR_NAME) ; m_DDXFields.ElementAt(iIndex).m_description=g_strVarName1; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T( "description" ),IDC_EDT_DESC) ; m_DDXFields.ElementAt(iIndex).m_description=g_strVarDesc; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("vartypeid"), IDC_EDT_VAR_TYPE_ID); m_DDXFields.ElementAt(iIndex).m_description=g_strVarTypeID; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("datalen"), IDC_EDT_VAR_DATA_LEN, _T("1"), false, false); m_DDXFields.ElementAt(iIndex).m_description=g_strVarDataLen; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("ondesc"), IDC_EDT_ON_DESC); m_DDXFields.ElementAt(iIndex).m_description=g_strOnDesc; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("offdesc"), IDC_EDT_OFF_DESC); m_DDXFields.ElementAt(iIndex).m_description=g_strOffDesc; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("maxvalues"), IDC_EDT_MAX_VALUES, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strMaxValues; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("minvalues"), IDC_EDT_MIN_VALUES, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strMinValues; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("maxconvtrate"), IDC_EDT_MAX_SCALE, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strMaxScale; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("minconvtrate"), IDC_EDT_MIN_SCALE, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strMinScale; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("lowerlimit"), IDC_EDT_LOWER_LIMIT, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strLowerLimit; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("upperlimit"), IDC_EDT_UPPER_LIMIT, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strUpperLimit; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("normalstate"), IDC_EDT_NORMAL_STATE, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strNormalState; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("setvalue"), IDC_EDT_SET_VALUE, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strSetValue; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("rearm"), IDC_EDT_REARM, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strRearm; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("offsets"), IDC_EDT_OFF_SET, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strOffset; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("unit"), IDC_EDT_UNIT); m_DDXFields.ElementAt(iIndex).m_description=g_strUint; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("collectfrequence"), IDC_EDT_COLLECT_FREQ, _T("3")); m_DDXFields.ElementAt(iIndex).m_description=g_strCollectFreq; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("coefficient"), IDC_EDT_COEF, _T("0")); m_DDXFields.ElementAt(iIndex).m_description=g_strCoef; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_FLOAT; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("warnlevel"), IDC_EDT_ALARM_LEVEL); m_DDXFields.ElementAt(iIndex).m_description=_T("告警级别"); m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("readonly"), IDC_EDT_READ_WRITE); m_DDXFields.ElementAt(iIndex).m_description=g_strReadWrite; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BIT; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("issave"), IDC_EDT_SAVE_DATA); m_DDXFields.ElementAt(iIndex).m_description=g_strSaveData; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("realtimeflag"), IDC_EDT_COLLECT_THRAD_DATA); m_DDXFields.ElementAt(iIndex).m_description=g_strCollectThreadData; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("reccurve"), IDC_EDT_SAVE_CURVE); m_DDXFields.ElementAt(iIndex).m_description=g_strSaveCurve; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("isdde"), IDC_EDT_IS_DDE); m_DDXFields.ElementAt(iIndex).m_description=g_strIsDDE; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("registernum"), IDC_EDT_REG_NUM); m_DDXFields.ElementAt(iIndex).m_description=g_strRegNum; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("funcid"), IDC_EDT_FUNC_ID); m_DDXFields.ElementAt(iIndex).m_description=g_strFuncID; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("childid"), IDC_EDT_CHILD_ID); m_DDXFields.ElementAt(iIndex).m_description=g_strChildID; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("var_item_id"), IDC_EDT_VAR_ITEM_ID); m_DDXFields.ElementAt(iIndex).m_description=g_strItemID; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("snmpoid"), IDC_EDT_SNMP_OID); m_DDXFields.ElementAt(iIndex).m_description=g_strSnmpOid; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("fields"), IDC_EDT_SNMP_PUBLIC); m_DDXFields.ElementAt(iIndex).m_description=g_strSnmpPublic; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("devtypeid"), IDC_EDT_DEV_TYPE_ID); m_DDXFields.ElementAt(iIndex).m_description=g_strDevTypeID; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("address"), IDC_EDT_VAR_START_ADDR); m_DDXFields.ElementAt(iIndex).m_description=g_strVarStartAddr; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("rs232cmd"), IDC_EDT_RS232_CMD); m_DDXFields.ElementAt(iIndex).m_description=g_strRs232Cmd; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("rs232type"), IDC_EDT_RS232_TYPE); m_DDXFields.ElementAt(iIndex).m_description=g_strRs232Type; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("rs232index"), IDC_EDT_RS232_INDEX); m_DDXFields.ElementAt(iIndex).m_description=g_strRs232Index; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("identifytime"), IDC_EDT_IDENTIFY_TIME); m_DDXFields.ElementAt(iIndex).m_description=g_strIndentifyTime; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("redetecttime"), IDC_EDT_REDETECT_TIME); m_DDXFields.ElementAt(iIndex).m_description=g_strRedectTime; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("normalisnotice"), IDC_EDT_NORMAL_IS_NOTICE); m_DDXFields.ElementAt(iIndex).m_description=g_strReturnNormalAlarm; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("boolreserved1"), IDC_EDT_SHOW_CURR_VALUE); m_DDXFields.ElementAt(iIndex).m_description=g_strShowCurrValue; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T( "strreserved1" ),IDC_EDT_ALARM_VAR_NAME) ; m_DDXFields.ElementAt(iIndex).m_description=g_strAlarmVarName; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("boolreserved2"), IDC_EDT_IS_NOTICE); m_DDXFields.ElementAt(iIndex).m_description=g_strIsNotice; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("intreserved1"), IDC_EDT_PARAM_INIT); m_DDXFields.ElementAt(iIndex).m_description=g_strParamInit; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("intreserved2"), IDC_EDT_PARAM_MIN); m_DDXFields.ElementAt(iIndex).m_description=g_strParamMin; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T("intreserved3"), IDC_EDT_PARAM_MAX); m_DDXFields.ElementAt(iIndex).m_description=g_strParamMax; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T( "strreserved2" ),IDC_EDT_ALARM_DESC) ; m_DDXFields.ElementAt(iIndex).m_description="报警描述"; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; iIndex++; m_DDXFields.ElementAt(iIndex).Set(_T( "strreserved3" ),IDC_EDT_RESUME_DESC) ; m_DDXFields.ElementAt(iIndex).m_description="恢复描述"; m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR; //IDC_CHK_IS_NOTICE //IDC_EDT_IS_NOTICE ChangeCtrlInfo(); UpdateData(TRUE); switch (m_operation) { case NEW: break; default: m_DDXFields.ReadData(m_pSet); break; } UpdateData(FALSE); InitCtrlInfo(m_operation); if( m_operation==EDITMORE ) { //保存没修改过的数据,多编辑时比较,修改过才保存 GetVarForEditMoreOld(); SetControlStatusForEditMore(); } if( m_operation!=EDIT ) { m_btnSetStatus.EnableWindow( false ); m_btnDatePlan.EnableWindow( false ); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CAnalogPropertyDlg::SetControlStatusForEditMore() { //变量名 GetDlgItem(IDC_EDT_VAR_NAME)->EnableWindow( false ); GetDlgItem(IDC_BTN_SEL_DEV)->EnableWindow( false ); //变量类型 GetDlgItem(IDC_COMBO_VAR_TYPE)->EnableWindow( false ); //变量数据长度 GetDlgItem(IDC_EDT_VAR_DATA_LEN)->EnableWindow( false ); //起始地址 GetDlgItem(IDC_EDT_VAR_START_ADDR)->EnableWindow( false ); //变量描述 GetDlgItem(IDC_EDT_DESC)->EnableWindow( false ); //开的描述 GetDlgItem(IDC_EDT_ON_DESC)->EnableWindow( false ); //关的描述 GetDlgItem(IDC_EDT_OFF_DESC)->EnableWindow( false ); //报警描述 GetDlgItem(IDC_EDT_ALARM_DESC)->EnableWindow( false ); //恢复描述 GetDlgItem(IDC_EDT_RESUME_DESC)->EnableWindow( false ); //读写权限 GetDlgItem(IDC_RADIO_READ_ONLY)->EnableWindow( false ); GetDlgItem(IDC_RADIO_WRITE)->EnableWindow( false ); GetDlgItem(IDC_RADIO_READ_WRITE)->EnableWindow( false ); //记载历史曲线记录 GetDlgItem(IDC_CHK_SAVE_CURVE)->EnableWindow( false ); //允许DDE访问 GetDlgItem(IDC_CHK_IS_DDE)->EnableWindow( false ); //选择变量 GetDlgItem(IDC_BTN_SEL_ALARM_VAR1)->EnableWindow( false ); //请求寄存器个数 GetDlgItem(IDC_EDT_REG_NUM)->EnableWindow( false ); //功能码 GetDlgItem(IDC_COMBO_CODE_FUNC)->EnableWindow( false ); //选择bit位信息... GetDlgItem(IDC_BTN_SEL_BIT)->EnableWindow( false ); //Snmp对象OID GetDlgItem(IDC_EDT_SNMP_OID)->EnableWindow( false ); //Snmp域 GetDlgItem(IDC_EDT_SNMP_PUBLIC)->EnableWindow( false ); //232 类型 GetDlgItem(IDC_COMBO_RS232_TYPE)->EnableWindow( false ); //232 命令 GetDlgItem(IDC_COMBO_RS232_CMD)->EnableWindow( false ); //232 数据索引 GetDlgItem(IDC_COMBO_RS232_INDEX)->EnableWindow( false ); } void CAnalogPropertyDlg::InitRs232Combo() { CHAR strFile[MAX_FILE_LENGTH + 1] = ""; CString strDevUid; char szDllName[MAX_NAME_LENGTH + 1] = {0}; char szIniName[MAX_NAME_LENGTH + 1] = {0}; char szDevProtocolType[MAX_NAME_LENGTH + 1] = {0}; char szCmd[MAX_NAME_LENGTH + 1] = {0}; char szCmdType[MAX_NAME_LENGTH + 1] = {0}; char szCmdIndex[MAX_NAME_LENGTH + 1] = {0}; GetDlgItem(IDC_EDT_VAR_UID)->GetWindowText(strDevUid); CComboBox* pRs232Cmd = (CComboBox*)GetDlgItem(IDC_COMBO_RS232_CMD); CComboBox* pRs232Type = (CComboBox*)GetDlgItem(IDC_COMBO_RS232_TYPE); CComboBox* pRs232Index = (CComboBox*)GetDlgItem(IDC_COMBO_RS232_INDEX); pRs232Cmd->ResetContent(); pRs232Type->ResetContent(); pRs232Index->ResetContent(); if( strDevUid.Compare("") ) // 只有当设备Uid不为空的情况,才能从ini文件读取Rs232类型命令 { CDBInterface::GetInstancePtr()->GetDevInfo( (char *)(LPCTSTR)strDevUid, szDllName, szIniName, szDevProtocolType ); if( strcmp(szDllName, "") != 0 ) { CString str; if( strcmp(szIniName, "") != 0 ) { str = szIniName; wsprintf(strFile, "%s\\config\\%s", g_strDirectory, szIniName); } else { str = szDllName; int nIndex = str.Find(".dll"); if( nIndex == -1 ) { wsprintf(strFile, "%s\\config\\%s.ini", g_strDirectory, szDllName); } else { str = str.Mid(0, str.GetLength() - 4); wsprintf(strFile, "%s\\config\\%s.ini", g_strDirectory, str); } } int nCmdCount; nCmdCount = GetPrivateProfileInt("CMD", "cmd-count", 0, strFile); CString strCmd; for( int i = 1; i < nCmdCount + 1; i++ ) { strCmd.Format("cmd-%d", i); GetPrivateProfileString("CMD", (char *)(LPCTSTR)strCmd, "", szCmd, sizeof(szCmd), strFile); if( strcmp(szCmd, "") != 0 ) { pRs232Cmd->AddString(szCmd); } } GetDlgItem(IDC_EDT_RS232_CMD)->GetWindowText(str); if( str.Trim().Compare("") ) { GetPrivateProfileString("CMD", (char *)(LPCTSTR)str, "", szCmd, sizeof(szCmd), strFile); pRs232Cmd->SetWindowText(szCmd); } else { pRs232Cmd->SetCurSel(9); } int nCmdTypeCount; nCmdTypeCount = GetPrivateProfileInt("TYPE", "type-count", 0, strFile); CString strCmdType; for( int i = 1; i < nCmdTypeCount + 1; i++ ) { strCmdType.Format("type-%d", i); GetPrivateProfileString("TYPE", (char *)(LPCTSTR)strCmdType, "", szCmdType, sizeof(szCmdType), strFile); if( strcmp(szCmdType, "") != 0 ) { pRs232Type->AddString(szCmdType); } } GetDlgItem(IDC_EDT_RS232_TYPE)->GetWindowText(str); if( str.Trim().Compare("") ) { GetPrivateProfileString("TYPE", (char *)(LPCTSTR)str, "", szCmdType, sizeof(szCmdType), strFile); pRs232Type->SetWindowText(szCmdType); } else { pRs232Type->SetCurSel(0); } int nCmdIndexCount; nCmdIndexCount = GetPrivateProfileInt("INDEX", "index-count", 0, strFile); CString strCmdIndex; for( int i = 1; i < nCmdIndexCount + 1; i++ ) { strCmdIndex.Format("index-%d", i); GetPrivateProfileString("INDEX", (char *)(LPCTSTR)strCmdIndex, "", szCmdIndex, sizeof(szCmdIndex), strFile); if( strcmp(szCmdIndex, "") != 0 ) { pRs232Index->AddString(szCmdIndex); } } GetDlgItem(IDC_EDT_RS232_INDEX)->GetWindowText(str); if( str.Trim().Compare("") ) { strCmdIndex.Format("index-%d", atoi(str) + 1); GetPrivateProfileString("INDEX", (char *)(LPCTSTR)strCmdIndex, "", szCmdIndex, sizeof(szCmdIndex), strFile); pRs232Index->SetWindowText(szCmdIndex); } else { pRs232Index->SetCurSel(0); } } } } void CAnalogPropertyDlg::InitCtrlInfo(int nType) { m_btnSave.SubclassDlgItem(IDC_BTN_SAVE, this); m_btnSave.SetBitmaps(IDB_SAVE, RGB(255, 0, 255)); m_btnSave.SetFlat(FALSE); m_btnSave.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnCancel.SubclassDlgItem(IDC_BTN_CANCEL, this); m_btnCancel.SetBitmaps(IDB_DEL, RGB(255, 0, 255)); m_btnCancel.SetFlat(FALSE); m_btnCancel.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnDatePlan.SubclassDlgItem(IDC_BTN_DATE_PLAN, this); m_btnDatePlan.SetBitmaps(IDB_PLAN, RGB(192, 192, 192)); m_btnDatePlan.SetFlat(FALSE); m_btnDatePlan.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnSetStatus.SubclassDlgItem(IDC_BTN_SET_STATUS1, this); m_btnSetStatus.SetBitmaps(IDB_INTO, RGB(192, 192, 192)); m_btnSetStatus.SetFlat(FALSE); m_btnSetStatus.SetAlign(CButtonST::ST_ALIGN_HORIZ); //GetDlgItem(IDC_EDT_COLLECT_FREQ)->SetWindowText("300"); ((CComboBox *)GetDlgItem(IDC_COMBO_ALARM_LEVEL))->SetCurSel(3); //((CButton*)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(TRUE); ((CComboBox *)GetDlgItem(IDC_COMBO_CODE_FUNC))->SetCurSel(0); CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; // 初始化变量类型下拉列表 try { sprintf(strSQLText, "SELECT id, vartype FROM t_var_type"); m_varTypeArray.Fill(strSQLText, _T("vartype"),_T("id")); m_cmbVarType.Attach(&m_varTypeArray, ""); m_cmbVarType.Fill(); m_cmbVarType.SetCurSel(0); } catch(_com_error *e) { CString Error = e->ErrorMessage(); AfxMessageBox(e->ErrorMessage()); } catch(...) { } // 初始化功能码下拉列表 try { sprintf(strSQLText, "SELECT id, funcname FROM t_dev_func_code"); m_funcCodeArray.Fill(strSQLText, _T("funcname"),_T("id")); m_cmbFuncCode.Attach(&m_funcCodeArray, ""); m_cmbFuncCode.Fill(); m_cmbFuncCode.SetCurSel(0); } catch(_com_error *e) { CString Error = e->ErrorMessage(); AfxMessageBox(e->ErrorMessage()); } CString str; GetDlgItem(IDC_EDT_READ_WRITE)->GetWindowText(str); if( !str.Compare("0") ) { ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(FALSE); } else if( !str.Compare("1") ) { ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(FALSE); } else if( !str.Compare("2") ) { ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(TRUE); } GetDlgItem(IDC_EDT_SAVE_DATA)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_SAVE_CURVE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_SAVE_CURVE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_IS_DDE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_IS_DDE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_SHOW_CURR_VALUE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE); GetDlgItem(IDC_EDT_IS_NOTICE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE); GetDlgItem(IDC_EDT_IS_MODIFY)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE); if( nType == EDIT || nType == COPY || nType == EDITMORE ) { CString strVarTypeID, strFuncID, strWarningLevel; CHAR szTypeName[MAX_DESC + 1] = {0}; CHAR szFuncName[MAX_DESC + 1] = {0}; GetDlgItem(IDC_EDT_VAR_TYPE_ID)->GetWindowText(strVarTypeID); GetDlgItem(IDC_EDT_FUNC_ID)->GetWindowText(strFuncID); GetDlgItem(IDC_EDT_ALARM_LEVEL)->GetWindowText(strWarningLevel); CDBInterface::GetInstancePtr()->GetVarTypeName( atoi(strVarTypeID), szTypeName ); CDBInterface::GetInstancePtr()->GetFuncCodeName( atoi(strFuncID), szFuncName ); GetDlgItem(IDC_COMBO_VAR_TYPE)->SetWindowText(szTypeName); GetDlgItem(IDC_COMBO_CODE_FUNC)->SetWindowText(szFuncName); GetDlgItem(IDC_COMBO_ALARM_LEVEL)->SetWindowText(strWarningLevel); InitRs232Combo(); } else if( nType == NEW ) { GetDlgItem(IDC_EDT_MAX_VALUES)->SetWindowText("0"); GetDlgItem(IDC_EDT_MIN_VALUES)->SetWindowText("0"); GetDlgItem(IDC_EDT_MAX_SCALE)->SetWindowText("0"); GetDlgItem(IDC_EDT_MIN_SCALE)->SetWindowText("0"); GetDlgItem(IDC_EDT_LOWER_LIMIT)->SetWindowText("0"); GetDlgItem(IDC_EDT_UPPER_LIMIT)->SetWindowText("0"); GetDlgItem(IDC_EDT_NORMAL_STATE)->SetWindowText("0"); GetDlgItem(IDC_EDT_SET_VALUE)->SetWindowText("0"); GetDlgItem(IDC_EDT_REARM)->SetWindowText("0"); GetDlgItem(IDC_EDT_OFF_SET)->SetWindowText("0"); GetDlgItem(IDC_EDT_COLLECT_FREQ)->SetWindowText("300"); GetDlgItem(IDC_EDT_COEF)->SetWindowText("1"); GetDlgItem(IDC_EDT_VAR_ITEM_ID)->SetWindowText("0"); GetDlgItem(IDC_EDT_IDENTIFY_TIME)->SetWindowText("30"); GetDlgItem(IDC_EDT_REDETECT_TIME)->SetWindowText("60"); GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("1"); GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("1"); GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("1"); GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("1"); GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("1"); ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->SetCheck(TRUE); GetDlgItem(IDC_EDT_PARAM_INIT)->SetWindowText("30"); GetDlgItem(IDC_EDT_PARAM_MIN)->SetWindowText("1"); GetDlgItem(IDC_EDT_PARAM_MAX)->SetWindowText("100"); } //UpdateData(false); } void CAnalogPropertyDlg::InitCtrlInfoForEditMore() { //GetDlgItem(IDC_EDT_COLLECT_FREQ)->SetWindowText("300"); ((CComboBox *)GetDlgItem(IDC_COMBO_ALARM_LEVEL))->SetCurSel(3); //((CButton*)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(TRUE); ((CComboBox *)GetDlgItem(IDC_COMBO_CODE_FUNC))->SetCurSel(0); CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; // 初始化变量类型下拉列表 try { sprintf(strSQLText, "SELECT id, vartype FROM t_var_type"); m_varTypeArray.Fill(strSQLText, _T("vartype"),_T("id")); m_cmbVarType.Attach(&m_varTypeArray, ""); m_cmbVarType.Fill(); m_cmbVarType.SetCurSel(0); } catch(_com_error *e) { CString Error = e->ErrorMessage(); AfxMessageBox(e->ErrorMessage()); } catch(...) { } // 初始化功能码下拉列表 try { sprintf(strSQLText, "SELECT id, funcname FROM t_dev_func_code"); m_funcCodeArray.Fill(strSQLText, _T("funcname"),_T("id")); m_cmbFuncCode.Attach(&m_funcCodeArray, ""); m_cmbFuncCode.Fill(); m_cmbFuncCode.SetCurSel(0); } catch(_com_error *e) { CString Error = e->ErrorMessage(); AfxMessageBox(e->ErrorMessage()); } CString str; GetDlgItem(IDC_EDT_READ_WRITE)->GetWindowText(str); if( !str.Compare("0") ) { ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(FALSE); } else if( !str.Compare("1") ) { ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(FALSE); } else if( !str.Compare("2") ) { ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(TRUE); } GetDlgItem(IDC_EDT_SAVE_DATA)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_SAVE_CURVE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_SAVE_CURVE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_IS_DDE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_IS_DDE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE ); GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_SHOW_CURR_VALUE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE); GetDlgItem(IDC_EDT_IS_NOTICE)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE); GetDlgItem(IDC_EDT_IS_MODIFY)->GetWindowText(str); ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE); CString strVarTypeID, strFuncID, strWarningLevel; CHAR szTypeName[MAX_DESC + 1] = {0}; CHAR szFuncName[MAX_DESC + 1] = {0}; GetDlgItem(IDC_EDT_VAR_TYPE_ID)->GetWindowText(strVarTypeID); GetDlgItem(IDC_EDT_FUNC_ID)->GetWindowText(strFuncID); GetDlgItem(IDC_EDT_ALARM_LEVEL)->GetWindowText(strWarningLevel); CDBInterface::GetInstancePtr()->GetVarTypeName( atoi(strVarTypeID), szTypeName ); CDBInterface::GetInstancePtr()->GetFuncCodeName( atoi(strFuncID), szFuncName ); GetDlgItem(IDC_COMBO_VAR_TYPE)->SetWindowText(szTypeName); GetDlgItem(IDC_COMBO_CODE_FUNC)->SetWindowText(szFuncName); GetDlgItem(IDC_COMBO_ALARM_LEVEL)->SetWindowText(strWarningLevel); InitRs232Combo(); UpdateData(false); } void CAnalogPropertyDlg::ChangeCtrlInfo() { //UpdateData( true ); if( ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->GetCheck() ) { GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("0"); } else if( ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->GetCheck() ) { GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("1"); } else if( ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->GetCheck() ) { GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("2"); } else { GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->GetCheck() ) { GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->GetCheck() ) { GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_SAVE_CURVE))->GetCheck() ) { GetDlgItem(IDC_EDT_SAVE_CURVE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_SAVE_CURVE)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_IS_DDE))->GetCheck() ) { GetDlgItem(IDC_EDT_IS_DDE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_IS_DDE)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->GetCheck() ) { GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_SHOW_CURR_VALUE))->GetCheck() ) { GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->GetCheck() ) { GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->GetCheck() ) { GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("0"); } //UpdateData( false ); } void CAnalogPropertyDlg::ChangeCtrlInfoForEditMore() { CString strVarTypeName, strFuncCode, strAlarmLevel; CHAR szVarTypeID[MAX_ID + 1] = {0}; CHAR szFuncCodeID[MAX_ID + 1] = {0}; CHAR szMaxID[MAX_ID + 1] = {0}; CHAR strSQLText[MAX_SQL_LENGTH + 1] = {0}; GetDlgItem(IDC_COMBO_VAR_TYPE)->GetWindowText(strVarTypeName); CDBInterface::GetInstancePtr()->GetVarTypeID((char *)(LPCTSTR)strVarTypeName, szVarTypeID); GetDlgItem(IDC_EDT_VAR_TYPE_ID)->SetWindowText(szVarTypeID); GetDlgItem(IDC_COMBO_CODE_FUNC)->GetWindowText(strFuncCode); CDBInterface::GetInstancePtr()->GetFuncCodeID((char *)(LPCTSTR)strFuncCode, szFuncCodeID ); GetDlgItem(IDC_EDT_FUNC_ID)->SetWindowText(szFuncCodeID); GetDlgItem(IDC_COMBO_ALARM_LEVEL)->GetWindowText(strAlarmLevel); GetDlgItem(IDC_EDT_ALARM_LEVEL)->SetWindowText(strAlarmLevel); CString strCmd, strCmdType, strCmdIndex; int nCmdIndex = ((CComboBox *)GetDlgItem(IDC_COMBO_RS232_CMD))->GetCurSel(); if( nCmdIndex != -1 ) { strCmd.Format("cmd-%d", nCmdIndex + 1); GetDlgItem(IDC_EDT_RS232_CMD)->SetWindowText(strCmd); } int nCmdTypeIndex = ((CComboBox *)GetDlgItem(IDC_COMBO_RS232_TYPE))->GetCurSel(); if( nCmdTypeIndex != -1 ) { strCmdType.Format("type-%d", nCmdTypeIndex + 1); GetDlgItem(IDC_EDT_RS232_TYPE)->SetWindowText(strCmdType); } GetDlgItem(IDC_COMBO_RS232_INDEX)->GetWindowText(strCmdIndex); GetDlgItem(IDC_EDT_RS232_INDEX)->SetWindowText(strCmdIndex); if( ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->GetCheck() ) { GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("0"); } else if( ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->GetCheck() ) { GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("1"); } else if( ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->GetCheck() ) { GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("2"); } else { GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_SAVE_CURVE))->GetCheck() ) { GetDlgItem(IDC_EDT_SAVE_CURVE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_SAVE_CURVE)->SetWindowText("0"); } if( ((CButton *)GetDlgItem(IDC_CHK_IS_DDE))->GetCheck() ) { GetDlgItem(IDC_EDT_IS_DDE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_IS_DDE)->SetWindowText("0"); } int nIndex=0; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_PARAM_INIT,m_sVarSave[nIndex] );//变量初始值 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_PARAM_MIN,m_sVarSave[nIndex] );//变量最小值 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_PARAM_MAX,m_sVarSave[nIndex] );//变量最大值 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_MAX_VALUES,m_sVarSave[nIndex] );//最大值 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_MIN_VALUES,m_sVarSave[nIndex] );//最小值 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_MAX_SCALE,m_sVarSave[nIndex] );//最大比例 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_MIN_SCALE,m_sVarSave[nIndex] );//最小比例 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_LOWER_LIMIT,m_sVarSave[nIndex] );//下限 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_UPPER_LIMIT,m_sVarSave[nIndex] );//上限 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_NORMAL_STATE,m_sVarSave[nIndex] );//正常状态 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_SET_VALUE,m_sVarSave[nIndex] );//设定值 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_REARM,m_sVarSave[nIndex] );//校正值 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_OFF_SET,m_sVarSave[nIndex] );//偏移量 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_UNIT,m_sVarSave[nIndex] );//单位 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_COLLECT_FREQ,m_sVarSave[nIndex] );//采集频率 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_COEF,m_sVarSave[nIndex] );//转换系数 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_ALARM_LEVEL,m_sVarSave[nIndex] );//报警级别 else SetDlgItemText( IDC_EDT_ALARM_LEVEL,strAlarmLevel ); nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_SAVE_DATA,m_sVarSave[nIndex] );//保存数值 else { if( ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->GetCheck() ) { GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("0"); } } nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_COLLECT_THRAD_DATA,m_sVarSave[nIndex] );//是否实时采集数据 else { if( ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->GetCheck() ) { GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("0"); } } nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_IS_MODIFY,m_sVarSave[nIndex] );//需要用户修改 else { if( ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->GetCheck() ) { GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("0"); } } nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_SHOW_CURR_VALUE,m_sVarSave[nIndex] );//报警内容是否显示当前值 else { if( ((CButton *)GetDlgItem(IDC_CHK_SHOW_CURR_VALUE))->GetCheck() ) { GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->SetWindowText("0"); } } nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_IS_NOTICE,m_sVarSave[nIndex] );//是否触发远程报警 else { if( ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->GetCheck() ) { GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("0"); } } nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_IDENTIFY_TIME,m_sVarSave[nIndex] );//辨识时间 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_REDETECT_TIME,m_sVarSave[nIndex] );//重新检测时间 nIndex++; if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] ) SetDlgItemText( IDC_EDT_NORMAL_IS_NOTICE,m_sVarSave[nIndex] );//状态恢复正常是否触发远程报警 else { if( ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->GetCheck() ) { GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("1"); } else { GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("0"); } } } void CAnalogPropertyDlg::InsertToVariantManager() { int iIndex = 0; CAnalog *pAnalog = new CAnalog(); CString str = m_DDXFields.GetAt(iIndex++).m_value; int nTemp = -1; // 变量ID pAnalog->m_nVarID = atoi(str); // 是否需要用户设置 if( atoi(m_DDXFields.GetAt(iIndex).m_value) == 1 ) { pAnalog->m_bReserved3 = TRUE; } else if( atoi(m_DDXFields.GetAt(iIndex).m_value) == 0 ) { pAnalog->m_bReserved3 = FALSE; } iIndex++; // 变量UID pAnalog->m_strVarUID = m_DDXFields.GetAt(iIndex++).m_value; // 变量名称 pAnalog->m_strName = m_DDXFields.GetAt(iIndex++).m_value; // 变量描述 pAnalog->m_strDesc = m_DDXFields.GetAt(iIndex++).m_value; // 变量类型ID str = m_DDXFields.GetAt(iIndex++).m_value; pAnalog->m_nVarTypeID = atoi(str); // 变量数据长度 str = m_DDXFields.GetAt(iIndex++).m_value; pAnalog->m_nDataLen = atoi(str); // 开的描述 pAnalog->m_strOnDesc = m_DDXFields.GetAt(iIndex++).m_value; // 关的描述 pAnalog->m_strOffDesc = m_DDXFields.GetAt(iIndex++).m_value; // 最大值 pAnalog->m_nMaxValues = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 最小值 pAnalog->m_nMinValues = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 最大转换比率 pAnalog->m_nMaxConvtRate = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 最小转换比率 pAnalog->m_nMinConvtRate = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 下限 pAnalog->m_nLowerLimit = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 上限 pAnalog->m_nUpperLimit = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 正常状态 pAnalog->m_nNormalState = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 设定值 pAnalog->m_strSetValue = m_DDXFields.GetAt(iIndex++).m_value; // 校正值 pAnalog->m_nRearm = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 偏移量 pAnalog->m_nOffset = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 单位 pAnalog->m_strUnit = m_DDXFields.GetAt(iIndex++).m_value; // 采集频率 pAnalog->m_nCollectFreq = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 转换系数 pAnalog->m_fCoef = (float)atof(m_DDXFields.GetAt(iIndex++).m_value); // 告警级别 pAnalog->m_nWaringLevel = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 读写权限 pAnalog->m_nPurview = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 是否保存数值 pAnalog->m_bIsSave = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 是否实时采集数据 pAnalog->m_bRealtimeFlag = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 是否记录实时曲线 pAnalog->m_bRecCurve = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 是否允许DDE访问 pAnalog->m_bIsDDE = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 请求寄存器个数 pAnalog->m_nRegNum = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 功能码id pAnalog->m_nFuncCode = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 寄存器子id pAnalog->m_nVarChildID = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 位信息id pAnalog->m_nVarItemID = atoi(m_DDXFields.GetAt(iIndex++).m_value); // SNMP对象oid pAnalog->m_strSnmpOid = m_DDXFields.GetAt(iIndex++).m_value; // SNMP域 pAnalog->m_strFields = m_DDXFields.GetAt(iIndex++).m_value; // 设备类型ID pAnalog->m_nDevID = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 起始地址 pAnalog->m_nRegStartAddr = atoi(m_DDXFields.GetAt(iIndex++).m_value); // Rs232请求命令 pAnalog->m_strRs232Cmd = m_DDXFields.GetAt(iIndex++).m_value; // Rs232请求类型 pAnalog->m_strRs232Type = m_DDXFields.GetAt(iIndex++).m_value; // Rs232数据索引 pAnalog->m_nRs232Index = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 辨別時間 pAnalog->m_nIdentifyTime = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 重新檢測時間 pAnalog->m_nRedetectTime = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 起始BIT位 if( m_nStartBit >= 0 && m_nStartBit <= 64 ) { pAnalog->m_nStartBit = m_nStartBit; } // 终止BIT位 if( m_nEndBit >= 0 && m_nEndBit <= 64 ) { pAnalog->m_nEndBit = m_nEndBit; } pAnalog->m_strReserved1 = m_DDXFields.GetAt(43).m_value;; //pAnalog->m_strReserved1 = ""; pAnalog->m_strReserved2 = m_DDXFields.GetAt(48).m_value; pAnalog->m_strReserved3 = m_DDXFields.GetAt(49).m_value; pAnalog->m_strReserved4 = ""; pAnalog->m_strReserved5 = ""; pAnalog->m_strReserved6 = ""; pAnalog->m_strReserved7 = ""; pAnalog->m_strReserved8 = ""; pAnalog->m_strReserved9 = ""; pAnalog->m_strReserved10 = ""; iIndex=45; pAnalog->m_nReserved1 = atoi(m_DDXFields.GetAt(iIndex++).m_value); pAnalog->m_nReserved2 = atoi(m_DDXFields.GetAt(iIndex++).m_value); pAnalog->m_nReserved3 = atoi(m_DDXFields.GetAt(iIndex++).m_value); pAnalog->m_nReserved4 = 0; pAnalog->m_nReserved5 = 0; pAnalog->m_nReserved6 = 0; pAnalog->m_nReserved7 = 0; pAnalog->m_nReserved8 = 0; pAnalog->m_nReserved9 = 0; pAnalog->m_nReserved10 = 0; //pAnalog->m_bReserved1 = FALSE; if( atoi(m_DDXFields.GetAt(42).m_value) == 1 ) { pAnalog->m_bReserved1 = TRUE; } else if( atoi(m_DDXFields.GetAt(42).m_value) == 0 ) { pAnalog->m_bReserved1 = FALSE; } if( atoi(m_DDXFields.GetAt(44).m_value) == 1 ) { pAnalog->m_bReserved2 = TRUE; } else if( atoi(m_DDXFields.GetAt(44).m_value) == 0 ) { pAnalog->m_bReserved2 = FALSE; } //pAnalog->m_bReserved1 = FALSE; //pAnalog->m_bReserved2 = FALSE; //pAnalog->m_bReserved3 = FALSE; pAnalog->m_bReserved4 = FALSE; pAnalog->m_bReserved5 = FALSE; pAnalog->m_bReserved6 = FALSE; pAnalog->m_bReserved7 = FALSE; pAnalog->m_bReserved8 = FALSE; pAnalog->m_bReserved9 = FALSE; pAnalog->m_bReserved10 = FALSE; pAnalog->m_pDevice = NULL; pAnalog->m_fData = 0.0; pVariantsManager->m_analog.Add(pAnalog); } void CAnalogPropertyDlg::EditVariant(int nVarID) { int iIndex = 1; CString str; CAnalog *pAnalog = pVariantsManager->FindAnalog(nVarID); if( pAnalog==NULL ) return; if( atoi(m_DDXFields.GetAt(iIndex).m_value) == 1 ) { pAnalog->m_bReserved3 = true; } else if( atoi(m_DDXFields.GetAt(iIndex).m_value) == 0 ) { pAnalog->m_bReserved3 = false; } iIndex++; // 变量UID pAnalog->m_strVarUID = m_DDXFields.GetAt(iIndex++).m_value; // 变量名称 pAnalog->m_strName = m_DDXFields.GetAt(iIndex++).m_value; // 变量描述 pAnalog->m_strDesc = m_DDXFields.GetAt(iIndex++).m_value; // 变量类型ID str = m_DDXFields.GetAt(iIndex++).m_value; pAnalog->m_nVarTypeID = atoi(str); // 变量数据长度 str = m_DDXFields.GetAt(iIndex++).m_value; pAnalog->m_nDataLen = atoi(str); // 开的描述 pAnalog->m_strOnDesc = m_DDXFields.GetAt(iIndex++).m_value; // 关的描述 pAnalog->m_strOffDesc = m_DDXFields.GetAt(iIndex++).m_value; // 最大值 pAnalog->m_nMaxValues = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 最小值 pAnalog->m_nMinValues = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 最大转换比率 pAnalog->m_nMaxConvtRate = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 最小转换比率 pAnalog->m_nMinConvtRate = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 下限 pAnalog->m_nLowerLimit = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 上限 pAnalog->m_nUpperLimit = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 正常状态 pAnalog->m_nNormalState = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 设定值 pAnalog->m_strSetValue = m_DDXFields.GetAt(iIndex++).m_value; // 校正值 pAnalog->m_nRearm = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 偏移量 pAnalog->m_nOffset = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 单位 pAnalog->m_strUnit = m_DDXFields.GetAt(iIndex++).m_value; // 采集频率 pAnalog->m_nCollectFreq = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 转换系数 pAnalog->m_fCoef = (float)atof(m_DDXFields.GetAt(iIndex++).m_value); // 告警级别 pAnalog->m_nWaringLevel = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 读写权限 pAnalog->m_nPurview = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 是否保存数值 pAnalog->m_bIsSave = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 是否实时采集数据 pAnalog->m_bRealtimeFlag = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 是否记录实时曲线 pAnalog->m_bRecCurve = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 是否允许DDE访问 pAnalog->m_bIsDDE = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 请求寄存器个数 pAnalog->m_nRegNum = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 功能码id pAnalog->m_nFuncCode = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 寄存器子id pAnalog->m_nVarChildID = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 位信息id pAnalog->m_nVarItemID = atoi(m_DDXFields.GetAt(iIndex++).m_value); // SNMP对象oid pAnalog->m_strSnmpOid = m_DDXFields.GetAt(iIndex++).m_value; // SNMP域 pAnalog->m_strFields = m_DDXFields.GetAt(iIndex++).m_value; // 设备类型ID pAnalog->m_nDevID = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 起始地址 pAnalog->m_nRegStartAddr = atoi(m_DDXFields.GetAt(iIndex++).m_value); // Rs232请求命令 pAnalog->m_strRs232Cmd = m_DDXFields.GetAt(iIndex++).m_value; // Rs232请求类型 pAnalog->m_strRs232Type = m_DDXFields.GetAt(iIndex++).m_value; // Rs232数据索引 pAnalog->m_nRs232Index = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 辨別時間 pAnalog->m_nIdentifyTime = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 重新檢測時間 pAnalog->m_nRedetectTime = atoi(m_DDXFields.GetAt(iIndex++).m_value); // 起始BIT位 if( m_nStartBit >= 0 && m_nStartBit <= 64 ) { pAnalog->m_nStartBit = m_nStartBit; } // 终止BIT位 if( m_nEndBit >= 0 && m_nEndBit <= 64 ) { pAnalog->m_nEndBit = m_nEndBit; } pAnalog->m_strReserved1 = m_DDXFields.GetAt(43).m_value; pAnalog->m_strReserved2 = m_DDXFields.GetAt(48).m_value; pAnalog->m_strReserved3 = m_DDXFields.GetAt(49).m_value; pAnalog->m_strReserved4 = ""; pAnalog->m_strReserved5 = ""; pAnalog->m_strReserved6 = ""; pAnalog->m_strReserved7 = ""; pAnalog->m_strReserved8 = ""; pAnalog->m_strReserved9 = ""; pAnalog->m_strReserved10 = ""; pAnalog->m_nReserved1 = atoi(m_DDXFields.GetAt(45).m_value); pAnalog->m_nReserved2 = atoi(m_DDXFields.GetAt(46).m_value); pAnalog->m_nReserved3 = atoi(m_DDXFields.GetAt(47).m_value); pAnalog->m_nReserved4 = 0; pAnalog->m_nReserved5 = 0; pAnalog->m_nReserved6 = 0; pAnalog->m_nReserved7 = 0; pAnalog->m_nReserved8 = 0; pAnalog->m_nReserved9 = 0; pAnalog->m_nReserved10 = 0; if( atoi(m_DDXFields.GetAt(42).m_value) == 1 ) { pAnalog->m_bReserved1 = true; } else if( atoi(m_DDXFields.GetAt(42).m_value) == 0 ) { pAnalog->m_bReserved1 = false; } if( atoi(m_DDXFields.GetAt(44).m_value) == 1 ) { pAnalog->m_bReserved2 = true; } else if( atoi(m_DDXFields.GetAt(44).m_value) == 0 ) { pAnalog->m_bReserved2 = false; } //pAnalog->m_bReserved2 = FALSE; //pAnalog->m_bReserved3 = FALSE; pAnalog->m_bReserved4 = FALSE; pAnalog->m_bReserved5 = FALSE; pAnalog->m_bReserved6 = FALSE; pAnalog->m_bReserved7 = FALSE; pAnalog->m_bReserved8 = FALSE; pAnalog->m_bReserved9 = FALSE; pAnalog->m_bReserved10 = FALSE; pAnalog->m_pDevice = NULL; int i, nChannelSize = pDevicesManager->m_channels.GetSize(); int j, nDevicesSize; for( i = 0; i < nChannelSize; i++ ) { nDevicesSize = pDevicesManager->m_channels[i]->m_Devices.GetSize(); for( j = 0; j < nDevicesSize; j++ ) { if( !pDevicesManager->m_channels[i]->m_Devices[j]->m_strUID.Compare(pAnalog->m_strVarUID) ) { pAnalog->m_pDevice = pDevicesManager->m_channels[i]->m_Devices[j]; } } } } void CAnalogPropertyDlg::OnBnClickedBtnCancel() { // TODO: 在此添加控件通知处理程序代码 OnCancel(); } int CAnalogPropertyDlg::CheckDataValid() { CHAR szVarID[MAX_ID + 1] = {0}; CExString strVarName; strVarName = m_DDXFields.GetAt(3).m_value; CString strUID = m_DDXFields.GetAt(2).m_value; if( !strUID.Compare("") ) return 1; int nRet = CDBInterface::GetInstancePtr()->GetVarID( (char *)(LPCTSTR)strVarName, szVarID ); m_sVarName = strVarName; m_sUid = strUID; if( nRet > 0 ) { return 2; } return nRet; } void CAnalogPropertyDlg::GetVarForEditMore() { //UpdateData(); CString str; GetDlgItemText( IDC_EDT_PARAM_INIT,str );//变量初始值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_PARAM_MIN,str );//变量最小值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_PARAM_MAX,str );//变量最大值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_MAX_VALUES,str );//最大值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_MIN_VALUES,str );//最小值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_MAX_SCALE,str );//最大比例 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_MIN_SCALE,str );//最小比例 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_LOWER_LIMIT,str );//下限 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_UPPER_LIMIT,str );//上限 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_NORMAL_STATE,str );//正常状态 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_SET_VALUE,str );//设定值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_REARM,str );//校正值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_OFF_SET,str );//偏移量 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_UNIT,str );//单位 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_COLLECT_FREQ,str );//采集频率 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_COEF,str );//转换系数 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_ALARM_LEVEL,str );//报警级别 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_SAVE_DATA,str );//保存数值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_COLLECT_THRAD_DATA,str );//是否实时采集数据 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_IS_MODIFY,str );//需要用户修改 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_SHOW_CURR_VALUE,str );//报警内容是否显示当前值 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_IS_NOTICE,str );//是否触发远程报警 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_IDENTIFY_TIME,str );//辨识时间 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_REDETECT_TIME,str );//重新检测时间 m_sVarSave[m_nVarSaveNum++] = str; GetDlgItemText( IDC_EDT_NORMAL_IS_NOTICE,str );//状态恢复正常是否触发远程报警 m_sVarSave[m_nVarSaveNum++] = str; //UpdateData(false); } void CAnalogPropertyDlg::GetVarForEditMoreOld() { //UpdateData(); CString str; GetDlgItemText( IDC_EDT_PARAM_INIT,str );//变量初始值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_PARAM_MIN,str );//变量最小值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_PARAM_MAX,str );//变量最大值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_MAX_VALUES,str );//最大值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_MIN_VALUES,str );//最小值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_MAX_SCALE,str );//最大比例 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_MIN_SCALE,str );//最小比例 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_LOWER_LIMIT,str );//下限 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_UPPER_LIMIT,str );//上限 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_NORMAL_STATE,str );//正常状态 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_SET_VALUE,str );//设定值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_REARM,str );//校正值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_OFF_SET,str );//偏移量 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_UNIT,str );//单位 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_COLLECT_FREQ,str );//采集频率 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_COEF,str );//转换系数 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_ALARM_LEVEL,str );//报警级别 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_SAVE_DATA,str );//保存数值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_COLLECT_THRAD_DATA,str );//是否实时采集数据 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_IS_MODIFY,str );//需要用户修改 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_SHOW_CURR_VALUE,str );//报警内容是否显示当前值 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_IS_NOTICE,str );//是否触发远程报警 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_IDENTIFY_TIME,str );//辨识时间 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_REDETECT_TIME,str );//重新检测时间 m_sVarSaveOld[m_nVarSaveNumOld++] = str; GetDlgItemText( IDC_EDT_NORMAL_IS_NOTICE,str );//状态恢复正常是否触发远程报警 m_sVarSaveOld[m_nVarSaveNumOld++] = str; //UpdateData(false); } void CAnalogPropertyDlg::OnBnClickedBtnSave() { // TODO: 在此添加控件通知处理程序代码 // 存盘操作 //UpdateData( ); CExString strField; CString strVarTypeName, strFuncCode, strAlarmLevel; CHAR szVarTypeID[MAX_ID + 1] = {0}; CHAR szFuncCodeID[MAX_ID + 1] = {0}; CHAR szMaxID[MAX_ID + 1] = {0}; CHAR strSQLText[MAX_SQL_LENGTH + 1] = {0}; GetDlgItem(IDC_COMBO_VAR_TYPE)->GetWindowText(strVarTypeName); CDBInterface::GetInstancePtr()->GetVarTypeID((char *)(LPCTSTR)strVarTypeName, szVarTypeID); GetDlgItem(IDC_EDT_VAR_TYPE_ID)->SetWindowText(szVarTypeID); GetDlgItem(IDC_COMBO_CODE_FUNC)->GetWindowText(strFuncCode); CDBInterface::GetInstancePtr()->GetFuncCodeID((char *)(LPCTSTR)strFuncCode, szFuncCodeID ); GetDlgItem(IDC_EDT_FUNC_ID)->SetWindowText(szFuncCodeID); GetDlgItem(IDC_COMBO_ALARM_LEVEL)->GetWindowText(strAlarmLevel); GetDlgItem(IDC_EDT_ALARM_LEVEL)->SetWindowText(strAlarmLevel); CString strCmd, strCmdType, strCmdIndex; int nCmdIndex = ((CComboBox *)GetDlgItem(IDC_COMBO_RS232_CMD))->GetCurSel(); if( nCmdIndex != -1 ) { strCmd.Format("cmd-%d", nCmdIndex + 1); GetDlgItem(IDC_EDT_RS232_CMD)->SetWindowText(strCmd); } int nCmdTypeIndex = ((CComboBox *)GetDlgItem(IDC_COMBO_RS232_TYPE))->GetCurSel(); if( nCmdTypeIndex != -1 ) { strCmdType.Format("type-%d", nCmdTypeIndex + 1); GetDlgItem(IDC_EDT_RS232_TYPE)->SetWindowText(strCmdType); } GetDlgItem(IDC_COMBO_RS232_INDEX)->GetWindowText(strCmdIndex); GetDlgItem(IDC_EDT_RS232_INDEX)->SetWindowText(strCmdIndex); CString strVarName,sInitValue,sMinValue,sMaxValue,sLowerValue,sUpperValue,sNormalValue,sWarningLevel,sIdentifyTime; GetDlgItem(IDC_EDT_VAR_NAME)->GetWindowText(strVarName); GetDlgItem(IDC_EDT_PARAM_INIT)->GetWindowText(sInitValue); GetDlgItem(IDC_EDT_PARAM_MIN)->GetWindowText(sMinValue); GetDlgItem(IDC_EDT_PARAM_MAX)->GetWindowText(sMaxValue); GetDlgItem(IDC_EDT_LOWER_LIMIT)->GetWindowText(sLowerValue); GetDlgItem(IDC_EDT_UPPER_LIMIT)->GetWindowText(sUpperValue); GetDlgItem(IDC_EDT_NORMAL_STATE)->GetWindowText(sNormalValue); GetDlgItem(IDC_EDT_ALARM_LEVEL)->GetWindowText( sWarningLevel ); GetDlgItem(IDC_EDT_IDENTIFY_TIME)->GetWindowText( sIdentifyTime ); //if( strVarName.Compare("")==0 ) //{ // MessageBox(g_strVarNameIsBlank, g_strTip, MB_ICONWARNING); // return; //} CString sMsg = GetInvalidMessage( strVarName,atoi(sInitValue),atoi(sMinValue),atoi(sMaxValue),atoi(sLowerValue),atoi(sUpperValue),atoi(sNormalValue),atoi(sWarningLevel),atoi(sIdentifyTime) ); if( sMsg !="" ) { CDlg_ShowMessage dlg; dlg.m_sEdit_Show = sMsg; dlg.DoModal(); return; } //先把下拉框,多选按钮,单选按钮的值赋给文本 ChangeCtrlInfo(); //編輯多個 int nListCount = m_nArrayListID.GetCount(); if( nListCount>1 ) { //保存可以多个变量的值 GetVarForEditMore(); // EditMoreVar(); return; } CDBInterface::GetInstancePtr()->GetMaxID("t_dev_variant", "id", szMaxID); int nID; CString strVarID; try { switch (m_operation) { case EDIT: GetDlgItem(IDC_EDT_VAR_ID)->GetWindowText(strVarID); m_nVarID = atoi(strVarID); break; default: if( atoi(szMaxID) > 0 ) { nID = atoi(szMaxID) + 1; m_nVarID = nID; } else if( atoi(szMaxID) == 0 ) { nID = 1; m_nVarID = nID; } strVarID.Format("%d", nID); GetDlgItem(IDC_EDT_VAR_ID)->SetWindowText(strVarID); //m_pSet->AddNew(); break; } UpdateData(TRUE); try { // 校验数据的正确性 int nRet = CheckDataValid(); if( nRet == 1 && ( m_operation == NEW || m_operation == COPY ) ) { MessageBox(g_strVarUidIsBlank, g_strTip, MB_ICONWARNING); //CDialog::OnOK(); return; } else if( nRet == 2 && ( m_operation == NEW || m_operation == COPY ) ) { MessageBox(g_strVarNameExist, g_strTip, MB_ICONWARNING); //CDialog::OnOK(); return; } if (!_stricmp(g_strDBType, "SQL SERVER")) { sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \ "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \ "lowerlimit, upperlimit, normalstate, setvalue, rearm, [offsets], unit, collectfrequence, " \ "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \ "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \ "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, " \ "strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3,strreserved2,strreserved3) values("); } else if(!_stricmp(g_strDBType, "PGSQL")) { sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \ "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \ "lowerlimit, upperlimit, normalstate, setvalue, rearm, offsets, unit, collectfrequence, " \ "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \ "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \ "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, " \ "strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3,strreserved2,strreserved3) values("); } if( m_DDXFields.WriteData("t_dev_variant", strSQLText, m_operation) != -1 ) { // 添加到变量管理类里面 if( m_operation==NEW || m_operation==COPY ) { InsertToVariantManager(); } else if( m_operation==EDIT ) { EditVariant(atoi(m_DDXFields.GetAt(0).m_value)); } } } catch(...) { ; } UpdateData(FALSE); CDialog::OnOK(); }//try catch( _com_error &e ) { CString mes1,mes2,mes3,mes4; mes1.Format(_T("Error:%08lx.\n"), e.Error()); mes2.Format(_T("ErrorMessage:%s.\n"), e.ErrorMessage()); mes3.Format(_T("Source:%s.\n"), (LPCTSTR) _bstr_t(e.Source())); mes4.Format(_T("Description:%s.\n"), (LPCTSTR) _bstr_t(e.Description())); MessageBox(mes1+mes2+mes3+mes4,_T("Invalid field "),MB_ICONERROR); return; } catch(...) { MessageBox(_T("Unhandled Exception"),_T("Invalid field ")+strField,MB_ICONERROR); return; } } void CAnalogPropertyDlg::EditMoreVar() { bool bExit = false; int nNowRow = 0; int nListCount = m_nArrayListID.GetCount(); for( int i=0;iMovePrevious(); m_nPrevRow = nNowRow; } else { for( int m=0;mMoveNext(); m_nPrevRow = nNowRow; } m_DDXFields.ReadData(m_pSet); UpdateData(FALSE); //先把下拉框,多选按钮,单选按钮的值赋给文本 InitCtrlInfoForEditMore(); CExString strField; CHAR strSQLText[MAX_SQL_LENGTH + 1] = {0}; ChangeCtrlInfoForEditMore(); CString sTemp; GetDlgItemText( IDC_EDT_PARAM_INIT,sTemp ); CString strVarID; try { GetDlgItem(IDC_EDT_VAR_ID)->GetWindowText(strVarID); m_nVarID = atoi(strVarID); UpdateData(TRUE); try { // 校验数据的正确性 int nRet = CheckDataValid(); if( nRet == 1 && m_operation == NEW ) { return; } else if( nRet == 2 && m_operation == NEW ) { return; } if (!_stricmp(g_strDBType, "SQL SERVER")) { sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \ "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \ "lowerlimit, upperlimit, normalstate, setvalue, rearm, [offsets], unit, collectfrequence, " \ "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \ "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \ "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, " \ "strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3,strreserved2,strreserved3) values("); } else if(!_stricmp(g_strDBType, "PGSQL")) { sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \ "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \ "lowerlimit, upperlimit, normalstate, setvalue, rearm, offsets, unit, collectfrequence, " \ "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \ "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \ "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, " \ "strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3,strreserved2,strreserved3) values("); } //sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \ // "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \ // "lowerlimit, upperlimit, normalstate, setvalue, rearm, [offsets], unit, collectfrequence, " \ // "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \ // "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \ // "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3) values("); if( m_DDXFields.WriteData("t_dev_variant", strSQLText, m_operation) != -1 ) { CString sTemp; GetDlgItemText( IDC_EDT_PARAM_INIT,sTemp ); // 添加到变量管理类里面 if( m_operation == NEW || m_operation == COPY ) { InsertToVariantManager(); } else if( m_operation == EDIT || m_operation==EDITMORE ) { EditVariant(atoi(m_DDXFields.GetAt(0).m_value)); } } } catch(...) { ; } UpdateData(FALSE); CString sContent; sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,m_sVarName.TrimRight() ); CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_EDIT,0,"",(char *)(LPCTSTR)sContent ); pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",m_sUid,m_nVarID,"64320" ); if( !bExit ) CDialog::OnOK(); bExit = true; }//try catch( _com_error &e ) { CString mes1,mes2,mes3,mes4; mes1.Format(_T("Error:%08lx.\n"), e.Error()); mes2.Format(_T("ErrorMessage:%s.\n"), e.ErrorMessage()); mes3.Format(_T("Source:%s.\n"), (LPCTSTR) _bstr_t(e.Source())); mes4.Format(_T("Description:%s.\n"), (LPCTSTR) _bstr_t(e.Description())); MessageBox(mes1+mes2+mes3+mes4,_T("Invalid field "),MB_ICONERROR); return; } catch(...) { MessageBox(_T("Unhandled Exception"),_T("Invalid field ")+strField,MB_ICONERROR); return; } } } void CAnalogPropertyDlg::OnBnClickedBtnSelDev() { // TODO: 在此添加控件通知处理程序代码 // 选择设备 CString strUID, strVarName; CDlgSelectDev dlg; CHAR szDevUID[MAX_DESC + 1] = {0}; if( dlg.DoModal() == IDOK ) { CDBInterface::GetInstancePtr()->GetDevUID( (char *)(LPCTSTR)dlg.m_strDevName, szDevUID ); strUID = szDevUID; GetDlgItem(IDC_EDT_VAR_UID)->SetWindowText(strUID); strVarName.Format(g_strVarName2, dlg.m_strDevName); GetDlgItem(IDC_EDT_VAR_NAME)->SetWindowText(strVarName); CHAR szDevDriverID[MAX_ID + 1] = {0}; CHAR szDevFactoryID[MAX_ID + 1] = {0}; CHAR szDevTypeID[MAX_ID + 1] = {0}; SplitStr((char*)(LPCTSTR)strUID, '.', 0, szDevDriverID); SplitStr((char*)(LPCTSTR)strUID, '.', 1, szDevFactoryID); SplitStr((char*)(LPCTSTR)strUID, '.', 2, szDevTypeID); GetDlgItem(IDC_EDT_DEV_TYPE_ID)->SetWindowText(szDevTypeID); InitRs232Combo(); } } void CAnalogPropertyDlg::OnBnClickedBtnSelReg() { // TODO: 在此添加控件通知处理程序代码 // 选择寄存器 } void CAnalogPropertyDlg::OnBnClickedBtnSelBit() { // TODO: 在此添加控件通知处理程序代码 // 选择bit位信息 CDlgBitManager dlg; CString str; // 变量UID GetDlgItem(IDC_EDT_VAR_UID)->GetWindowText(str); if( !str.Compare("") ) { MessageBox(g_strSelDev, g_strTip, MB_ICONWARNING); return; } dlg.m_strUID = str; if( dlg.DoModal() == IDOK ) { str.Format("%d", dlg.m_nID); GetDlgItem(IDC_EDT_VAR_ITEM_ID)->SetWindowText(str); m_nStartBit = dlg.m_nStartBit; m_nEndBit = dlg.m_nEndBit; } } void CAnalogPropertyDlg::OnCbnSelendokComboVarType() { // TODO: 在此添加控件通知处理程序代码 } void CAnalogPropertyDlg::OnBnClickedBtnSelAlarmVar() { // TODO: 在此添加控件通知处理程序代码 CSelectVariantDlg dlg; if ( dlg.DoModal() == IDOK ) { GetDlgItem(IDC_EDT_ALARM_VAR_NAME)->SetWindowText(dlg.m_strVar); } } void CAnalogPropertyDlg::OnBnClickedBtnSetStatus() { // TODO: 在此添加控件通知处理程序代码 int iIndex = 0; CString str = m_DDXFields.GetAt(0).m_value; int nVarID = atoi(str); CString strDevUID = m_DDXFields.GetAt(2).m_value; CDlgVarStatusManager dlg; dlg.m_strUID = strDevUID; dlg.m_nVarID = nVarID; if( dlg.DoModal() == IDOK ) { //CString sContent; //sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText() ); //CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_SETSTATUS,0,"",(char *)(LPCTSTR)sContent ); //pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",strDevUID,nVarID,"64320" ); } CAnalog *pAnalog = pVariantsManager->FindAnalog(nVarID); if( pAnalog==NULL ) return; list listStatusID, listStatusDesc; list::iterator itStatusID, itStatusDesc; int nCount = 0; nCount = CDBInterface::GetInstancePtr()->GetVarStatusList( (char *)(LPCTSTR)dlg.m_strUID, dlg.m_nVarID, listStatusID, listStatusDesc); if( nCount > 0 ) { list::iterator it; list::iterator it_desc; for( it = pAnalog->m_listStatusID.begin(); it != pAnalog->m_listStatusID.end(); ) { pAnalog->m_listStatusID.erase( it++ ); } for( it_desc = pAnalog->m_listStatusDesc.begin(); it_desc != pAnalog->m_listStatusDesc.end(); ) { pAnalog->m_listStatusDesc.erase( it_desc++ ); } } for( itStatusID = listStatusID.begin(), itStatusDesc = listStatusDesc.begin(); itStatusID != listStatusID.end(), itStatusDesc != listStatusDesc.end(); itStatusID++, itStatusDesc++) { pAnalog->m_listStatusID.insert( pAnalog->m_listStatusID.end(), atoi((*itStatusID).c_str()) ); pAnalog->m_listStatusDesc.insert( pAnalog->m_listStatusDesc.end(), (*itStatusDesc).c_str() ); } } void CAnalogPropertyDlg::OnBnClickedBtnDatePlan() { // TODO: 在此添加控件通知处理程序代码 int iIndex = 0; CString str = m_DDXFields.GetAt(0).m_value; int nVarID = atoi(str); CString strDevUID = m_DDXFields.GetAt(2).m_value; CDlgDatePlan dlg; dlg.m_nPlanType = PLAN_TYPE_EQUIP; dlg.m_strUid = strDevUID; dlg.m_nVarID = nVarID; if(dlg.DoModal() == IDOK) { //CString sContent; //sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText() ); //CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_TIMEPLAN_EIDT,0,"",(char *)(LPCTSTR)sContent ); //pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_strUid,dlg.m_nVarID,"64320" ); //pVariantsManager->AllocDatePlan(); } } //得到不合法的变量问题 CString CAnalogPropertyDlg::GetInvalidMessage( CString sVarName,int iInitValue,int iMinValue,int iMaxValue,int iLowerValue,int iUpperValue,int iNormalValue,int iWarningLevel,int iIdentifyTime ) { CString sRet,s; if(sVarName=="" ) { s = "变量名不能为空; "; sRet += s; } for( int i=0;i='0'&&sVarName[i]<='9') || (sVarName[i]>='a'&&sVarName[i]<='z') || (sVarName[i]>='A'&&sVarName[i]<='Z') || (sVarName[i]=='_' )) { if( i==0 && ( (sVarName[i]>='0'&&sVarName[i]<='9') || (sVarName[i]=='_' ) ) ) { s = "变量名有误,只能是字母开头; "; sRet += s; break; } } else { s = "变量名有误,含有非法字符; "; sRet += s; break; } } if( iMaxValue==0 ) { s = "变量最大值不能为0; "; sRet += s; } if( iMinValue>iMaxValue ) { s = "变量最小值不能大于变量最大值; "; sRet += s; } if( iInitValueiMaxValue ) { s = "变量初始值有误,不在最小最大值之间; "; sRet += s; } if( iLowerValue>iUpperValue ) { s = "变量下限与上限设置有误; "; sRet += s; } if( iLowerValue==0 && iUpperValue==0 ) { if( iNormalValue != iInitValue ) { s = "状态变量的正常状态与初始值不相等; "; sRet += s; } } else { if( iInitValueiUpperValue ) { s = "变量初始值有误,不在下限与上限之间; "; sRet += s; } } //if( iWarningLevel==0 ) //{ // s = "变量的报警级别为0; "; // sRet += s; //} if( iIdentifyTime==0 ) { s = "变量的辨识时间不能等于0; "; sRet += s; } return sRet; }