// AnalogPropertyDlg1.cpp : implementation file // #include "stdafx.h" #include "IDE.h" #include "AnalogSinglePropertyDlg.h" #include "DlgSelectDev.h" #include "StringOperation.h" #include "DlgBitManager.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 ///////////////////////////////////////////////////////////////////////////// // CAnalogSinglePropertyDlg dialog CAnalogSinglePropertyDlg::CAnalogSinglePropertyDlg(CWnd* pParent /*=NULL*/) : CDialog(CAnalogSinglePropertyDlg::IDD, pParent) { //{{AFX_DATA_INIT(CAnalogSinglePropertyDlg) //}}AFX_DATA_INIT m_operation=EDIT; m_DDXFields.SetSize(50); m_nVarID = 0; m_nVarSaveNum=0; m_nVarSaveNumOld=0; m_nPrevRow = 0; } void CAnalogSinglePropertyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAnalogSinglePropertyDlg) //}}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(CAnalogSinglePropertyDlg, CDialog) //{{AFX_MSG_MAP(CAnalogSinglePropertyDlg) //}}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) ON_BN_CLICKED(IDC_BTN_ADVANCED, OnBnClickedBtnAdvanced) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAnalogSinglePropertyDlg message handlers BOOL CAnalogSinglePropertyDlg::OnInitDialog() { CDialog::OnInitDialog(); int i = 0; //排序所选的列号 int nTemp; for( i=0;im_nArrayListID[j] ) { nTemp = m_nArrayListID[i]; m_nArrayListID[i] = m_nArrayListID[j]; m_nArrayListID[j] = nTemp; } } } //CString str,s; //for( i=0;iMoveWindow( 0,0,605,265 );//265 return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CAnalogSinglePropertyDlg::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 CAnalogSinglePropertyDlg::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 CAnalogSinglePropertyDlg::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); m_btnAdvanced.SubclassDlgItem(IDC_BTN_ADVANCED, this); m_btnAdvanced.SetBitmaps(IDB_EDIT, RGB(192, 192, 192)); m_btnAdvanced.SetFlat(FALSE); m_btnAdvanced.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 ) { 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"); } } void CAnalogSinglePropertyDlg::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 CAnalogSinglePropertyDlg::InsertToVariantManager() { CAnalog *pAnalog = new CAnalog(); CString str = m_DDXFields.GetAt(0).m_value; int nTemp = -1; // 变量ID pAnalog->m_nVarID = atoi(str); // 变量UID pAnalog->m_strVarUID = m_DDXFields.GetAt(1).m_value; // 变量名称 pAnalog->m_strName = m_DDXFields.GetAt(2).m_value; // 变量描述 pAnalog->m_strDesc = m_DDXFields.GetAt(3).m_value; // 变量类型ID str = m_DDXFields.GetAt(4).m_value; pAnalog->m_nVarTypeID = atoi(str); // 变量数据长度 str = m_DDXFields.GetAt(5).m_value; pAnalog->m_nDataLen = atoi(str); // 开的描述 pAnalog->m_strOnDesc = m_DDXFields.GetAt(6).m_value; // 关的描述 pAnalog->m_strOffDesc = m_DDXFields.GetAt(7).m_value; // 最大值 pAnalog->m_nMaxValues = atoi(m_DDXFields.GetAt(8).m_value); // 最小值 pAnalog->m_nMinValues = atoi(m_DDXFields.GetAt(9).m_value); // 最大转换比率 pAnalog->m_nMaxConvtRate = atoi(m_DDXFields.GetAt(10).m_value); // 最小转换比率 pAnalog->m_nMinConvtRate = atoi(m_DDXFields.GetAt(11).m_value); // 下限 pAnalog->m_nLowerLimit = atoi(m_DDXFields.GetAt(12).m_value); // 上限 pAnalog->m_nUpperLimit = atoi(m_DDXFields.GetAt(13).m_value); // 正常状态 pAnalog->m_nNormalState = atoi(m_DDXFields.GetAt(14).m_value); // 设定值 pAnalog->m_strSetValue = m_DDXFields.GetAt(15).m_value; // 校正值 pAnalog->m_nRearm = atoi(m_DDXFields.GetAt(16).m_value); // 偏移量 pAnalog->m_nOffset = atoi(m_DDXFields.GetAt(17).m_value); // 单位 pAnalog->m_strUnit = m_DDXFields.GetAt(18).m_value; // 采集频率 pAnalog->m_nCollectFreq = atoi(m_DDXFields.GetAt(19).m_value); // 转换系数 pAnalog->m_fCoef = (float)atof(m_DDXFields.GetAt(20).m_value); // 告警级别 pAnalog->m_nWaringLevel = atoi(m_DDXFields.GetAt(21).m_value); // 读写权限 pAnalog->m_nPurview = atoi(m_DDXFields.GetAt(22).m_value); // 是否保存数值 pAnalog->m_bIsSave = atoi(m_DDXFields.GetAt(23).m_value); // 是否实时采集数据 pAnalog->m_bRealtimeFlag = atoi(m_DDXFields.GetAt(24).m_value); // 是否记录实时曲线 pAnalog->m_bRecCurve = atoi(m_DDXFields.GetAt(25).m_value); // 是否允许DDE访问 pAnalog->m_bIsDDE = atoi(m_DDXFields.GetAt(26).m_value); // 请求寄存器个数 pAnalog->m_nRegNum = atoi(m_DDXFields.GetAt(27).m_value); // 功能码id pAnalog->m_nFuncCode = atoi(m_DDXFields.GetAt(28).m_value); // 寄存器子id pAnalog->m_nVarChildID = atoi(m_DDXFields.GetAt(29).m_value); // 位信息id pAnalog->m_nVarItemID = atoi(m_DDXFields.GetAt(30).m_value); // SNMP对象oid pAnalog->m_strSnmpOid = m_DDXFields.GetAt(31).m_value; // SNMP域 pAnalog->m_strFields = m_DDXFields.GetAt(32).m_value; // 设备类型ID pAnalog->m_nDevID = atoi(m_DDXFields.GetAt(33).m_value); // 起始地址 pAnalog->m_nRegStartAddr = atoi(m_DDXFields.GetAt(34).m_value); // Rs232请求命令 pAnalog->m_strRs232Cmd = m_DDXFields.GetAt(35).m_value; // Rs232请求类型 pAnalog->m_strRs232Type = m_DDXFields.GetAt(36).m_value; // Rs232数据索引 pAnalog->m_nRs232Index = atoi(m_DDXFields.GetAt(37).m_value); // 辨別時間 pAnalog->m_nIdentifyTime = atoi(m_DDXFields.GetAt(38).m_value); // 重新檢測時間 pAnalog->m_nRedetectTime = atoi(m_DDXFields.GetAt(39).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(42).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 = ""; 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; //pAnalog->m_bReserved1 = FALSE; if( atoi(m_DDXFields.GetAt(41).m_value) == 1 ) { pAnalog->m_bReserved1 = TRUE; } else if( atoi(m_DDXFields.GetAt(41).m_value) == 0 ) { pAnalog->m_bReserved1 = FALSE; } if( atoi(m_DDXFields.GetAt(43).m_value) == 1 ) { pAnalog->m_bReserved2 = TRUE; } else if( atoi(m_DDXFields.GetAt(43).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 CAnalogSinglePropertyDlg::EditVariant(int nVarID) { CString str; CAnalog *pAnalog = pVariantsManager->FindAnalog(nVarID); if( pAnalog==NULL ) return; // 变量UID pAnalog->m_strVarUID = m_DDXFields.GetAt(1).m_value; // 变量名称 pAnalog->m_strName = m_DDXFields.GetAt(2).m_value; // 变量描述 pAnalog->m_strDesc = m_DDXFields.GetAt(3).m_value; // 变量类型ID str = m_DDXFields.GetAt(4).m_value; pAnalog->m_nVarTypeID = atoi(str); // 变量数据长度 str = m_DDXFields.GetAt(5).m_value; pAnalog->m_nDataLen = atoi(str); // 开的描述 pAnalog->m_strOnDesc = m_DDXFields.GetAt(6).m_value; // 关的描述 pAnalog->m_strOffDesc = m_DDXFields.GetAt(7).m_value; // 最大值 pAnalog->m_nMaxValues = atoi(m_DDXFields.GetAt(8).m_value); // 最小值 pAnalog->m_nMinValues = atoi(m_DDXFields.GetAt(9).m_value); // 最大转换比率 pAnalog->m_nMaxConvtRate = atoi(m_DDXFields.GetAt(10).m_value); // 最小转换比率 pAnalog->m_nMinConvtRate = atoi(m_DDXFields.GetAt(11).m_value); // 下限 pAnalog->m_nLowerLimit = atoi(m_DDXFields.GetAt(12).m_value); // 上限 pAnalog->m_nUpperLimit = atoi(m_DDXFields.GetAt(13).m_value); // 正常状态 pAnalog->m_nNormalState = atoi(m_DDXFields.GetAt(14).m_value); // 设定值 pAnalog->m_strSetValue = m_DDXFields.GetAt(15).m_value; // 校正值 pAnalog->m_nRearm = atoi(m_DDXFields.GetAt(16).m_value); // 偏移量 pAnalog->m_nOffset = atoi(m_DDXFields.GetAt(17).m_value); // 单位 pAnalog->m_strUnit = m_DDXFields.GetAt(18).m_value; // 采集频率 pAnalog->m_nCollectFreq = atoi(m_DDXFields.GetAt(19).m_value); // 转换系数 pAnalog->m_fCoef = (float)atof(m_DDXFields.GetAt(20).m_value); // 告警级别 pAnalog->m_nWaringLevel = atoi(m_DDXFields.GetAt(21).m_value); // 读写权限 pAnalog->m_nPurview = atoi(m_DDXFields.GetAt(22).m_value); // 是否保存数值 pAnalog->m_bIsSave = atoi(m_DDXFields.GetAt(23).m_value); // 是否实时采集数据 pAnalog->m_bRealtimeFlag = atoi(m_DDXFields.GetAt(24).m_value); // 是否记录实时曲线 pAnalog->m_bRecCurve = atoi(m_DDXFields.GetAt(25).m_value); // 是否允许DDE访问 pAnalog->m_bIsDDE = atoi(m_DDXFields.GetAt(26).m_value); // 请求寄存器个数 pAnalog->m_nRegNum = atoi(m_DDXFields.GetAt(27).m_value); // 功能码id pAnalog->m_nFuncCode = atoi(m_DDXFields.GetAt(28).m_value); // 寄存器子id pAnalog->m_nVarChildID = atoi(m_DDXFields.GetAt(29).m_value); // 位信息id pAnalog->m_nVarItemID = atoi(m_DDXFields.GetAt(30).m_value); // SNMP对象oid pAnalog->m_strSnmpOid = m_DDXFields.GetAt(31).m_value; // SNMP域 pAnalog->m_strFields = m_DDXFields.GetAt(32).m_value; // 设备类型ID pAnalog->m_nDevID = atoi(m_DDXFields.GetAt(33).m_value); // 起始地址 pAnalog->m_nRegStartAddr = atoi(m_DDXFields.GetAt(34).m_value); // Rs232请求命令 pAnalog->m_strRs232Cmd = m_DDXFields.GetAt(35).m_value; // Rs232请求类型 pAnalog->m_strRs232Type = m_DDXFields.GetAt(36).m_value; // Rs232数据索引 pAnalog->m_nRs232Index = atoi(m_DDXFields.GetAt(37).m_value); // 辨別時間 pAnalog->m_nIdentifyTime = atoi(m_DDXFields.GetAt(38).m_value); // 重新檢測時間 pAnalog->m_nRedetectTime = atoi(m_DDXFields.GetAt(39).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(42).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(41).m_value) == 1 ) { pAnalog->m_bReserved1 = true; } else if( atoi(m_DDXFields.GetAt(41).m_value) == 0 ) { pAnalog->m_bReserved1 = false; } if( atoi(m_DDXFields.GetAt(43).m_value) == 1 ) { pAnalog->m_bReserved2 = true; } else if( atoi(m_DDXFields.GetAt(43).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; 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 CAnalogSinglePropertyDlg::OnBnClickedBtnCancel() { // TODO: 在此添加控件通知处理程序代码 OnCancel(); } int CAnalogSinglePropertyDlg::CheckDataValid() { CHAR szVarID[MAX_ID + 1] = {0}; CExString strVarName; strVarName = m_DDXFields.GetAt(2).m_value; CString strUID = m_DDXFields.GetAt(1).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 CAnalogSinglePropertyDlg::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; } void CAnalogSinglePropertyDlg::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; } void CAnalogSinglePropertyDlg::OnBnClickedBtnSave() { // TODO: 在此添加控件通知处理程序代码 // 存盘操作 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 CAnalogPropertyDlg::GetInvalidMessage( CString sVarName,int iInitValue,int iMinValue,int iMaxValue,int iLowerValue,int iUpperValue,int iNormalValue ) 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, 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,boolreserved3,intreserved1,intreserved2,intreserved3,strreserved2,strreserved3) values("); } else if(!_stricmp(g_strDBType, "PGSQL")) { sprintf(strSQLText, "insert into t_dev_variant(id, 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,boolreserved3,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); g_nRunEditVarTick = GetTickCount();//在运行状态编辑变量的TICK g_bRunEditVar = true;//是否在运行状态编辑变量 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 CAnalogSinglePropertyDlg::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 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,boolreserved3,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,boolreserved3,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 ) { // 添加到变量管理类里面 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 CAnalogSinglePropertyDlg::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 CAnalogSinglePropertyDlg::OnBnClickedBtnSelReg() { // TODO: 在此添加控件通知处理程序代码 // 选择寄存器 } void CAnalogSinglePropertyDlg::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 CAnalogSinglePropertyDlg::OnCbnSelendokComboVarType() { // TODO: 在此添加控件通知处理程序代码 } void CAnalogSinglePropertyDlg::OnBnClickedBtnSelAlarmVar() { // TODO: 在此添加控件通知处理程序代码 CSelectVariantDlg dlg; if ( dlg.DoModal() == IDOK ) { GetDlgItem(IDC_EDT_ALARM_VAR_NAME)->SetWindowText(dlg.m_strVar); } } void CAnalogSinglePropertyDlg::JudgePermit() { if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_PARAM_DESC,"" ) )//"P更改变量描述" { GetDlgItem(IDC_EDT_DESC)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_OPEN_DESC,"" ) )//"P更改开的描述" { GetDlgItem(IDC_EDT_ON_DESC)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_CLOSE_DESC,"" ) )//"P更改关的描述" { GetDlgItem(IDC_EDT_OFF_DESC)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_LOWER_LIMIT,"" ) )//"P更改下限" { GetDlgItem(IDC_EDT_LOWER_LIMIT)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_UPPER_BOUND,"" ) )//"P更改上限" { GetDlgItem(IDC_EDT_UPPER_LIMIT)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_NORMAL_STATUSDATA,"" ) )//"P更改正常状态值" { GetDlgItem(IDC_EDT_NORMAL_STATE)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_SET_STATUSDATA,"" ) )//"P设置状态值" { GetDlgItem(IDC_EDT_SET_VALUE)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_ADJUST,"" ) )//"P更改校正值" { GetDlgItem(IDC_EDT_REARM)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_OFFSET,"" ) )//"P更改偏移量" { GetDlgItem(IDC_EDT_OFF_SET)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_UNIT,"" ) )//"P更改单位" { GetDlgItem(IDC_EDT_UNIT)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_GATHER_RATE,"" ) )//"P更改采集频率" { GetDlgItem(IDC_EDT_COLLECT_FREQ)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_SHIFT_RADIO,"" ) )//"P更改转换系数" { GetDlgItem(IDC_EDT_COEF)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_ALARM_LEVEL,"" ) )//"P更改报警级别" { GetDlgItem(IDC_COMBO_ALARM_LEVEL)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_RW_PMS,"" ) )//"P更改读写权限" { GetDlgItem(IDC_RADIO_READ_ONLY)->EnableWindow( false ); GetDlgItem(IDC_RADIO_WRITE)->EnableWindow( false ); GetDlgItem(IDC_RADIO_READ_WRITE)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_SAVE_DATA_STATUS,"" ) )//"P更改保存数值状态" { GetDlgItem(IDC_CHK_SAVE_DATA)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_REALTIME_GATHER_DATA_STATUS,"" ) )//"P更改实时采集数据状态" { GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_ALARM_CONTENT_CURRENT_DATA,"" ) )//"P更改报警内容是否显示当前值状态" { GetDlgItem(IDC_CHK_SHOW_CURR_VALUE)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_TOUCHOFF_ROMOTE_ALARM,"" ) )//"P更改是否触发远程报警" { GetDlgItem(IDC_CHK_IS_NOTICE)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_IDENTIFICATION_TIME,"" ) )//"P更改辨识时间" { GetDlgItem(IDC_EDT_IDENTIFY_TIME)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_AGAIN_DETECT_TIME,"" ) )//"P更改重新检测时间" { GetDlgItem(IDC_EDT_REDETECT_TIME)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_RENEW_NORMAL_TOUCHOFF_ROMOTE_ALARM,"" ) )//"P更改状态恢复正常是否触发远程报警状态" { GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_SAVE,"" ) )//"P可以存盘" { GetDlgItem(IDC_BTN_SAVE)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_CHOOSEPARAM,"" ) )//"P可以选择变量" { GetDlgItem(IDC_BTN_SEL_ALARM_VAR1)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_VARINI,"" ) )//"P变量初始值" { GetDlgItem(IDC_EDT_PARAM_INIT)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_VARMIN,"" ) )//"P变量最小值" { GetDlgItem(IDC_EDT_PARAM_MIN)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_VARMAX,"" ) )//"P变量最大值" { GetDlgItem(IDC_EDT_PARAM_MAX)->EnableWindow( false ); } if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_NEED_USER_MODIFY,"" ) )//"P需要用户修改" { GetDlgItem(IDC_CHK_IS_MODIFY)->EnableWindow( false ); } } void CAnalogSinglePropertyDlg::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 CAnalogSinglePropertyDlg::ChangeCtrlInfoForEditMore() { //UpdateData(); 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 CAnalogSinglePropertyDlg::OnBnClickedBtnSetStatus() { // TODO: 在此添加控件通知处理程序代码 int iIndex = 0; CString str = m_DDXFields.GetAt(0).m_value; int nVarID = atoi(str); CString strDevUID = m_DDXFields.GetAt(1).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 CAnalogSinglePropertyDlg::OnBnClickedBtnAdvanced() { CRect rc; this->GetWindowRect( rc ); if( rc.Height()==265 ) { SetWindowPos(NULL,0,0,605,480,SWP_NOMOVE); m_btnAdvanced.SetWindowText( "高级<<" ); //this->MoveWindow( 0,0,605,465 ); if( m_operation==EDIT ) { m_btnSetStatus.EnableWindow( true ); } } else { SetWindowPos(NULL,0,0,605,265,SWP_NOMOVE); m_btnAdvanced.SetWindowText( "高级>>" ); //this->MoveWindow( 0,0,605,265 ); if( m_operation==EDIT ) { m_btnSetStatus.EnableWindow( false ); } } } void CAnalogSinglePropertyDlg::OnBnClickedBtnDatePlan() { // TODO: 在此添加控件通知处理程序代码 int iIndex = 0; CString str = m_DDXFields.GetAt(0).m_value; int nVarID = atoi(str); CString strDevUID = m_DDXFields.GetAt(1).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 CAnalogSinglePropertyDlg::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; }