AnalogPropertyDlg.cpp 63 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077
  1. // AnalogPropertyDlg1.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "IDE.h"
  5. #include "AnalogPropertyDlg.h"
  6. #include "DlgSelectDev.h"
  7. #include "StringOperation.h"
  8. #include "DlgBitManager.h"
  9. #include ".\analogpropertydlg.h"
  10. #include "SelectVariantDlg.h"
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CAnalogPropertyDlg dialog
  18. CAnalogPropertyDlg::CAnalogPropertyDlg(CWnd* pParent /*=NULL*/)
  19. : CDialog(CAnalogPropertyDlg::IDD, pParent)
  20. {
  21. //{{AFX_DATA_INIT(CAnalogPropertyDlg)
  22. //}}AFX_DATA_INIT
  23. m_operation=EDIT;
  24. m_DDXFields.SetSize(48);
  25. m_nVarID = 0;
  26. m_nVarSaveNum=0;
  27. m_nVarSaveNumOld=0;
  28. m_nPrevRow = 0;
  29. }
  30. void CAnalogPropertyDlg::DoDataExchange(CDataExchange* pDX)
  31. {
  32. CDialog::DoDataExchange(pDX);
  33. //{{AFX_DATA_MAP(CAnalogPropertyDlg)
  34. //}}AFX_DATA_MAP
  35. DDX_Control(pDX, IDC_COMBO_VAR_TYPE, m_cmbVarType);
  36. DDX_Control(pDX, IDC_COMBO_CODE_FUNC, m_cmbFuncCode);
  37. m_DDXFields.DDX(pDX);
  38. }
  39. BEGIN_MESSAGE_MAP(CAnalogPropertyDlg, CDialog)
  40. //{{AFX_MSG_MAP(CAnalogPropertyDlg)
  41. //}}AFX_MSG_MAP
  42. ON_BN_CLICKED(IDC_BTN_CANCEL, OnBnClickedBtnCancel)
  43. ON_BN_CLICKED(IDC_BTN_SAVE, OnBnClickedBtnSave)
  44. ON_BN_CLICKED(IDC_BTN_SEL_DEV, OnBnClickedBtnSelDev)
  45. ON_BN_CLICKED(IDC_BTN_SEL_REG, OnBnClickedBtnSelReg)
  46. ON_BN_CLICKED(IDC_BTN_SEL_BIT, OnBnClickedBtnSelBit)
  47. ON_CBN_SELENDOK(IDC_COMBO_VAR_TYPE, OnCbnSelendokComboVarType)
  48. ON_BN_CLICKED(IDC_BTN_SEL_ALARM_VAR1, OnBnClickedBtnSelAlarmVar)
  49. END_MESSAGE_MAP()
  50. /////////////////////////////////////////////////////////////////////////////
  51. // CAnalogPropertyDlg message handlers
  52. BOOL CAnalogPropertyDlg::OnInitDialog()
  53. {
  54. CDialog::OnInitDialog();
  55. //排序所选的列号
  56. int nTemp;
  57. for( int i=0;i<m_nArrayListID.GetCount();i++ )
  58. {
  59. for( int j=i+1;j<m_nArrayListID.GetCount();j++ )
  60. {
  61. if( m_nArrayListID[i]>m_nArrayListID[j] )
  62. {
  63. nTemp = m_nArrayListID[i];
  64. m_nArrayListID[i] = m_nArrayListID[j];
  65. m_nArrayListID[j] = nTemp;
  66. }
  67. }
  68. }
  69. int iIndex = 0;
  70. m_DDXFields.m_pWnd=this;
  71. m_DDXFields.SetDBType( g_strDBType );
  72. m_DDXFields.ElementAt(iIndex).Set(_T("id"), IDC_EDT_VAR_ID);
  73. m_DDXFields.ElementAt(iIndex).m_description=g_strVarID;
  74. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  75. iIndex++;
  76. m_DDXFields.ElementAt(iIndex).Set(_T("boolreserved3"), IDC_EDT_IS_MODIFY);
  77. m_DDXFields.ElementAt(iIndex).m_description=g_strIsModify;
  78. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL;
  79. iIndex++;
  80. m_DDXFields.ElementAt(iIndex).Set(_T( "uid" ),IDC_EDT_VAR_UID) ;
  81. m_DDXFields.ElementAt(iIndex).m_description=g_strVarUid1;
  82. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  83. iIndex++;
  84. m_DDXFields.ElementAt(iIndex).Set(_T( "varname" ),IDC_EDT_VAR_NAME) ;
  85. m_DDXFields.ElementAt(iIndex).m_description=g_strVarName1;
  86. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  87. iIndex++;
  88. m_DDXFields.ElementAt(iIndex).Set(_T( "description" ),IDC_EDT_DESC) ;
  89. m_DDXFields.ElementAt(iIndex).m_description=g_strVarDesc;
  90. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  91. iIndex++;
  92. m_DDXFields.ElementAt(iIndex).Set(_T("vartypeid"), IDC_EDT_VAR_TYPE_ID);
  93. m_DDXFields.ElementAt(iIndex).m_description=g_strVarTypeID;
  94. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  95. iIndex++;
  96. m_DDXFields.ElementAt(iIndex).Set(_T("datalen"), IDC_EDT_VAR_DATA_LEN, _T("1"), false, false);
  97. m_DDXFields.ElementAt(iIndex).m_description=g_strVarDataLen;
  98. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  99. iIndex++;
  100. m_DDXFields.ElementAt(iIndex).Set(_T("ondesc"), IDC_EDT_ON_DESC);
  101. m_DDXFields.ElementAt(iIndex).m_description=g_strOnDesc;
  102. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  103. iIndex++;
  104. m_DDXFields.ElementAt(iIndex).Set(_T("offdesc"), IDC_EDT_OFF_DESC);
  105. m_DDXFields.ElementAt(iIndex).m_description=g_strOffDesc;
  106. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  107. iIndex++;
  108. m_DDXFields.ElementAt(iIndex).Set(_T("maxvalues"), IDC_EDT_MAX_VALUES, _T("0"));
  109. m_DDXFields.ElementAt(iIndex).m_description=g_strMaxValues;
  110. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  111. iIndex++;
  112. m_DDXFields.ElementAt(iIndex).Set(_T("minvalues"), IDC_EDT_MIN_VALUES, _T("0"));
  113. m_DDXFields.ElementAt(iIndex).m_description=g_strMinValues;
  114. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  115. iIndex++;
  116. m_DDXFields.ElementAt(iIndex).Set(_T("maxconvtrate"), IDC_EDT_MAX_SCALE, _T("0"));
  117. m_DDXFields.ElementAt(iIndex).m_description=g_strMaxScale;
  118. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  119. iIndex++;
  120. m_DDXFields.ElementAt(iIndex).Set(_T("minconvtrate"), IDC_EDT_MIN_SCALE, _T("0"));
  121. m_DDXFields.ElementAt(iIndex).m_description=g_strMinScale;
  122. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  123. iIndex++;
  124. m_DDXFields.ElementAt(iIndex).Set(_T("lowerlimit"), IDC_EDT_LOWER_LIMIT, _T("0"));
  125. m_DDXFields.ElementAt(iIndex).m_description=g_strLowerLimit;
  126. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  127. iIndex++;
  128. m_DDXFields.ElementAt(iIndex).Set(_T("upperlimit"), IDC_EDT_UPPER_LIMIT, _T("0"));
  129. m_DDXFields.ElementAt(iIndex).m_description=g_strUpperLimit;
  130. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  131. iIndex++;
  132. m_DDXFields.ElementAt(iIndex).Set(_T("normalstate"), IDC_EDT_NORMAL_STATE, _T("0"));
  133. m_DDXFields.ElementAt(iIndex).m_description=g_strNormalState;
  134. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  135. iIndex++;
  136. m_DDXFields.ElementAt(iIndex).Set(_T("setvalue"), IDC_EDT_SET_VALUE, _T("0"));
  137. m_DDXFields.ElementAt(iIndex).m_description=g_strSetValue;
  138. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  139. iIndex++;
  140. m_DDXFields.ElementAt(iIndex).Set(_T("rearm"), IDC_EDT_REARM, _T("0"));
  141. m_DDXFields.ElementAt(iIndex).m_description=g_strRearm;
  142. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  143. iIndex++;
  144. m_DDXFields.ElementAt(iIndex).Set(_T("offsets"), IDC_EDT_OFF_SET, _T("0"));
  145. m_DDXFields.ElementAt(iIndex).m_description=g_strOffset;
  146. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  147. iIndex++;
  148. m_DDXFields.ElementAt(iIndex).Set(_T("unit"), IDC_EDT_UNIT);
  149. m_DDXFields.ElementAt(iIndex).m_description=g_strUint;
  150. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  151. iIndex++;
  152. m_DDXFields.ElementAt(iIndex).Set(_T("collectfrequence"), IDC_EDT_COLLECT_FREQ, _T("3"));
  153. m_DDXFields.ElementAt(iIndex).m_description=g_strCollectFreq;
  154. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  155. iIndex++;
  156. m_DDXFields.ElementAt(iIndex).Set(_T("coefficient"), IDC_EDT_COEF, _T("0"));
  157. m_DDXFields.ElementAt(iIndex).m_description=g_strCoef;
  158. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_FLOAT;
  159. iIndex++;
  160. m_DDXFields.ElementAt(iIndex).Set(_T("warnlevel"), IDC_EDT_ALARM_LEVEL);
  161. m_DDXFields.ElementAt(iIndex).m_description=_T("告警级别");
  162. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  163. iIndex++;
  164. m_DDXFields.ElementAt(iIndex).Set(_T("readonly"), IDC_EDT_READ_WRITE);
  165. m_DDXFields.ElementAt(iIndex).m_description=g_strReadWrite;
  166. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BIT;
  167. iIndex++;
  168. m_DDXFields.ElementAt(iIndex).Set(_T("issave"), IDC_EDT_SAVE_DATA);
  169. m_DDXFields.ElementAt(iIndex).m_description=g_strSaveData;
  170. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL;
  171. iIndex++;
  172. m_DDXFields.ElementAt(iIndex).Set(_T("realtimeflag"), IDC_EDT_COLLECT_THRAD_DATA);
  173. m_DDXFields.ElementAt(iIndex).m_description=g_strCollectThreadData;
  174. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL;
  175. iIndex++;
  176. m_DDXFields.ElementAt(iIndex).Set(_T("reccurve"), IDC_EDT_SAVE_CURVE);
  177. m_DDXFields.ElementAt(iIndex).m_description=g_strSaveCurve;
  178. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL;
  179. iIndex++;
  180. m_DDXFields.ElementAt(iIndex).Set(_T("isdde"), IDC_EDT_IS_DDE);
  181. m_DDXFields.ElementAt(iIndex).m_description=g_strIsDDE;
  182. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL;
  183. iIndex++;
  184. m_DDXFields.ElementAt(iIndex).Set(_T("registernum"), IDC_EDT_REG_NUM);
  185. m_DDXFields.ElementAt(iIndex).m_description=g_strRegNum;
  186. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  187. iIndex++;
  188. m_DDXFields.ElementAt(iIndex).Set(_T("funcid"), IDC_EDT_FUNC_ID);
  189. m_DDXFields.ElementAt(iIndex).m_description=g_strFuncID;
  190. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  191. iIndex++;
  192. m_DDXFields.ElementAt(iIndex).Set(_T("childid"), IDC_EDT_CHILD_ID);
  193. m_DDXFields.ElementAt(iIndex).m_description=g_strChildID;
  194. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  195. iIndex++;
  196. m_DDXFields.ElementAt(iIndex).Set(_T("var_item_id"), IDC_EDT_VAR_ITEM_ID);
  197. m_DDXFields.ElementAt(iIndex).m_description=g_strItemID;
  198. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  199. iIndex++;
  200. m_DDXFields.ElementAt(iIndex).Set(_T("snmpoid"), IDC_EDT_SNMP_OID);
  201. m_DDXFields.ElementAt(iIndex).m_description=g_strSnmpOid;
  202. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  203. iIndex++;
  204. m_DDXFields.ElementAt(iIndex).Set(_T("fields"), IDC_EDT_SNMP_PUBLIC);
  205. m_DDXFields.ElementAt(iIndex).m_description=g_strSnmpPublic;
  206. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  207. iIndex++;
  208. m_DDXFields.ElementAt(iIndex).Set(_T("devtypeid"), IDC_EDT_DEV_TYPE_ID);
  209. m_DDXFields.ElementAt(iIndex).m_description=g_strDevTypeID;
  210. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  211. iIndex++;
  212. m_DDXFields.ElementAt(iIndex).Set(_T("address"), IDC_EDT_VAR_START_ADDR);
  213. m_DDXFields.ElementAt(iIndex).m_description=g_strVarStartAddr;
  214. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  215. iIndex++;
  216. m_DDXFields.ElementAt(iIndex).Set(_T("rs232cmd"), IDC_EDT_RS232_CMD);
  217. m_DDXFields.ElementAt(iIndex).m_description=g_strRs232Cmd;
  218. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  219. iIndex++;
  220. m_DDXFields.ElementAt(iIndex).Set(_T("rs232type"), IDC_EDT_RS232_TYPE);
  221. m_DDXFields.ElementAt(iIndex).m_description=g_strRs232Type;
  222. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  223. iIndex++;
  224. m_DDXFields.ElementAt(iIndex).Set(_T("rs232index"), IDC_EDT_RS232_INDEX);
  225. m_DDXFields.ElementAt(iIndex).m_description=g_strRs232Index;
  226. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  227. iIndex++;
  228. m_DDXFields.ElementAt(iIndex).Set(_T("identifytime"), IDC_EDT_IDENTIFY_TIME);
  229. m_DDXFields.ElementAt(iIndex).m_description=g_strIndentifyTime;
  230. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  231. iIndex++;
  232. m_DDXFields.ElementAt(iIndex).Set(_T("redetecttime"), IDC_EDT_REDETECT_TIME);
  233. m_DDXFields.ElementAt(iIndex).m_description=g_strRedectTime;
  234. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  235. iIndex++;
  236. m_DDXFields.ElementAt(iIndex).Set(_T("normalisnotice"), IDC_EDT_NORMAL_IS_NOTICE);
  237. m_DDXFields.ElementAt(iIndex).m_description=g_strReturnNormalAlarm;
  238. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL;
  239. iIndex++;
  240. m_DDXFields.ElementAt(iIndex).Set(_T("boolreserved1"), IDC_EDT_SHOW_CURR_VALUE);
  241. m_DDXFields.ElementAt(iIndex).m_description=g_strShowCurrValue;
  242. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL;
  243. iIndex++;
  244. m_DDXFields.ElementAt(iIndex).Set(_T( "strreserved1" ),IDC_EDT_ALARM_VAR_NAME) ;
  245. m_DDXFields.ElementAt(iIndex).m_description=g_strAlarmVarName;
  246. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_STR;
  247. iIndex++;
  248. m_DDXFields.ElementAt(iIndex).Set(_T("boolreserved2"), IDC_EDT_IS_NOTICE);
  249. m_DDXFields.ElementAt(iIndex).m_description=g_strIsNotice;
  250. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_BOOL;
  251. iIndex++;
  252. m_DDXFields.ElementAt(iIndex).Set(_T("intreserved1"), IDC_EDT_PARAM_INIT);
  253. m_DDXFields.ElementAt(iIndex).m_description=g_strParamInit;
  254. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  255. iIndex++;
  256. m_DDXFields.ElementAt(iIndex).Set(_T("intreserved2"), IDC_EDT_PARAM_MIN);
  257. m_DDXFields.ElementAt(iIndex).m_description=g_strParamMin;
  258. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  259. iIndex++;
  260. m_DDXFields.ElementAt(iIndex).Set(_T("intreserved3"), IDC_EDT_PARAM_MAX);
  261. m_DDXFields.ElementAt(iIndex).m_description=g_strParamMax;
  262. m_DDXFields.ElementAt(iIndex).m_nDataType = DATA_NUM;
  263. //IDC_CHK_IS_NOTICE
  264. //IDC_EDT_IS_NOTICE
  265. ChangeCtrlInfo();
  266. UpdateData(TRUE);
  267. switch (m_operation)
  268. {
  269. case NEW:
  270. break;
  271. default:
  272. m_DDXFields.ReadData(m_pSet);
  273. break;
  274. }
  275. UpdateData(FALSE);
  276. InitCtrlInfo(m_operation);
  277. if( m_operation==EDITMORE )
  278. {
  279. //保存没修改过的数据,多编辑时比较,修改过才保存
  280. GetVarForEditMoreOld();
  281. SetControlStatusForEditMore();
  282. }
  283. return TRUE; // return TRUE unless you set the focus to a control
  284. // EXCEPTION: OCX Property Pages should return FALSE
  285. }
  286. void CAnalogPropertyDlg::SetControlStatusForEditMore()
  287. {
  288. //变量名
  289. GetDlgItem(IDC_EDT_VAR_NAME)->EnableWindow( false );
  290. GetDlgItem(IDC_BTN_SEL_DEV)->EnableWindow( false );
  291. //变量类型
  292. GetDlgItem(IDC_COMBO_VAR_TYPE)->EnableWindow( false );
  293. //变量数据长度
  294. GetDlgItem(IDC_EDT_VAR_DATA_LEN)->EnableWindow( false );
  295. //起始地址
  296. GetDlgItem(IDC_EDT_VAR_START_ADDR)->EnableWindow( false );
  297. //变量描述
  298. GetDlgItem(IDC_EDT_DESC)->EnableWindow( false );
  299. //开的描述
  300. GetDlgItem(IDC_EDT_ON_DESC)->EnableWindow( false );
  301. //关的描述
  302. GetDlgItem(IDC_EDT_OFF_DESC)->EnableWindow( false );
  303. //读写权限
  304. GetDlgItem(IDC_RADIO_READ_ONLY)->EnableWindow( false );
  305. GetDlgItem(IDC_RADIO_WRITE)->EnableWindow( false );
  306. GetDlgItem(IDC_RADIO_READ_WRITE)->EnableWindow( false );
  307. //记载历史曲线记录
  308. GetDlgItem(IDC_CHK_SAVE_CURVE)->EnableWindow( false );
  309. //允许DDE访问
  310. GetDlgItem(IDC_CHK_IS_DDE)->EnableWindow( false );
  311. //选择变量
  312. GetDlgItem(IDC_BTN_SEL_ALARM_VAR1)->EnableWindow( false );
  313. //请求寄存器个数
  314. GetDlgItem(IDC_EDT_REG_NUM)->EnableWindow( false );
  315. //功能码
  316. GetDlgItem(IDC_COMBO_CODE_FUNC)->EnableWindow( false );
  317. //选择bit位信息...
  318. GetDlgItem(IDC_BTN_SEL_BIT)->EnableWindow( false );
  319. //Snmp对象OID
  320. GetDlgItem(IDC_EDT_SNMP_OID)->EnableWindow( false );
  321. //Snmp域
  322. GetDlgItem(IDC_EDT_SNMP_PUBLIC)->EnableWindow( false );
  323. //232 类型
  324. GetDlgItem(IDC_COMBO_RS232_TYPE)->EnableWindow( false );
  325. //232 命令
  326. GetDlgItem(IDC_COMBO_RS232_CMD)->EnableWindow( false );
  327. //232 数据索引
  328. GetDlgItem(IDC_COMBO_RS232_INDEX)->EnableWindow( false );
  329. }
  330. void CAnalogPropertyDlg::InitRs232Combo()
  331. {
  332. CHAR strFile[MAX_FILE_LENGTH + 1] = "";
  333. CString strDevUid;
  334. char szDllName[MAX_NAME_LENGTH + 1] = {0};
  335. char szIniName[MAX_NAME_LENGTH + 1] = {0};
  336. char szDevProtocolType[MAX_NAME_LENGTH + 1] = {0};
  337. char szCmd[MAX_NAME_LENGTH + 1] = {0};
  338. char szCmdType[MAX_NAME_LENGTH + 1] = {0};
  339. char szCmdIndex[MAX_NAME_LENGTH + 1] = {0};
  340. GetDlgItem(IDC_EDT_VAR_UID)->GetWindowText(strDevUid);
  341. CComboBox* pRs232Cmd = (CComboBox*)GetDlgItem(IDC_COMBO_RS232_CMD);
  342. CComboBox* pRs232Type = (CComboBox*)GetDlgItem(IDC_COMBO_RS232_TYPE);
  343. CComboBox* pRs232Index = (CComboBox*)GetDlgItem(IDC_COMBO_RS232_INDEX);
  344. pRs232Cmd->ResetContent();
  345. pRs232Type->ResetContent();
  346. pRs232Index->ResetContent();
  347. if( strDevUid.Compare("") ) // 只有当设备Uid不为空的情况,才能从ini文件读取Rs232类型命令
  348. {
  349. CDBInterface::GetInstancePtr()->GetDevInfo(
  350. (char *)(LPCTSTR)strDevUid,
  351. szDllName,
  352. szIniName,
  353. szDevProtocolType );
  354. if( strcmp(szDllName, "") != 0 )
  355. {
  356. CString str;
  357. if( strcmp(szIniName, "") != 0 )
  358. {
  359. str = szIniName;
  360. wsprintf(strFile, "%s\\config\\%s", g_strDirectory, szIniName);
  361. }
  362. else
  363. {
  364. str = szDllName;
  365. int nIndex = str.Find(".dll");
  366. if( nIndex == -1 )
  367. {
  368. wsprintf(strFile, "%s\\config\\%s.ini", g_strDirectory, szDllName);
  369. }
  370. else
  371. {
  372. str = str.Mid(0, str.GetLength() - 4);
  373. wsprintf(strFile, "%s\\config\\%s.ini", g_strDirectory, str);
  374. }
  375. }
  376. int nCmdCount;
  377. nCmdCount = GetPrivateProfileInt("CMD", "cmd-count", 0, strFile);
  378. CString strCmd;
  379. for( int i = 1; i < nCmdCount + 1; i++ )
  380. {
  381. strCmd.Format("cmd-%d", i);
  382. GetPrivateProfileString("CMD",
  383. (char *)(LPCTSTR)strCmd, "", szCmd, sizeof(szCmd), strFile);
  384. if( strcmp(szCmd, "") != 0 )
  385. {
  386. pRs232Cmd->AddString(szCmd);
  387. }
  388. }
  389. GetDlgItem(IDC_EDT_RS232_CMD)->GetWindowText(str);
  390. if( str.Trim().Compare("") )
  391. {
  392. GetPrivateProfileString("CMD",
  393. (char *)(LPCTSTR)str, "", szCmd, sizeof(szCmd), strFile);
  394. pRs232Cmd->SetWindowText(szCmd);
  395. }
  396. else
  397. {
  398. pRs232Cmd->SetCurSel(9);
  399. }
  400. int nCmdTypeCount;
  401. nCmdTypeCount = GetPrivateProfileInt("TYPE", "type-count", 0, strFile);
  402. CString strCmdType;
  403. for( int i = 1; i < nCmdTypeCount + 1; i++ )
  404. {
  405. strCmdType.Format("type-%d", i);
  406. GetPrivateProfileString("TYPE",
  407. (char *)(LPCTSTR)strCmdType, "",
  408. szCmdType, sizeof(szCmdType), strFile);
  409. if( strcmp(szCmdType, "") != 0 )
  410. {
  411. pRs232Type->AddString(szCmdType);
  412. }
  413. }
  414. GetDlgItem(IDC_EDT_RS232_TYPE)->GetWindowText(str);
  415. if( str.Trim().Compare("") )
  416. {
  417. GetPrivateProfileString("TYPE",
  418. (char *)(LPCTSTR)str, "",
  419. szCmdType, sizeof(szCmdType), strFile);
  420. pRs232Type->SetWindowText(szCmdType);
  421. }
  422. else
  423. {
  424. pRs232Type->SetCurSel(0);
  425. }
  426. int nCmdIndexCount;
  427. nCmdIndexCount = GetPrivateProfileInt("INDEX", "index-count", 0, strFile);
  428. CString strCmdIndex;
  429. for( int i = 1; i < nCmdIndexCount + 1; i++ )
  430. {
  431. strCmdIndex.Format("index-%d", i);
  432. GetPrivateProfileString("INDEX",
  433. (char *)(LPCTSTR)strCmdIndex, "",
  434. szCmdIndex, sizeof(szCmdIndex), strFile);
  435. if( strcmp(szCmdIndex, "") != 0 )
  436. {
  437. pRs232Index->AddString(szCmdIndex);
  438. }
  439. }
  440. GetDlgItem(IDC_EDT_RS232_INDEX)->GetWindowText(str);
  441. if( str.Trim().Compare("") )
  442. {
  443. strCmdIndex.Format("index-%d", atoi(str) + 1);
  444. GetPrivateProfileString("INDEX",
  445. (char *)(LPCTSTR)strCmdIndex, "",
  446. szCmdIndex, sizeof(szCmdIndex), strFile);
  447. pRs232Index->SetWindowText(szCmdIndex);
  448. }
  449. else
  450. {
  451. pRs232Index->SetCurSel(0);
  452. }
  453. }
  454. }
  455. }
  456. void CAnalogPropertyDlg::InitCtrlInfo(int nType)
  457. {
  458. m_btnSave.SubclassDlgItem(IDC_BTN_SAVE, this);
  459. m_btnSave.SetBitmaps(IDB_SAVE, RGB(255, 0, 255));
  460. m_btnSave.SetFlat(FALSE);
  461. m_btnSave.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  462. m_btnCancel.SubclassDlgItem(IDC_BTN_CANCEL, this);
  463. m_btnCancel.SetBitmaps(IDB_DEL, RGB(255, 0, 255));
  464. m_btnCancel.SetFlat(FALSE);
  465. m_btnCancel.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  466. //GetDlgItem(IDC_EDT_COLLECT_FREQ)->SetWindowText("300");
  467. ((CComboBox *)GetDlgItem(IDC_COMBO_ALARM_LEVEL))->SetCurSel(3);
  468. //((CButton*)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(TRUE);
  469. ((CComboBox *)GetDlgItem(IDC_COMBO_CODE_FUNC))->SetCurSel(0);
  470. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  471. // 初始化变量类型下拉列表
  472. try
  473. {
  474. sprintf(strSQLText, "SELECT id, vartype FROM t_var_type");
  475. m_varTypeArray.Fill(strSQLText, _T("vartype"),_T("id"));
  476. m_cmbVarType.Attach(&m_varTypeArray, "");
  477. m_cmbVarType.Fill();
  478. m_cmbVarType.SetCurSel(0);
  479. }
  480. catch(_com_error *e)
  481. {
  482. CString Error = e->ErrorMessage();
  483. AfxMessageBox(e->ErrorMessage());
  484. }
  485. catch(...)
  486. {
  487. }
  488. // 初始化功能码下拉列表
  489. try
  490. {
  491. sprintf(strSQLText, "SELECT id, funcname FROM t_dev_func_code");
  492. m_funcCodeArray.Fill(strSQLText, _T("funcname"),_T("id"));
  493. m_cmbFuncCode.Attach(&m_funcCodeArray, "");
  494. m_cmbFuncCode.Fill();
  495. m_cmbFuncCode.SetCurSel(0);
  496. }
  497. catch(_com_error *e)
  498. {
  499. CString Error = e->ErrorMessage();
  500. AfxMessageBox(e->ErrorMessage());
  501. }
  502. CString str;
  503. GetDlgItem(IDC_EDT_READ_WRITE)->GetWindowText(str);
  504. if( !str.Compare("0") )
  505. {
  506. ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(TRUE);
  507. ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(FALSE);
  508. ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(FALSE);
  509. }
  510. else if( !str.Compare("1") )
  511. {
  512. ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(FALSE);
  513. ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(TRUE);
  514. ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(FALSE);
  515. }
  516. else if( !str.Compare("2") )
  517. {
  518. ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(FALSE);
  519. ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(FALSE);
  520. ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(TRUE);
  521. }
  522. GetDlgItem(IDC_EDT_SAVE_DATA)->GetWindowText(str);
  523. ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  524. GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->GetWindowText(str);
  525. ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  526. GetDlgItem(IDC_EDT_SAVE_CURVE)->GetWindowText(str);
  527. ((CButton *)GetDlgItem(IDC_CHK_SAVE_CURVE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  528. GetDlgItem(IDC_EDT_IS_DDE)->GetWindowText(str);
  529. ((CButton *)GetDlgItem(IDC_CHK_IS_DDE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  530. GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->GetWindowText(str);
  531. ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  532. GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->GetWindowText(str);
  533. ((CButton *)GetDlgItem(IDC_CHK_SHOW_CURR_VALUE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE);
  534. GetDlgItem(IDC_EDT_IS_NOTICE)->GetWindowText(str);
  535. ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE);
  536. GetDlgItem(IDC_EDT_IS_MODIFY)->GetWindowText(str);
  537. ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE);
  538. if( nType == EDIT || nType == COPY || nType == EDITMORE )
  539. {
  540. CString strVarTypeID, strFuncID, strWarningLevel;
  541. CHAR szTypeName[MAX_DESC + 1] = {0};
  542. CHAR szFuncName[MAX_DESC + 1] = {0};
  543. GetDlgItem(IDC_EDT_VAR_TYPE_ID)->GetWindowText(strVarTypeID);
  544. GetDlgItem(IDC_EDT_FUNC_ID)->GetWindowText(strFuncID);
  545. GetDlgItem(IDC_EDT_ALARM_LEVEL)->GetWindowText(strWarningLevel);
  546. CDBInterface::GetInstancePtr()->GetVarTypeName( atoi(strVarTypeID), szTypeName );
  547. CDBInterface::GetInstancePtr()->GetFuncCodeName( atoi(strFuncID), szFuncName );
  548. GetDlgItem(IDC_COMBO_VAR_TYPE)->SetWindowText(szTypeName);
  549. GetDlgItem(IDC_COMBO_CODE_FUNC)->SetWindowText(szFuncName);
  550. GetDlgItem(IDC_COMBO_ALARM_LEVEL)->SetWindowText(strWarningLevel);
  551. InitRs232Combo();
  552. }
  553. else if( nType == NEW )
  554. {
  555. GetDlgItem(IDC_EDT_MAX_VALUES)->SetWindowText("0");
  556. GetDlgItem(IDC_EDT_MIN_VALUES)->SetWindowText("0");
  557. GetDlgItem(IDC_EDT_MAX_SCALE)->SetWindowText("0");
  558. GetDlgItem(IDC_EDT_MIN_SCALE)->SetWindowText("0");
  559. GetDlgItem(IDC_EDT_LOWER_LIMIT)->SetWindowText("0");
  560. GetDlgItem(IDC_EDT_UPPER_LIMIT)->SetWindowText("0");
  561. GetDlgItem(IDC_EDT_NORMAL_STATE)->SetWindowText("0");
  562. GetDlgItem(IDC_EDT_SET_VALUE)->SetWindowText("0");
  563. GetDlgItem(IDC_EDT_REARM)->SetWindowText("0");
  564. GetDlgItem(IDC_EDT_OFF_SET)->SetWindowText("0");
  565. GetDlgItem(IDC_EDT_COLLECT_FREQ)->SetWindowText("300");
  566. GetDlgItem(IDC_EDT_COEF)->SetWindowText("1");
  567. GetDlgItem(IDC_EDT_VAR_ITEM_ID)->SetWindowText("0");
  568. GetDlgItem(IDC_EDT_IDENTIFY_TIME)->SetWindowText("30");
  569. GetDlgItem(IDC_EDT_REDETECT_TIME)->SetWindowText("60");
  570. GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("1");
  571. GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("1");
  572. GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("1");
  573. GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("1");
  574. GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("1");
  575. ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->SetCheck(TRUE);
  576. ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->SetCheck(TRUE);
  577. ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->SetCheck(TRUE);
  578. ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->SetCheck(TRUE);
  579. ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->SetCheck(TRUE);
  580. }
  581. //UpdateData(false);
  582. }
  583. void CAnalogPropertyDlg::InitCtrlInfoForEditMore()
  584. {
  585. //GetDlgItem(IDC_EDT_COLLECT_FREQ)->SetWindowText("300");
  586. ((CComboBox *)GetDlgItem(IDC_COMBO_ALARM_LEVEL))->SetCurSel(3);
  587. //((CButton*)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(TRUE);
  588. ((CComboBox *)GetDlgItem(IDC_COMBO_CODE_FUNC))->SetCurSel(0);
  589. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  590. // 初始化变量类型下拉列表
  591. try
  592. {
  593. sprintf(strSQLText, "SELECT id, vartype FROM t_var_type");
  594. m_varTypeArray.Fill(strSQLText, _T("vartype"),_T("id"));
  595. m_cmbVarType.Attach(&m_varTypeArray, "");
  596. m_cmbVarType.Fill();
  597. m_cmbVarType.SetCurSel(0);
  598. }
  599. catch(_com_error *e)
  600. {
  601. CString Error = e->ErrorMessage();
  602. AfxMessageBox(e->ErrorMessage());
  603. }
  604. catch(...)
  605. {
  606. }
  607. // 初始化功能码下拉列表
  608. try
  609. {
  610. sprintf(strSQLText, "SELECT id, funcname FROM t_dev_func_code");
  611. m_funcCodeArray.Fill(strSQLText, _T("funcname"),_T("id"));
  612. m_cmbFuncCode.Attach(&m_funcCodeArray, "");
  613. m_cmbFuncCode.Fill();
  614. m_cmbFuncCode.SetCurSel(0);
  615. }
  616. catch(_com_error *e)
  617. {
  618. CString Error = e->ErrorMessage();
  619. AfxMessageBox(e->ErrorMessage());
  620. }
  621. CString str;
  622. GetDlgItem(IDC_EDT_READ_WRITE)->GetWindowText(str);
  623. if( !str.Compare("0") )
  624. {
  625. ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(TRUE);
  626. ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(FALSE);
  627. ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(FALSE);
  628. }
  629. else if( !str.Compare("1") )
  630. {
  631. ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(FALSE);
  632. ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(TRUE);
  633. ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(FALSE);
  634. }
  635. else if( !str.Compare("2") )
  636. {
  637. ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->SetCheck(FALSE);
  638. ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->SetCheck(FALSE);
  639. ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->SetCheck(TRUE);
  640. }
  641. GetDlgItem(IDC_EDT_SAVE_DATA)->GetWindowText(str);
  642. ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  643. GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->GetWindowText(str);
  644. ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  645. GetDlgItem(IDC_EDT_SAVE_CURVE)->GetWindowText(str);
  646. ((CButton *)GetDlgItem(IDC_CHK_SAVE_CURVE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  647. GetDlgItem(IDC_EDT_IS_DDE)->GetWindowText(str);
  648. ((CButton *)GetDlgItem(IDC_CHK_IS_DDE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  649. GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->GetWindowText(str);
  650. ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE );
  651. GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->GetWindowText(str);
  652. ((CButton *)GetDlgItem(IDC_CHK_SHOW_CURR_VALUE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE);
  653. GetDlgItem(IDC_EDT_IS_NOTICE)->GetWindowText(str);
  654. ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE);
  655. GetDlgItem(IDC_EDT_IS_MODIFY)->GetWindowText(str);
  656. ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->SetCheck(!str.Compare("TRUE") || !str.Compare("1") ? TRUE : FALSE);
  657. CString strVarTypeID, strFuncID, strWarningLevel;
  658. CHAR szTypeName[MAX_DESC + 1] = {0};
  659. CHAR szFuncName[MAX_DESC + 1] = {0};
  660. GetDlgItem(IDC_EDT_VAR_TYPE_ID)->GetWindowText(strVarTypeID);
  661. GetDlgItem(IDC_EDT_FUNC_ID)->GetWindowText(strFuncID);
  662. GetDlgItem(IDC_EDT_ALARM_LEVEL)->GetWindowText(strWarningLevel);
  663. CDBInterface::GetInstancePtr()->GetVarTypeName( atoi(strVarTypeID), szTypeName );
  664. CDBInterface::GetInstancePtr()->GetFuncCodeName( atoi(strFuncID), szFuncName );
  665. GetDlgItem(IDC_COMBO_VAR_TYPE)->SetWindowText(szTypeName);
  666. GetDlgItem(IDC_COMBO_CODE_FUNC)->SetWindowText(szFuncName);
  667. GetDlgItem(IDC_COMBO_ALARM_LEVEL)->SetWindowText(strWarningLevel);
  668. InitRs232Combo();
  669. UpdateData(false);
  670. }
  671. void CAnalogPropertyDlg::ChangeCtrlInfo()
  672. {
  673. //UpdateData( true );
  674. if( ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->GetCheck() )
  675. {
  676. GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("0");
  677. }
  678. else if( ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->GetCheck() )
  679. {
  680. GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("1");
  681. }
  682. else if( ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->GetCheck() )
  683. {
  684. GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("2");
  685. }
  686. else
  687. {
  688. GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("0");
  689. }
  690. if( ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->GetCheck() )
  691. {
  692. GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("1");
  693. }
  694. else
  695. {
  696. GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("0");
  697. }
  698. if( ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->GetCheck() )
  699. {
  700. GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("1");
  701. }
  702. else
  703. {
  704. GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("0");
  705. }
  706. if( ((CButton *)GetDlgItem(IDC_CHK_SAVE_CURVE))->GetCheck() )
  707. {
  708. GetDlgItem(IDC_EDT_SAVE_CURVE)->SetWindowText("1");
  709. }
  710. else
  711. {
  712. GetDlgItem(IDC_EDT_SAVE_CURVE)->SetWindowText("0");
  713. }
  714. if( ((CButton *)GetDlgItem(IDC_CHK_IS_DDE))->GetCheck() )
  715. {
  716. GetDlgItem(IDC_EDT_IS_DDE)->SetWindowText("1");
  717. }
  718. else
  719. {
  720. GetDlgItem(IDC_EDT_IS_DDE)->SetWindowText("0");
  721. }
  722. if( ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->GetCheck() )
  723. {
  724. GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("1");
  725. }
  726. else
  727. {
  728. GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("0");
  729. }
  730. if( ((CButton *)GetDlgItem(IDC_CHK_SHOW_CURR_VALUE))->GetCheck() )
  731. {
  732. GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->SetWindowText("1");
  733. }
  734. else
  735. {
  736. GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->SetWindowText("0");
  737. }
  738. if( ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->GetCheck() )
  739. {
  740. GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("1");
  741. }
  742. else
  743. {
  744. GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("0");
  745. }
  746. if( ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->GetCheck() )
  747. {
  748. GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("1");
  749. }
  750. else
  751. {
  752. GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("0");
  753. }
  754. //UpdateData( false );
  755. }
  756. void CAnalogPropertyDlg::ChangeCtrlInfoForEditMore()
  757. {
  758. CString strVarTypeName, strFuncCode, strAlarmLevel;
  759. CHAR szVarTypeID[MAX_ID + 1] = {0};
  760. CHAR szFuncCodeID[MAX_ID + 1] = {0};
  761. CHAR szMaxID[MAX_ID + 1] = {0};
  762. CHAR strSQLText[MAX_SQL_LENGTH + 1] = {0};
  763. GetDlgItem(IDC_COMBO_VAR_TYPE)->GetWindowText(strVarTypeName);
  764. CDBInterface::GetInstancePtr()->GetVarTypeID((char *)(LPCTSTR)strVarTypeName, szVarTypeID);
  765. GetDlgItem(IDC_EDT_VAR_TYPE_ID)->SetWindowText(szVarTypeID);
  766. GetDlgItem(IDC_COMBO_CODE_FUNC)->GetWindowText(strFuncCode);
  767. CDBInterface::GetInstancePtr()->GetFuncCodeID((char *)(LPCTSTR)strFuncCode, szFuncCodeID );
  768. GetDlgItem(IDC_EDT_FUNC_ID)->SetWindowText(szFuncCodeID);
  769. GetDlgItem(IDC_COMBO_ALARM_LEVEL)->GetWindowText(strAlarmLevel);
  770. GetDlgItem(IDC_EDT_ALARM_LEVEL)->SetWindowText(strAlarmLevel);
  771. CString strCmd, strCmdType, strCmdIndex;
  772. int nCmdIndex = ((CComboBox *)GetDlgItem(IDC_COMBO_RS232_CMD))->GetCurSel();
  773. if( nCmdIndex != -1 )
  774. {
  775. strCmd.Format("cmd-%d", nCmdIndex + 1);
  776. GetDlgItem(IDC_EDT_RS232_CMD)->SetWindowText(strCmd);
  777. }
  778. int nCmdTypeIndex = ((CComboBox *)GetDlgItem(IDC_COMBO_RS232_TYPE))->GetCurSel();
  779. if( nCmdTypeIndex != -1 )
  780. {
  781. strCmdType.Format("type-%d", nCmdTypeIndex + 1);
  782. GetDlgItem(IDC_EDT_RS232_TYPE)->SetWindowText(strCmdType);
  783. }
  784. GetDlgItem(IDC_COMBO_RS232_INDEX)->GetWindowText(strCmdIndex);
  785. GetDlgItem(IDC_EDT_RS232_INDEX)->SetWindowText(strCmdIndex);
  786. if( ((CButton *)GetDlgItem(IDC_RADIO_READ_ONLY))->GetCheck() )
  787. {
  788. GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("0");
  789. }
  790. else if( ((CButton *)GetDlgItem(IDC_RADIO_WRITE))->GetCheck() )
  791. {
  792. GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("1");
  793. }
  794. else if( ((CButton *)GetDlgItem(IDC_RADIO_READ_WRITE))->GetCheck() )
  795. {
  796. GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("2");
  797. }
  798. else
  799. {
  800. GetDlgItem(IDC_EDT_READ_WRITE)->SetWindowText("0");
  801. }
  802. if( ((CButton *)GetDlgItem(IDC_CHK_SAVE_CURVE))->GetCheck() )
  803. {
  804. GetDlgItem(IDC_EDT_SAVE_CURVE)->SetWindowText("1");
  805. }
  806. else
  807. {
  808. GetDlgItem(IDC_EDT_SAVE_CURVE)->SetWindowText("0");
  809. }
  810. if( ((CButton *)GetDlgItem(IDC_CHK_IS_DDE))->GetCheck() )
  811. {
  812. GetDlgItem(IDC_EDT_IS_DDE)->SetWindowText("1");
  813. }
  814. else
  815. {
  816. GetDlgItem(IDC_EDT_IS_DDE)->SetWindowText("0");
  817. }
  818. int nIndex=0;
  819. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  820. SetDlgItemText( IDC_EDT_PARAM_INIT,m_sVarSave[nIndex] );//变量初始值
  821. nIndex++;
  822. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  823. SetDlgItemText( IDC_EDT_PARAM_MIN,m_sVarSave[nIndex] );//变量最小值
  824. nIndex++;
  825. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  826. SetDlgItemText( IDC_EDT_PARAM_MAX,m_sVarSave[nIndex] );//变量最大值
  827. nIndex++;
  828. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  829. SetDlgItemText( IDC_EDT_MAX_VALUES,m_sVarSave[nIndex] );//最大值
  830. nIndex++;
  831. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  832. SetDlgItemText( IDC_EDT_MIN_VALUES,m_sVarSave[nIndex] );//最小值
  833. nIndex++;
  834. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  835. SetDlgItemText( IDC_EDT_MAX_SCALE,m_sVarSave[nIndex] );//最大比例
  836. nIndex++;
  837. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  838. SetDlgItemText( IDC_EDT_MIN_SCALE,m_sVarSave[nIndex] );//最小比例
  839. nIndex++;
  840. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  841. SetDlgItemText( IDC_EDT_LOWER_LIMIT,m_sVarSave[nIndex] );//下限
  842. nIndex++;
  843. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  844. SetDlgItemText( IDC_EDT_UPPER_LIMIT,m_sVarSave[nIndex] );//上限
  845. nIndex++;
  846. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  847. SetDlgItemText( IDC_EDT_NORMAL_STATE,m_sVarSave[nIndex] );//正常状态
  848. nIndex++;
  849. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  850. SetDlgItemText( IDC_EDT_SET_VALUE,m_sVarSave[nIndex] );//设定值
  851. nIndex++;
  852. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  853. SetDlgItemText( IDC_EDT_REARM,m_sVarSave[nIndex] );//校正值
  854. nIndex++;
  855. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  856. SetDlgItemText( IDC_EDT_OFF_SET,m_sVarSave[nIndex] );//偏移量
  857. nIndex++;
  858. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  859. SetDlgItemText( IDC_EDT_UNIT,m_sVarSave[nIndex] );//单位
  860. nIndex++;
  861. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  862. SetDlgItemText( IDC_EDT_COLLECT_FREQ,m_sVarSave[nIndex] );//采集频率
  863. nIndex++;
  864. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  865. SetDlgItemText( IDC_EDT_COEF,m_sVarSave[nIndex] );//转换系数
  866. nIndex++;
  867. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  868. SetDlgItemText( IDC_EDT_ALARM_LEVEL,m_sVarSave[nIndex] );//报警级别
  869. else
  870. SetDlgItemText( IDC_EDT_ALARM_LEVEL,strAlarmLevel );
  871. nIndex++;
  872. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  873. SetDlgItemText( IDC_EDT_SAVE_DATA,m_sVarSave[nIndex] );//保存数值
  874. else
  875. {
  876. if( ((CButton *)GetDlgItem(IDC_CHK_SAVE_DATA))->GetCheck() )
  877. {
  878. GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("1");
  879. }
  880. else
  881. {
  882. GetDlgItem(IDC_EDT_SAVE_DATA)->SetWindowText("0");
  883. }
  884. }
  885. nIndex++;
  886. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  887. SetDlgItemText( IDC_EDT_COLLECT_THRAD_DATA,m_sVarSave[nIndex] );//是否实时采集数据
  888. else
  889. {
  890. if( ((CButton *)GetDlgItem(IDC_CHK_THREAD_COLLECT_DATA))->GetCheck() )
  891. {
  892. GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("1");
  893. }
  894. else
  895. {
  896. GetDlgItem(IDC_EDT_COLLECT_THRAD_DATA)->SetWindowText("0");
  897. }
  898. }
  899. nIndex++;
  900. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  901. SetDlgItemText( IDC_EDT_IS_MODIFY,m_sVarSave[nIndex] );//需要用户修改
  902. else
  903. {
  904. if( ((CButton *)GetDlgItem(IDC_CHK_IS_MODIFY))->GetCheck() )
  905. {
  906. GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("1");
  907. }
  908. else
  909. {
  910. GetDlgItem(IDC_EDT_IS_MODIFY)->SetWindowText("0");
  911. }
  912. }
  913. nIndex++;
  914. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  915. SetDlgItemText( IDC_EDT_SHOW_CURR_VALUE,m_sVarSave[nIndex] );//报警内容是否显示当前值
  916. else
  917. {
  918. if( ((CButton *)GetDlgItem(IDC_CHK_SHOW_CURR_VALUE))->GetCheck() )
  919. {
  920. GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->SetWindowText("1");
  921. }
  922. else
  923. {
  924. GetDlgItem(IDC_EDT_SHOW_CURR_VALUE)->SetWindowText("0");
  925. }
  926. }
  927. nIndex++;
  928. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  929. SetDlgItemText( IDC_EDT_IS_NOTICE,m_sVarSave[nIndex] );//是否触发远程报警
  930. else
  931. {
  932. if( ((CButton *)GetDlgItem(IDC_CHK_IS_NOTICE))->GetCheck() )
  933. {
  934. GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("1");
  935. }
  936. else
  937. {
  938. GetDlgItem(IDC_EDT_IS_NOTICE)->SetWindowText("0");
  939. }
  940. }
  941. nIndex++;
  942. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  943. SetDlgItemText( IDC_EDT_IDENTIFY_TIME,m_sVarSave[nIndex] );//辨识时间
  944. nIndex++;
  945. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  946. SetDlgItemText( IDC_EDT_REDETECT_TIME,m_sVarSave[nIndex] );//重新检测时间
  947. nIndex++;
  948. if( m_sVarSave[nIndex]!=m_sVarSaveOld[nIndex] )
  949. SetDlgItemText( IDC_EDT_NORMAL_IS_NOTICE,m_sVarSave[nIndex] );//状态恢复正常是否触发远程报警
  950. else
  951. {
  952. if( ((CButton *)GetDlgItem(IDC_CHK_NORMAL_IS_NOTICE))->GetCheck() )
  953. {
  954. GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("1");
  955. }
  956. else
  957. {
  958. GetDlgItem(IDC_EDT_NORMAL_IS_NOTICE)->SetWindowText("0");
  959. }
  960. }
  961. }
  962. void CAnalogPropertyDlg::InsertToVariantManager()
  963. {
  964. int iIndex = 0;
  965. CAnalog *pAnalog = new CAnalog();
  966. CString str = m_DDXFields.GetAt(iIndex++).m_value;
  967. int nTemp = -1;
  968. // 变量ID
  969. pAnalog->m_nVarID = atoi(str);
  970. // 是否需要用户设置
  971. if( atoi(m_DDXFields.GetAt(iIndex).m_value) == 1 )
  972. {
  973. pAnalog->m_bReserved3 = TRUE;
  974. }
  975. else if( atoi(m_DDXFields.GetAt(iIndex).m_value) == 0 )
  976. {
  977. pAnalog->m_bReserved3 = FALSE;
  978. }
  979. iIndex++;
  980. // 变量UID
  981. pAnalog->m_strVarUID = m_DDXFields.GetAt(iIndex++).m_value;
  982. // 变量名称
  983. pAnalog->m_strName = m_DDXFields.GetAt(iIndex++).m_value;
  984. // 变量描述
  985. pAnalog->m_strDesc = m_DDXFields.GetAt(iIndex++).m_value;
  986. // 变量类型ID
  987. str = m_DDXFields.GetAt(iIndex++).m_value;
  988. pAnalog->m_nVarTypeID = atoi(str);
  989. // 变量数据长度
  990. str = m_DDXFields.GetAt(iIndex++).m_value;
  991. pAnalog->m_nDataLen = atoi(str);
  992. // 开的描述
  993. pAnalog->m_strOnDesc = m_DDXFields.GetAt(iIndex++).m_value;
  994. // 关的描述
  995. pAnalog->m_strOffDesc = m_DDXFields.GetAt(iIndex++).m_value;
  996. // 最大值
  997. pAnalog->m_nMaxValues = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  998. // 最小值
  999. pAnalog->m_nMinValues = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1000. // 最大转换比率
  1001. pAnalog->m_nMaxConvtRate = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1002. // 最小转换比率
  1003. pAnalog->m_nMinConvtRate = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1004. // 下限
  1005. pAnalog->m_nLowerLimit = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1006. // 上限
  1007. pAnalog->m_nUpperLimit = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1008. // 正常状态
  1009. pAnalog->m_nNormalState = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1010. // 设定值
  1011. pAnalog->m_strSetValue = m_DDXFields.GetAt(iIndex++).m_value;
  1012. // 校正值
  1013. pAnalog->m_nRearm = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1014. // 偏移量
  1015. pAnalog->m_nOffset = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1016. // 单位
  1017. pAnalog->m_strUnit = m_DDXFields.GetAt(iIndex++).m_value;
  1018. // 采集频率
  1019. pAnalog->m_nCollectFreq = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1020. // 转换系数
  1021. pAnalog->m_fCoef = (float)atof(m_DDXFields.GetAt(iIndex++).m_value);
  1022. // 告警级别
  1023. pAnalog->m_nWaringLevel = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1024. // 读写权限
  1025. pAnalog->m_nPurview = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1026. // 是否保存数值
  1027. pAnalog->m_bIsSave = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1028. // 是否实时采集数据
  1029. pAnalog->m_bRealtimeFlag = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1030. // 是否记录实时曲线
  1031. pAnalog->m_bRecCurve = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1032. // 是否允许DDE访问
  1033. pAnalog->m_bIsDDE = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1034. // 请求寄存器个数
  1035. pAnalog->m_nRegNum = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1036. // 功能码id
  1037. pAnalog->m_nFuncCode = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1038. // 寄存器子id
  1039. pAnalog->m_nVarChildID = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1040. // 位信息id
  1041. pAnalog->m_nVarItemID = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1042. // SNMP对象oid
  1043. pAnalog->m_strSnmpOid = m_DDXFields.GetAt(iIndex++).m_value;
  1044. // SNMP域
  1045. pAnalog->m_strFields = m_DDXFields.GetAt(iIndex++).m_value;
  1046. // 设备类型ID
  1047. pAnalog->m_nDevID = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1048. // 起始地址
  1049. pAnalog->m_nRegStartAddr = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1050. // Rs232请求命令
  1051. pAnalog->m_strRs232Cmd = m_DDXFields.GetAt(iIndex++).m_value;
  1052. // Rs232请求类型
  1053. pAnalog->m_strRs232Type = m_DDXFields.GetAt(iIndex++).m_value;
  1054. // Rs232数据索引
  1055. pAnalog->m_nRs232Index = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1056. // 辨別時間
  1057. pAnalog->m_nIdentifyTime = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1058. // 重新檢測時間
  1059. pAnalog->m_nRedetectTime = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1060. // 起始BIT位
  1061. if( m_nStartBit >= 0 && m_nStartBit <= 64 )
  1062. {
  1063. pAnalog->m_nStartBit = m_nStartBit;
  1064. }
  1065. // 终止BIT位
  1066. if( m_nEndBit >= 0 && m_nEndBit <= 64 )
  1067. {
  1068. pAnalog->m_nEndBit = m_nEndBit;
  1069. }
  1070. pAnalog->m_strReserved1 = m_DDXFields.GetAt(43).m_value;;
  1071. //pAnalog->m_strReserved1 = "";
  1072. pAnalog->m_strReserved2 = "";
  1073. pAnalog->m_strReserved3 = "";
  1074. pAnalog->m_strReserved4 = "";
  1075. pAnalog->m_strReserved5 = "";
  1076. pAnalog->m_strReserved6 = "";
  1077. pAnalog->m_strReserved7 = "";
  1078. pAnalog->m_strReserved8 = "";
  1079. pAnalog->m_strReserved9 = "";
  1080. pAnalog->m_strReserved10 = "";
  1081. iIndex=45;
  1082. pAnalog->m_nReserved1 = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1083. pAnalog->m_nReserved2 = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1084. pAnalog->m_nReserved3 = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1085. pAnalog->m_nReserved4 = 0;
  1086. pAnalog->m_nReserved5 = 0;
  1087. pAnalog->m_nReserved6 = 0;
  1088. pAnalog->m_nReserved7 = 0;
  1089. pAnalog->m_nReserved8 = 0;
  1090. pAnalog->m_nReserved9 = 0;
  1091. pAnalog->m_nReserved10 = 0;
  1092. //pAnalog->m_bReserved1 = FALSE;
  1093. if( atoi(m_DDXFields.GetAt(42).m_value) == 1 )
  1094. {
  1095. pAnalog->m_bReserved1 = TRUE;
  1096. }
  1097. else if( atoi(m_DDXFields.GetAt(42).m_value) == 0 )
  1098. {
  1099. pAnalog->m_bReserved1 = FALSE;
  1100. }
  1101. if( atoi(m_DDXFields.GetAt(44).m_value) == 1 )
  1102. {
  1103. pAnalog->m_bReserved2 = TRUE;
  1104. }
  1105. else if( atoi(m_DDXFields.GetAt(44).m_value) == 0 )
  1106. {
  1107. pAnalog->m_bReserved2 = FALSE;
  1108. }
  1109. //pAnalog->m_bReserved1 = FALSE;
  1110. //pAnalog->m_bReserved2 = FALSE;
  1111. //pAnalog->m_bReserved3 = FALSE;
  1112. pAnalog->m_bReserved4 = FALSE;
  1113. pAnalog->m_bReserved5 = FALSE;
  1114. pAnalog->m_bReserved6 = FALSE;
  1115. pAnalog->m_bReserved7 = FALSE;
  1116. pAnalog->m_bReserved8 = FALSE;
  1117. pAnalog->m_bReserved9 = FALSE;
  1118. pAnalog->m_bReserved10 = FALSE;
  1119. pAnalog->m_pDevice = NULL;
  1120. pAnalog->m_fData = 0.0;
  1121. pVariantsManager->m_analog.Add(pAnalog);
  1122. }
  1123. void CAnalogPropertyDlg::EditVariant(int nVarID)
  1124. {
  1125. int iIndex = 1;
  1126. CString str;
  1127. CAnalog *pAnalog = pVariantsManager->FindAnalog(nVarID);
  1128. if( atoi(m_DDXFields.GetAt(iIndex).m_value) == 1 )
  1129. {
  1130. pAnalog->m_bReserved3 = true;
  1131. }
  1132. else if( atoi(m_DDXFields.GetAt(iIndex).m_value) == 0 )
  1133. {
  1134. pAnalog->m_bReserved3 = false;
  1135. }
  1136. iIndex++;
  1137. // 变量UID
  1138. pAnalog->m_strVarUID = m_DDXFields.GetAt(iIndex++).m_value;
  1139. // 变量名称
  1140. pAnalog->m_strName = m_DDXFields.GetAt(iIndex++).m_value;
  1141. // 变量描述
  1142. pAnalog->m_strDesc = m_DDXFields.GetAt(iIndex++).m_value;
  1143. // 变量类型ID
  1144. str = m_DDXFields.GetAt(iIndex++).m_value;
  1145. pAnalog->m_nVarTypeID = atoi(str);
  1146. // 变量数据长度
  1147. str = m_DDXFields.GetAt(iIndex++).m_value;
  1148. pAnalog->m_nDataLen = atoi(str);
  1149. // 开的描述
  1150. pAnalog->m_strOnDesc = m_DDXFields.GetAt(iIndex++).m_value;
  1151. // 关的描述
  1152. pAnalog->m_strOffDesc = m_DDXFields.GetAt(iIndex++).m_value;
  1153. // 最大值
  1154. pAnalog->m_nMaxValues = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1155. // 最小值
  1156. pAnalog->m_nMinValues = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1157. // 最大转换比率
  1158. pAnalog->m_nMaxConvtRate = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1159. // 最小转换比率
  1160. pAnalog->m_nMinConvtRate = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1161. // 下限
  1162. pAnalog->m_nLowerLimit = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1163. // 上限
  1164. pAnalog->m_nUpperLimit = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1165. // 正常状态
  1166. pAnalog->m_nNormalState = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1167. // 设定值
  1168. pAnalog->m_strSetValue = m_DDXFields.GetAt(iIndex++).m_value;
  1169. // 校正值
  1170. pAnalog->m_nRearm = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1171. // 偏移量
  1172. pAnalog->m_nOffset = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1173. // 单位
  1174. pAnalog->m_strUnit = m_DDXFields.GetAt(iIndex++).m_value;
  1175. // 采集频率
  1176. pAnalog->m_nCollectFreq = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1177. // 转换系数
  1178. pAnalog->m_fCoef = (float)atof(m_DDXFields.GetAt(iIndex++).m_value);
  1179. // 告警级别
  1180. pAnalog->m_nWaringLevel = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1181. // 读写权限
  1182. pAnalog->m_nPurview = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1183. // 是否保存数值
  1184. pAnalog->m_bIsSave = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1185. // 是否实时采集数据
  1186. pAnalog->m_bRealtimeFlag = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1187. // 是否记录实时曲线
  1188. pAnalog->m_bRecCurve = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1189. // 是否允许DDE访问
  1190. pAnalog->m_bIsDDE = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1191. // 请求寄存器个数
  1192. pAnalog->m_nRegNum = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1193. // 功能码id
  1194. pAnalog->m_nFuncCode = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1195. // 寄存器子id
  1196. pAnalog->m_nVarChildID = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1197. // 位信息id
  1198. pAnalog->m_nVarItemID = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1199. // SNMP对象oid
  1200. pAnalog->m_strSnmpOid = m_DDXFields.GetAt(iIndex++).m_value;
  1201. // SNMP域
  1202. pAnalog->m_strFields = m_DDXFields.GetAt(iIndex++).m_value;
  1203. // 设备类型ID
  1204. pAnalog->m_nDevID = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1205. // 起始地址
  1206. pAnalog->m_nRegStartAddr = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1207. // Rs232请求命令
  1208. pAnalog->m_strRs232Cmd = m_DDXFields.GetAt(iIndex++).m_value;
  1209. // Rs232请求类型
  1210. pAnalog->m_strRs232Type = m_DDXFields.GetAt(iIndex++).m_value;
  1211. // Rs232数据索引
  1212. pAnalog->m_nRs232Index = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1213. // 辨別時間
  1214. pAnalog->m_nIdentifyTime = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1215. // 重新檢測時間
  1216. pAnalog->m_nRedetectTime = atoi(m_DDXFields.GetAt(iIndex++).m_value);
  1217. // 起始BIT位
  1218. if( m_nStartBit >= 0 && m_nStartBit <= 64 )
  1219. {
  1220. pAnalog->m_nStartBit = m_nStartBit;
  1221. }
  1222. // 终止BIT位
  1223. if( m_nEndBit >= 0 && m_nEndBit <= 64 )
  1224. {
  1225. pAnalog->m_nEndBit = m_nEndBit;
  1226. }
  1227. pAnalog->m_strReserved1 = m_DDXFields.GetAt(43).m_value;
  1228. pAnalog->m_strReserved2 = "";
  1229. pAnalog->m_strReserved3 = "";
  1230. pAnalog->m_strReserved4 = "";
  1231. pAnalog->m_strReserved5 = "";
  1232. pAnalog->m_strReserved6 = "";
  1233. pAnalog->m_strReserved7 = "";
  1234. pAnalog->m_strReserved8 = "";
  1235. pAnalog->m_strReserved9 = "";
  1236. pAnalog->m_strReserved10 = "";
  1237. pAnalog->m_nReserved1 = atoi(m_DDXFields.GetAt(45).m_value);
  1238. pAnalog->m_nReserved2 = atoi(m_DDXFields.GetAt(46).m_value);
  1239. pAnalog->m_nReserved3 = atoi(m_DDXFields.GetAt(47).m_value);
  1240. pAnalog->m_nReserved4 = 0;
  1241. pAnalog->m_nReserved5 = 0;
  1242. pAnalog->m_nReserved6 = 0;
  1243. pAnalog->m_nReserved7 = 0;
  1244. pAnalog->m_nReserved8 = 0;
  1245. pAnalog->m_nReserved9 = 0;
  1246. pAnalog->m_nReserved10 = 0;
  1247. if( atoi(m_DDXFields.GetAt(42).m_value) == 1 )
  1248. {
  1249. pAnalog->m_bReserved1 = true;
  1250. }
  1251. else if( atoi(m_DDXFields.GetAt(42).m_value) == 0 )
  1252. {
  1253. pAnalog->m_bReserved1 = false;
  1254. }
  1255. if( atoi(m_DDXFields.GetAt(44).m_value) == 1 )
  1256. {
  1257. pAnalog->m_bReserved2 = true;
  1258. }
  1259. else if( atoi(m_DDXFields.GetAt(44).m_value) == 0 )
  1260. {
  1261. pAnalog->m_bReserved2 = false;
  1262. }
  1263. //pAnalog->m_bReserved2 = FALSE;
  1264. //pAnalog->m_bReserved3 = FALSE;
  1265. pAnalog->m_bReserved4 = FALSE;
  1266. pAnalog->m_bReserved5 = FALSE;
  1267. pAnalog->m_bReserved6 = FALSE;
  1268. pAnalog->m_bReserved7 = FALSE;
  1269. pAnalog->m_bReserved8 = FALSE;
  1270. pAnalog->m_bReserved9 = FALSE;
  1271. pAnalog->m_bReserved10 = FALSE;
  1272. pAnalog->m_pDevice = NULL;
  1273. int i, nChannelSize = pDevicesManager->m_channels.GetSize();
  1274. int j, nDevicesSize;
  1275. for( i = 0; i < nChannelSize; i++ )
  1276. {
  1277. nDevicesSize = pDevicesManager->m_channels[i]->m_Devices.GetSize();
  1278. for( j = 0; j < nDevicesSize; j++ )
  1279. {
  1280. if( !pDevicesManager->m_channels[i]->m_Devices[j]->m_strUID.Compare(pAnalog->m_strVarUID) )
  1281. {
  1282. pAnalog->m_pDevice = pDevicesManager->m_channels[i]->m_Devices[j];
  1283. }
  1284. }
  1285. }
  1286. }
  1287. void CAnalogPropertyDlg::OnBnClickedBtnCancel()
  1288. {
  1289. // TODO: 在此添加控件通知处理程序代码
  1290. OnCancel();
  1291. }
  1292. int CAnalogPropertyDlg::CheckDataValid()
  1293. {
  1294. CHAR szVarID[MAX_ID + 1] = {0};
  1295. CExString strVarName;
  1296. strVarName = m_DDXFields.GetAt(3).m_value;
  1297. CString strUID = m_DDXFields.GetAt(2).m_value;
  1298. if( !strUID.Compare("") ) return 1;
  1299. int nRet = CDBInterface::GetInstancePtr()->GetVarID( (char *)(LPCTSTR)strVarName, szVarID );
  1300. m_sParamName = strVarName;
  1301. m_sUid = strUID;
  1302. if( nRet > 0 )
  1303. {
  1304. return 2;
  1305. }
  1306. return nRet;
  1307. }
  1308. void CAnalogPropertyDlg::GetVarForEditMore()
  1309. {
  1310. //UpdateData();
  1311. CString str;
  1312. GetDlgItemText( IDC_EDT_PARAM_INIT,str );//变量初始值
  1313. m_sVarSave[m_nVarSaveNum++] = str;
  1314. GetDlgItemText( IDC_EDT_PARAM_MIN,str );//变量最小值
  1315. m_sVarSave[m_nVarSaveNum++] = str;
  1316. GetDlgItemText( IDC_EDT_PARAM_MAX,str );//变量最大值
  1317. m_sVarSave[m_nVarSaveNum++] = str;
  1318. GetDlgItemText( IDC_EDT_MAX_VALUES,str );//最大值
  1319. m_sVarSave[m_nVarSaveNum++] = str;
  1320. GetDlgItemText( IDC_EDT_MIN_VALUES,str );//最小值
  1321. m_sVarSave[m_nVarSaveNum++] = str;
  1322. GetDlgItemText( IDC_EDT_MAX_SCALE,str );//最大比例
  1323. m_sVarSave[m_nVarSaveNum++] = str;
  1324. GetDlgItemText( IDC_EDT_MIN_SCALE,str );//最小比例
  1325. m_sVarSave[m_nVarSaveNum++] = str;
  1326. GetDlgItemText( IDC_EDT_LOWER_LIMIT,str );//下限
  1327. m_sVarSave[m_nVarSaveNum++] = str;
  1328. GetDlgItemText( IDC_EDT_UPPER_LIMIT,str );//上限
  1329. m_sVarSave[m_nVarSaveNum++] = str;
  1330. GetDlgItemText( IDC_EDT_NORMAL_STATE,str );//正常状态
  1331. m_sVarSave[m_nVarSaveNum++] = str;
  1332. GetDlgItemText( IDC_EDT_SET_VALUE,str );//设定值
  1333. m_sVarSave[m_nVarSaveNum++] = str;
  1334. GetDlgItemText( IDC_EDT_REARM,str );//校正值
  1335. m_sVarSave[m_nVarSaveNum++] = str;
  1336. GetDlgItemText( IDC_EDT_OFF_SET,str );//偏移量
  1337. m_sVarSave[m_nVarSaveNum++] = str;
  1338. GetDlgItemText( IDC_EDT_UNIT,str );//单位
  1339. m_sVarSave[m_nVarSaveNum++] = str;
  1340. GetDlgItemText( IDC_EDT_COLLECT_FREQ,str );//采集频率
  1341. m_sVarSave[m_nVarSaveNum++] = str;
  1342. GetDlgItemText( IDC_EDT_COEF,str );//转换系数
  1343. m_sVarSave[m_nVarSaveNum++] = str;
  1344. GetDlgItemText( IDC_EDT_ALARM_LEVEL,str );//报警级别
  1345. m_sVarSave[m_nVarSaveNum++] = str;
  1346. GetDlgItemText( IDC_EDT_SAVE_DATA,str );//保存数值
  1347. m_sVarSave[m_nVarSaveNum++] = str;
  1348. GetDlgItemText( IDC_EDT_COLLECT_THRAD_DATA,str );//是否实时采集数据
  1349. m_sVarSave[m_nVarSaveNum++] = str;
  1350. GetDlgItemText( IDC_EDT_IS_MODIFY,str );//需要用户修改
  1351. m_sVarSave[m_nVarSaveNum++] = str;
  1352. GetDlgItemText( IDC_EDT_SHOW_CURR_VALUE,str );//报警内容是否显示当前值
  1353. m_sVarSave[m_nVarSaveNum++] = str;
  1354. GetDlgItemText( IDC_EDT_IS_NOTICE,str );//是否触发远程报警
  1355. m_sVarSave[m_nVarSaveNum++] = str;
  1356. GetDlgItemText( IDC_EDT_IDENTIFY_TIME,str );//辨识时间
  1357. m_sVarSave[m_nVarSaveNum++] = str;
  1358. GetDlgItemText( IDC_EDT_REDETECT_TIME,str );//重新检测时间
  1359. m_sVarSave[m_nVarSaveNum++] = str;
  1360. GetDlgItemText( IDC_EDT_NORMAL_IS_NOTICE,str );//状态恢复正常是否触发远程报警
  1361. m_sVarSave[m_nVarSaveNum++] = str;
  1362. //UpdateData(false);
  1363. }
  1364. void CAnalogPropertyDlg::GetVarForEditMoreOld()
  1365. {
  1366. //UpdateData();
  1367. CString str;
  1368. GetDlgItemText( IDC_EDT_PARAM_INIT,str );//变量初始值
  1369. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1370. GetDlgItemText( IDC_EDT_PARAM_MIN,str );//变量最小值
  1371. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1372. GetDlgItemText( IDC_EDT_PARAM_MAX,str );//变量最大值
  1373. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1374. GetDlgItemText( IDC_EDT_MAX_VALUES,str );//最大值
  1375. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1376. GetDlgItemText( IDC_EDT_MIN_VALUES,str );//最小值
  1377. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1378. GetDlgItemText( IDC_EDT_MAX_SCALE,str );//最大比例
  1379. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1380. GetDlgItemText( IDC_EDT_MIN_SCALE,str );//最小比例
  1381. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1382. GetDlgItemText( IDC_EDT_LOWER_LIMIT,str );//下限
  1383. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1384. GetDlgItemText( IDC_EDT_UPPER_LIMIT,str );//上限
  1385. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1386. GetDlgItemText( IDC_EDT_NORMAL_STATE,str );//正常状态
  1387. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1388. GetDlgItemText( IDC_EDT_SET_VALUE,str );//设定值
  1389. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1390. GetDlgItemText( IDC_EDT_REARM,str );//校正值
  1391. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1392. GetDlgItemText( IDC_EDT_OFF_SET,str );//偏移量
  1393. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1394. GetDlgItemText( IDC_EDT_UNIT,str );//单位
  1395. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1396. GetDlgItemText( IDC_EDT_COLLECT_FREQ,str );//采集频率
  1397. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1398. GetDlgItemText( IDC_EDT_COEF,str );//转换系数
  1399. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1400. GetDlgItemText( IDC_EDT_ALARM_LEVEL,str );//报警级别
  1401. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1402. GetDlgItemText( IDC_EDT_SAVE_DATA,str );//保存数值
  1403. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1404. GetDlgItemText( IDC_EDT_COLLECT_THRAD_DATA,str );//是否实时采集数据
  1405. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1406. GetDlgItemText( IDC_EDT_IS_MODIFY,str );//需要用户修改
  1407. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1408. GetDlgItemText( IDC_EDT_SHOW_CURR_VALUE,str );//报警内容是否显示当前值
  1409. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1410. GetDlgItemText( IDC_EDT_IS_NOTICE,str );//是否触发远程报警
  1411. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1412. GetDlgItemText( IDC_EDT_IDENTIFY_TIME,str );//辨识时间
  1413. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1414. GetDlgItemText( IDC_EDT_REDETECT_TIME,str );//重新检测时间
  1415. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1416. GetDlgItemText( IDC_EDT_NORMAL_IS_NOTICE,str );//状态恢复正常是否触发远程报警
  1417. m_sVarSaveOld[m_nVarSaveNumOld++] = str;
  1418. //UpdateData(false);
  1419. }
  1420. void CAnalogPropertyDlg::OnBnClickedBtnSave()
  1421. {
  1422. // TODO: 在此添加控件通知处理程序代码
  1423. // 存盘操作
  1424. //UpdateData( );
  1425. CExString strField;
  1426. CString strVarTypeName, strFuncCode, strAlarmLevel;
  1427. CHAR szVarTypeID[MAX_ID + 1] = {0};
  1428. CHAR szFuncCodeID[MAX_ID + 1] = {0};
  1429. CHAR szMaxID[MAX_ID + 1] = {0};
  1430. CHAR strSQLText[MAX_SQL_LENGTH + 1] = {0};
  1431. GetDlgItem(IDC_COMBO_VAR_TYPE)->GetWindowText(strVarTypeName);
  1432. CDBInterface::GetInstancePtr()->GetVarTypeID((char *)(LPCTSTR)strVarTypeName, szVarTypeID);
  1433. GetDlgItem(IDC_EDT_VAR_TYPE_ID)->SetWindowText(szVarTypeID);
  1434. GetDlgItem(IDC_COMBO_CODE_FUNC)->GetWindowText(strFuncCode);
  1435. CDBInterface::GetInstancePtr()->GetFuncCodeID((char *)(LPCTSTR)strFuncCode, szFuncCodeID );
  1436. GetDlgItem(IDC_EDT_FUNC_ID)->SetWindowText(szFuncCodeID);
  1437. GetDlgItem(IDC_COMBO_ALARM_LEVEL)->GetWindowText(strAlarmLevel);
  1438. GetDlgItem(IDC_EDT_ALARM_LEVEL)->SetWindowText(strAlarmLevel);
  1439. CString strCmd, strCmdType, strCmdIndex;
  1440. int nCmdIndex = ((CComboBox *)GetDlgItem(IDC_COMBO_RS232_CMD))->GetCurSel();
  1441. if( nCmdIndex != -1 )
  1442. {
  1443. strCmd.Format("cmd-%d", nCmdIndex + 1);
  1444. GetDlgItem(IDC_EDT_RS232_CMD)->SetWindowText(strCmd);
  1445. }
  1446. int nCmdTypeIndex = ((CComboBox *)GetDlgItem(IDC_COMBO_RS232_TYPE))->GetCurSel();
  1447. if( nCmdTypeIndex != -1 )
  1448. {
  1449. strCmdType.Format("type-%d", nCmdTypeIndex + 1);
  1450. GetDlgItem(IDC_EDT_RS232_TYPE)->SetWindowText(strCmdType);
  1451. }
  1452. GetDlgItem(IDC_COMBO_RS232_INDEX)->GetWindowText(strCmdIndex);
  1453. GetDlgItem(IDC_EDT_RS232_INDEX)->SetWindowText(strCmdIndex);
  1454. CString strVarName;
  1455. GetDlgItem(IDC_EDT_VAR_NAME)->GetWindowText(strVarName);
  1456. if( strVarName.Compare("")==0 )
  1457. {
  1458. MessageBox(g_strVarNameIsBlank, g_strTip, MB_ICONWARNING);
  1459. return;
  1460. }
  1461. //先把下拉框,多选按钮,单选按钮的值赋给文本
  1462. ChangeCtrlInfo();
  1463. //編輯多個
  1464. int nListCount = m_nArrayListID.GetCount();
  1465. if( nListCount>1 )
  1466. {
  1467. //保存可以多个变量的值
  1468. GetVarForEditMore();
  1469. //
  1470. EditMoreVar();
  1471. return;
  1472. }
  1473. CDBInterface::GetInstancePtr()->GetMaxID("t_dev_variant", "id", szMaxID);
  1474. int nID;
  1475. CString strVarID;
  1476. try
  1477. {
  1478. switch (m_operation)
  1479. {
  1480. case EDIT:
  1481. GetDlgItem(IDC_EDT_VAR_ID)->GetWindowText(strVarID);
  1482. m_nVarID = atoi(strVarID);
  1483. break;
  1484. default:
  1485. if( atoi(szMaxID) > 0 )
  1486. {
  1487. nID = atoi(szMaxID) + 1;
  1488. m_nVarID = nID;
  1489. }
  1490. else if( atoi(szMaxID) == 0 )
  1491. {
  1492. nID = 1;
  1493. m_nVarID = nID;
  1494. }
  1495. strVarID.Format("%d", nID);
  1496. GetDlgItem(IDC_EDT_VAR_ID)->SetWindowText(strVarID);
  1497. //m_pSet->AddNew();
  1498. break;
  1499. }
  1500. UpdateData(TRUE);
  1501. try
  1502. {
  1503. // 校验数据的正确性
  1504. int nRet = CheckDataValid();
  1505. if( nRet == 1 && ( m_operation == NEW || m_operation == COPY ) )
  1506. {
  1507. MessageBox(g_strVarUidIsBlank, g_strTip, MB_ICONWARNING);
  1508. //CDialog::OnOK();
  1509. return;
  1510. }
  1511. else if( nRet == 2 && ( m_operation == NEW || m_operation == COPY ) )
  1512. {
  1513. MessageBox(g_strVarNameExist, g_strTip, MB_ICONWARNING);
  1514. //CDialog::OnOK();
  1515. return;
  1516. }
  1517. if (!_stricmp(g_strDBType, "SQL SERVER"))
  1518. {
  1519. sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \
  1520. "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \
  1521. "lowerlimit, upperlimit, normalstate, setvalue, rearm, [offsets], unit, collectfrequence, " \
  1522. "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \
  1523. "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \
  1524. "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3) values(");
  1525. }
  1526. else if(!_stricmp(g_strDBType, "PGSQL"))
  1527. {
  1528. sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \
  1529. "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \
  1530. "lowerlimit, upperlimit, normalstate, setvalue, rearm, offsets, unit, collectfrequence, " \
  1531. "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \
  1532. "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \
  1533. "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3) values(");
  1534. }
  1535. if( m_DDXFields.WriteData("t_dev_variant", strSQLText, m_operation) != -1 )
  1536. {
  1537. // 添加到变量管理类里面
  1538. if( m_operation==NEW || m_operation==COPY )
  1539. {
  1540. InsertToVariantManager();
  1541. }
  1542. else if( m_operation==EDIT )
  1543. {
  1544. EditVariant(atoi(m_DDXFields.GetAt(0).m_value));
  1545. }
  1546. }
  1547. }
  1548. catch(...)
  1549. {
  1550. ;
  1551. }
  1552. UpdateData(FALSE);
  1553. /************************************************************************/
  1554. /* 在此实现OK按钮; */
  1555. /************************************************************************/
  1556. CDialog::OnOK();
  1557. }//try
  1558. catch( _com_error &e )
  1559. {
  1560. CString mes1,mes2,mes3,mes4;
  1561. mes1.Format(_T("Error:%08lx.\n"), e.Error());
  1562. mes2.Format(_T("ErrorMessage:%s.\n"), e.ErrorMessage());
  1563. mes3.Format(_T("Source:%s.\n"), (LPCTSTR) _bstr_t(e.Source()));
  1564. mes4.Format(_T("Description:%s.\n"), (LPCTSTR) _bstr_t(e.Description()));
  1565. MessageBox(mes1+mes2+mes3+mes4,_T("Invalid field "),MB_ICONERROR);
  1566. return;
  1567. }
  1568. catch(...)
  1569. {
  1570. MessageBox(_T("Unhandled Exception"),_T("Invalid field ")+strField,MB_ICONERROR);
  1571. return;
  1572. }
  1573. }
  1574. void CAnalogPropertyDlg::EditMoreVar()
  1575. {
  1576. bool bExit = false;
  1577. int nNowRow = 0;
  1578. int nListCount = m_nArrayListID.GetCount();
  1579. for( int i=0;i<nListCount;i++ )
  1580. {
  1581. nNowRow = m_nArrayListID[i];
  1582. if( nNowRow<m_nPrevRow )
  1583. {
  1584. for( int m=0;m<m_nPrevRow-nNowRow;m++ )
  1585. m_pSet->MovePrevious();
  1586. m_nPrevRow = nNowRow;
  1587. }
  1588. else
  1589. {
  1590. for( int m=0;m<nNowRow-m_nPrevRow;m++ )
  1591. m_pSet->MoveNext();
  1592. m_nPrevRow = nNowRow;
  1593. }
  1594. m_DDXFields.ReadData(m_pSet);
  1595. UpdateData(FALSE);
  1596. //先把下拉框,多选按钮,单选按钮的值赋给文本
  1597. InitCtrlInfoForEditMore();
  1598. CExString strField;
  1599. CHAR strSQLText[MAX_SQL_LENGTH + 1] = {0};
  1600. ChangeCtrlInfoForEditMore();
  1601. CString sTemp;
  1602. GetDlgItemText( IDC_EDT_PARAM_INIT,sTemp );
  1603. CString strVarID;
  1604. try
  1605. {
  1606. GetDlgItem(IDC_EDT_VAR_ID)->GetWindowText(strVarID);
  1607. m_nVarID = atoi(strVarID);
  1608. UpdateData(TRUE);
  1609. try
  1610. {
  1611. // 校验数据的正确性
  1612. int nRet = CheckDataValid();
  1613. if( nRet == 1 && m_operation == NEW )
  1614. {
  1615. return;
  1616. }
  1617. else if( nRet == 2 && m_operation == NEW )
  1618. {
  1619. return;
  1620. }
  1621. if (!_stricmp(g_strDBType, "SQL SERVER"))
  1622. {
  1623. sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \
  1624. "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \
  1625. "lowerlimit, upperlimit, normalstate, setvalue, rearm, [offsets], unit, collectfrequence, " \
  1626. "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \
  1627. "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \
  1628. "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3) values(");
  1629. }
  1630. else if(!_stricmp(g_strDBType, "PGSQL"))
  1631. {
  1632. sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \
  1633. "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \
  1634. "lowerlimit, upperlimit, normalstate, setvalue, rearm, offsets, unit, collectfrequence, " \
  1635. "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \
  1636. "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \
  1637. "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3) values(");
  1638. }
  1639. //sprintf(strSQLText, "insert into t_dev_variant(id, boolreserved3, uid, varname, description, vartypeid, " \
  1640. // "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \
  1641. // "lowerlimit, upperlimit, normalstate, setvalue, rearm, [offsets], unit, collectfrequence, " \
  1642. // "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \
  1643. // "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \
  1644. // "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, boolreserved1, strreserved1, boolreserved2,intreserved1,intreserved2,intreserved3) values(");
  1645. if( m_DDXFields.WriteData("t_dev_variant", strSQLText, m_operation) != -1 )
  1646. {
  1647. CString sTemp;
  1648. GetDlgItemText( IDC_EDT_PARAM_INIT,sTemp );
  1649. // 添加到变量管理类里面
  1650. if( m_operation == NEW || m_operation == COPY )
  1651. {
  1652. InsertToVariantManager();
  1653. }
  1654. else if( m_operation == EDIT || m_operation==EDITMORE )
  1655. {
  1656. EditVariant(atoi(m_DDXFields.GetAt(0).m_value));
  1657. }
  1658. }
  1659. }
  1660. catch(...)
  1661. {
  1662. ;
  1663. }
  1664. UpdateData(FALSE);
  1665. CString sContent;
  1666. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,m_sParamName.TrimRight() );
  1667. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_EDIT,0,"",(char *)(LPCTSTR)sContent );
  1668. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",m_sUid,m_nVarID,"64320" );
  1669. if( !bExit )
  1670. CDialog::OnOK();
  1671. bExit = true;
  1672. }//try
  1673. catch( _com_error &e )
  1674. {
  1675. CString mes1,mes2,mes3,mes4;
  1676. mes1.Format(_T("Error:%08lx.\n"), e.Error());
  1677. mes2.Format(_T("ErrorMessage:%s.\n"), e.ErrorMessage());
  1678. mes3.Format(_T("Source:%s.\n"), (LPCTSTR) _bstr_t(e.Source()));
  1679. mes4.Format(_T("Description:%s.\n"), (LPCTSTR) _bstr_t(e.Description()));
  1680. MessageBox(mes1+mes2+mes3+mes4,_T("Invalid field "),MB_ICONERROR);
  1681. return;
  1682. }
  1683. catch(...)
  1684. {
  1685. MessageBox(_T("Unhandled Exception"),_T("Invalid field ")+strField,MB_ICONERROR);
  1686. return;
  1687. }
  1688. }
  1689. }
  1690. void CAnalogPropertyDlg::OnBnClickedBtnSelDev()
  1691. {
  1692. // TODO: 在此添加控件通知处理程序代码
  1693. // 选择设备
  1694. CString strUID, strVarName;
  1695. CDlgSelectDev dlg;
  1696. CHAR szDevUID[MAX_DESC + 1] = {0};
  1697. if( dlg.DoModal() == IDOK )
  1698. {
  1699. CDBInterface::GetInstancePtr()->GetDevUID( (char *)(LPCTSTR)dlg.m_strDevName, szDevUID );
  1700. strUID = szDevUID;
  1701. GetDlgItem(IDC_EDT_VAR_UID)->SetWindowText(strUID);
  1702. strVarName.Format(g_strVarName2, dlg.m_strDevName);
  1703. GetDlgItem(IDC_EDT_VAR_NAME)->SetWindowText(strVarName);
  1704. CHAR szDevDriverID[MAX_ID + 1] = {0};
  1705. CHAR szDevFactoryID[MAX_ID + 1] = {0};
  1706. CHAR szDevTypeID[MAX_ID + 1] = {0};
  1707. SplitStr((char*)(LPCTSTR)strUID, '.', 0, szDevDriverID);
  1708. SplitStr((char*)(LPCTSTR)strUID, '.', 1, szDevFactoryID);
  1709. SplitStr((char*)(LPCTSTR)strUID, '.', 2, szDevTypeID);
  1710. GetDlgItem(IDC_EDT_DEV_TYPE_ID)->SetWindowText(szDevTypeID);
  1711. InitRs232Combo();
  1712. }
  1713. }
  1714. void CAnalogPropertyDlg::OnBnClickedBtnSelReg()
  1715. {
  1716. // TODO: 在此添加控件通知处理程序代码
  1717. // 选择寄存器
  1718. }
  1719. void CAnalogPropertyDlg::OnBnClickedBtnSelBit()
  1720. {
  1721. // TODO: 在此添加控件通知处理程序代码
  1722. // 选择bit位信息
  1723. CDlgBitManager dlg;
  1724. CString str;
  1725. // 变量UID
  1726. GetDlgItem(IDC_EDT_VAR_UID)->GetWindowText(str);
  1727. if( !str.Compare("") )
  1728. {
  1729. MessageBox(g_strSelDev, g_strTip, MB_ICONWARNING);
  1730. return;
  1731. }
  1732. dlg.m_strUID = str;
  1733. if( dlg.DoModal() == IDOK )
  1734. {
  1735. str.Format("%d", dlg.m_nID);
  1736. GetDlgItem(IDC_EDT_VAR_ITEM_ID)->SetWindowText(str);
  1737. m_nStartBit = dlg.m_nStartBit;
  1738. m_nEndBit = dlg.m_nEndBit;
  1739. }
  1740. }
  1741. void CAnalogPropertyDlg::OnCbnSelendokComboVarType()
  1742. {
  1743. // TODO: 在此添加控件通知处理程序代码
  1744. }
  1745. void CAnalogPropertyDlg::OnBnClickedBtnSelAlarmVar()
  1746. {
  1747. // TODO: 在此添加控件通知处理程序代码
  1748. CSelectVariantDlg dlg;
  1749. if ( dlg.DoModal() == IDOK )
  1750. {
  1751. GetDlgItem(IDC_EDT_ALARM_VAR_NAME)->SetWindowText(dlg.m_strVar);
  1752. }
  1753. }