RemoteAlarmConfig.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. // RemoteAlarmConfig.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "StoneU_HC_OCX.h"
  5. #include "RemoteAlarmConfig.h"
  6. #include "RemoteAlarmIn.h"
  7. #include "RemotePTZCtrl.h"
  8. #include "RemoteParamsCfg.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CRemoteAlarmConfig dialog
  16. extern CRemoteParamsCfg *m_pRemoteParam;
  17. CRemoteAlarmConfig::CRemoteAlarmConfig(CWnd* pParent /*=NULL*/)
  18. : CDialog(CRemoteAlarmConfig::IDD, pParent)
  19. {
  20. //{{AFX_DATA_INIT(CRemoteAlarmConfig)
  21. m_bAlarmIn = FALSE;
  22. m_iHour11 = 0;
  23. m_iHour12 = 0;
  24. m_iHour21 = 0;
  25. m_iHour22 = 0;
  26. m_iHour31 = 0;
  27. m_iHour32 = 0;
  28. m_iHour41 = 0;
  29. m_iHour42 = 0;
  30. m_iMin11 = 0;
  31. m_iMin21 = 0;
  32. m_iMin12 = 0;
  33. m_iMin22 = 0;
  34. m_iMin31 = 0;
  35. m_iMin32 = 0;
  36. m_iMin41 = 0;
  37. m_iMin42 = 0;
  38. m_AlarmInName = _T("");
  39. //}}AFX_DATA_INIT
  40. }
  41. void CRemoteAlarmConfig::DoDataExchange(CDataExchange* pDX)
  42. {
  43. CDialog::DoDataExchange(pDX);
  44. //{{AFX_DATA_MAP(CRemoteAlarmConfig)
  45. DDX_Control(pDX, IDC_COMBOOUTWEEKDAY, m_WeekDayCtrl);
  46. DDX_Control(pDX, IDC_COMBOOUTDELAY, m_OutDelayCtrl);
  47. DDX_Control(pDX, IDC_COMBOCOPYOUT, m_CopyOutCtrl);
  48. DDX_Control(pDX, IDC_COMBOCOPYIN, m_CopyInCtrl);
  49. DDX_Control(pDX, IDC_COMBOALARMOUT, m_AlarmOutCtrl);
  50. DDX_Control(pDX, IDC_COMBOALARMIN, m_AlarmInCtrl);
  51. DDX_Control(pDX, IDC_COMBOCOPYTIME, m_CopyTimeCtrl);
  52. DDX_Control(pDX, IDC_COMBOALARMINTYPE, m_AlarmInTypeCtrl);
  53. DDX_Check(pDX, IDC_CHECKALARMIN, m_bAlarmIn);
  54. DDX_Text(pDX, IDC_EDITHOUR11, m_iHour11);
  55. DDX_Text(pDX, IDC_EDITHOUR12, m_iHour12);
  56. DDX_Text(pDX, IDC_EDITHOUR21, m_iHour21);
  57. DDX_Text(pDX, IDC_EDITHOUR22, m_iHour22);
  58. DDX_Text(pDX, IDC_EDITHOUR31, m_iHour31);
  59. DDX_Text(pDX, IDC_EDITHOUR32, m_iHour32);
  60. DDX_Text(pDX, IDC_EDITHOUR41, m_iHour41);
  61. DDX_Text(pDX, IDC_EDITHOUR42, m_iHour42);
  62. DDX_Text(pDX, IDC_EDITMIN11, m_iMin11);
  63. DDX_Text(pDX, IDC_EDITMIN21, m_iMin21);
  64. DDX_Text(pDX, IDC_EDITMIN12, m_iMin12);
  65. DDX_Text(pDX, IDC_EDITMIN22, m_iMin22);
  66. DDX_Text(pDX, IDC_EDITMIN31, m_iMin31);
  67. DDX_Text(pDX, IDC_EDITMIN32, m_iMin32);
  68. DDX_Text(pDX, IDC_EDITMIN41, m_iMin41);
  69. DDX_Text(pDX, IDC_EDITMIN42, m_iMin42);
  70. DDX_Text(pDX, IDC_EDITALARMINNAME, m_AlarmInName);
  71. //}}AFX_DATA_MAP
  72. }
  73. BEGIN_MESSAGE_MAP(CRemoteAlarmConfig, CDialog)
  74. //{{AFX_MSG_MAP(CRemoteAlarmConfig)
  75. ON_BN_CLICKED(IDC_INCOPY, OnIncopy)
  76. ON_CBN_SELCHANGE(IDC_COMBOALARMIN, OnSelchangeComboalarmin)
  77. ON_BN_CLICKED(IDC_BUTTONALARMIN, OnButtonalarmin)
  78. ON_BN_CLICKED(IDC_BUTTONPTZ, OnButtonptz)
  79. ON_BN_CLICKED(IDC_OUTTIMECOPY, OnOuttimecopy)
  80. ON_BN_CLICKED(IDC_OUTCOPY, OnOutcopy)
  81. ON_BN_CLICKED(IDC_EXIT, OnExit)
  82. ON_BN_CLICKED(IDC_CHECKALARMIN, OnCheckalarmin)
  83. ON_CBN_SELCHANGE(IDC_COMBOALARMOUT, OnSelchangeComboalarmout)
  84. ON_BN_CLICKED(IDC_OUTTIMEOK, OnOuttimeok)
  85. ON_CBN_SELCHANGE(IDC_COMBOOUTWEEKDAY, OnSelchangeCombooutweekday)
  86. ON_BN_CLICKED(IDC_INOK, OnInok)
  87. ON_BN_CLICKED(IDALARMCFGOK, OnAlarmcfgok)
  88. ON_BN_CLICKED(ID_CANCEL, OnCancel)
  89. //}}AFX_MSG_MAP
  90. END_MESSAGE_MAP()
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CRemoteAlarmConfig message handlers
  93. BOOL CRemoteAlarmConfig::CheckPara()
  94. {
  95. #if 1
  96. bSetAlarmParams = FALSE;
  97. CString sTemp;
  98. char cTemp[100];
  99. int i;
  100. m_alarmin = 0;
  101. m_nCopyAlarmIn = -1;
  102. m_alarmout = 0;
  103. m_nCopyAlarmOut = -1;
  104. m_nCopyOutTime = -1;
  105. m_AlarmInCtrl.ResetContent();
  106. m_CopyInCtrl.ResetContent();
  107. m_AlarmOutCtrl.ResetContent();
  108. m_CopyOutCtrl.ResetContent();
  109. sTemp.Format(_T("全部报警量"));
  110. m_CopyInCtrl.AddString(sTemp);
  111. for(i=0; i<(int)m_dwAlarmInNum; i++)
  112. {
  113. if(m_bConnectServer)
  114. {
  115. if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_ALARMINCFG, i,&m_alarmincfg[i], sizeof(NET_DVR_ALARMINCFG), &dwReturned))
  116. {
  117. m_bGetAlarmIn[i] = FALSE;
  118. sTemp.Format("%d 报警参数获取失败: NET_DVR_GET_ALARMINCFG = %d \n", i,NET_DVR_GetLastError());
  119. TRACE(sTemp);
  120. MessageBox("获取报警参数失败!", "温馨提示", MB_ICONINFORMATION);
  121. }
  122. else
  123. {
  124. m_bGetAlarmIn[i] = TRUE;
  125. sTemp.Format("报警量%d", (1+i));
  126. m_AlarmInCtrl.AddString(sTemp);
  127. m_CopyInCtrl.AddString(sTemp);
  128. }
  129. }
  130. else
  131. {
  132. m_bGetAlarmIn[i] = FALSE;
  133. }
  134. }
  135. m_CopyInCtrl.SetCurSel(m_alarmin);
  136. m_AlarmInCtrl.SetCurSel(m_alarmin);
  137. sTemp.Format(_T("全部报警输出"));
  138. m_CopyOutCtrl.AddString(sTemp);
  139. for(i=0; i<(int)m_dwAlarmOutNum; i++)
  140. {
  141. sTemp.Format("报警输出%d", (1+i));
  142. m_AlarmOutCtrl.AddString(sTemp);
  143. m_CopyOutCtrl.AddString(sTemp);
  144. if(m_bConnectServer)
  145. {
  146. if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_ALARMOUTCFG, i,&m_alarmoutcfg[i], sizeof(NET_DVR_ALARMOUTCFG), &dwReturned))
  147. {
  148. m_bGetAlarmOut[i] = FALSE;
  149. sTemp.Format("%d 报警输出参数获取失败: NET_DVR_GET_ALARMOUTCFG = %d \n", i, NET_DVR_GetLastError());
  150. TRACE(sTemp);
  151. MessageBox("获取报警输出参数失败!", "温馨提示", MB_ICONINFORMATION);
  152. }
  153. else
  154. {
  155. m_bGetAlarmOut[i] = TRUE;
  156. }
  157. }
  158. else
  159. {
  160. m_bGetAlarmOut[i] = FALSE;
  161. }
  162. }
  163. m_CopyOutCtrl.SetCurSel(m_alarmout);
  164. m_AlarmOutCtrl.SetCurSel(m_alarmout);
  165. if(m_bGetAlarmIn[m_alarmin])
  166. {
  167. m_AlarmInTypeCtrl.SetCurSel(m_alarmincfg[m_alarmin].byAlarmType);
  168. m_bAlarmIn = m_alarmincfg[m_alarmin].byAlarmInHandle;
  169. ZeroMemory(cTemp, 100);
  170. memcpy(cTemp, m_alarmincfg[m_alarmin].sAlarmInName, NAME_LEN);
  171. m_AlarmInName.Format("%s", cTemp);
  172. if(m_bAlarmIn)
  173. {
  174. GetDlgItem(IDC_BUTTONALARMIN)->EnableWindow(TRUE);
  175. GetDlgItem(IDC_BUTTONPTZ)->EnableWindow(TRUE);
  176. }
  177. else
  178. {
  179. GetDlgItem(IDC_BUTTONALARMIN)->EnableWindow(FALSE);
  180. GetDlgItem(IDC_BUTTONPTZ)->EnableWindow(FALSE);
  181. }
  182. GetDlgItem(IDC_INCOPY)->EnableWindow(TRUE);
  183. GetDlgItem(IDC_INOK)->EnableWindow(TRUE);
  184. }
  185. if(m_bGetAlarmOut[m_alarmout])
  186. {
  187. TRACE("报警输出延时:%d", m_alarmoutcfg[m_alarmout].dwAlarmOutDelay);
  188. m_OutDelayCtrl.SetCurSel(m_alarmoutcfg[m_alarmout].dwAlarmOutDelay);
  189. m_WeekDayCtrl.SetCurSel(0);
  190. m_CopyTimeCtrl.SetCurSel(0);
  191. m_iHour11 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][0].byStartHour;
  192. m_iMin11 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][0].byStartMin;
  193. m_iHour12 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][0].byStopHour;
  194. m_iMin12 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][0].byStopMin;
  195. m_iHour21 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][1].byStartHour;
  196. m_iMin21 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][1].byStartMin;
  197. m_iHour22 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][1].byStopHour;
  198. m_iMin22 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][1].byStopMin;
  199. m_iHour31 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][2].byStartHour;
  200. m_iMin31 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][2].byStartMin;
  201. m_iHour32 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][2].byStopHour;
  202. m_iMin32 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][2].byStopMin;
  203. m_iHour41 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][3].byStartHour;
  204. m_iMin41 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][3].byStartMin;
  205. m_iHour42 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][3].byStopHour;
  206. m_iMin42 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][3].byStopMin;
  207. GetDlgItem(IDC_OUTCOPY)->EnableWindow(TRUE);
  208. GetDlgItem(IDALARMCFGOK)->EnableWindow(TRUE);
  209. GetDlgItem(IDC_OUTTIMEOK)->EnableWindow(TRUE);
  210. }
  211. #endif
  212. UpdateData(FALSE);
  213. return TRUE;
  214. }
  215. BOOL CRemoteAlarmConfig::OnInitDialog()
  216. {
  217. CDialog::OnInitDialog();
  218. // TODO: Add extra initialization here
  219. CRect rc(0, 0, 0, 0);
  220. GetParent()->GetClientRect(&rc);
  221. ((CTabCtrl*)GetParent())->AdjustRect(FALSE, &rc);
  222. MoveWindow(&rc);
  223. if(m_pRemoteParam->m_dvrSelect != -1)
  224. CheckPara();
  225. return TRUE; // return TRUE unless you set the focus to a control
  226. // EXCEPTION: OCX Property Pages should return FALSE
  227. }
  228. void CRemoteAlarmConfig::OnSelchangeComboalarmin()
  229. {
  230. if(m_pRemoteParam->m_dvrSelect == -1)
  231. return;
  232. // TODO: Add your control notification handler code here
  233. char cTemp[100];
  234. m_alarmin = m_AlarmInCtrl.GetCurSel();
  235. ZeroMemory(cTemp, 100);
  236. memcpy(cTemp, m_alarmincfg[m_alarmin].sAlarmInName, NAME_LEN);
  237. m_AlarmInName.Format("%s", cTemp);
  238. m_AlarmInTypeCtrl.SetCurSel(m_alarmincfg[m_alarmin].byAlarmType);
  239. m_bAlarmIn = m_alarmincfg[m_alarmin].byAlarmInHandle;
  240. if(m_bAlarmIn)
  241. {
  242. GetDlgItem(IDC_BUTTONALARMIN)->EnableWindow(TRUE);
  243. }
  244. else
  245. {
  246. GetDlgItem(IDC_BUTTONALARMIN)->EnableWindow(FALSE);
  247. }
  248. UpdateData(FALSE);
  249. }
  250. void CRemoteAlarmConfig::OnCheckalarmin()
  251. {
  252. if(m_pRemoteParam->m_dvrSelect == -1)
  253. return;
  254. // TODO: Add your control notification handler code here
  255. UpdateData(TRUE);
  256. m_alarmincfg[m_alarmin].byAlarmInHandle = m_bAlarmIn;
  257. if(m_bAlarmIn)
  258. {
  259. GetDlgItem(IDC_BUTTONALARMIN)->EnableWindow(TRUE);
  260. }
  261. else
  262. {
  263. GetDlgItem(IDC_BUTTONALARMIN)->EnableWindow(FALSE);
  264. }
  265. }
  266. void CRemoteAlarmConfig::OnButtonalarmin()
  267. {
  268. // TODO: Add your control notification handler code here
  269. CRemoteAlarmIn dlg;
  270. dlg.m_lpAlarmIn = &m_alarmincfg[m_alarmin];
  271. dlg.m_iChannelnumber = m_iChannelnumber;
  272. dlg.m_lStartChannel = m_lStartChannel;
  273. dlg.m_dwAlarmOutNum = m_dwAlarmOutNum;
  274. dlg.m_dwAlarmInNum = m_dwAlarmInNum;
  275. if(dlg.DoModal()==IDOK)
  276. {
  277. bSetAlarmParams = TRUE;
  278. }
  279. }
  280. void CRemoteAlarmConfig::OnButtonptz()
  281. {
  282. // TODO: Add your control notification handler code here
  283. CRemotePTZCtrl dlg;
  284. dlg.m_lpAlarmIn = &m_alarmincfg[m_alarmin];
  285. dlg.m_iChannelnumber = m_iChannelnumber;
  286. dlg.m_lStartChannel = m_lStartChannel;
  287. if(dlg.DoModal()==IDOK)
  288. {
  289. bSetAlarmParams = TRUE;
  290. }
  291. }
  292. void CRemoteAlarmConfig::OnIncopy()
  293. {
  294. // TODO: Add your control notification handler code here
  295. UpdateData(TRUE);
  296. int i;
  297. int m_nCopyAlarm = m_CopyInCtrl.GetCurSel() - 1;
  298. m_alarmincfg[m_alarmin].byAlarmInHandle = m_bAlarmIn;
  299. m_alarmincfg[m_alarmin].byAlarmType = m_AlarmInTypeCtrl.GetCurSel();
  300. memcpy(m_alarmincfg[m_alarmin].sAlarmInName, m_AlarmInName, NAME_LEN);
  301. if(m_nCopyAlarm == -1)
  302. {
  303. for(i=0; i<(int)m_dwAlarmInNum; i++)
  304. {
  305. if(m_alarmin == i)
  306. continue;
  307. memcpy(&(m_alarmincfg[i]), &(m_alarmincfg[m_alarmin]), sizeof(NET_DVR_ALARMINCFG));
  308. }
  309. }
  310. else
  311. {
  312. memcpy(&(m_alarmincfg[m_nCopyAlarm]), &(m_alarmincfg[m_alarmin]), sizeof(NET_DVR_ALARMINCFG));
  313. }
  314. bSetAlarmParams = TRUE;
  315. }
  316. void CRemoteAlarmConfig::OnSelchangeComboalarmout()
  317. {
  318. if(m_pRemoteParam->m_dvrSelect == -1)
  319. return;
  320. // TODO: Add your control notification handler code here
  321. m_alarmout = m_AlarmOutCtrl.GetCurSel();
  322. CString sTemp;
  323. m_AlarmOutCtrl.GetLBText(m_alarmout, sTemp);
  324. memcpy(m_alarmoutcfg[m_alarmout].sAlarmOutName, sTemp, NAME_LEN);
  325. TRACE("报警输出延时:%d", m_alarmoutcfg[m_alarmout].dwAlarmOutDelay);
  326. m_OutDelayCtrl.SetCurSel(m_alarmoutcfg[m_alarmout].dwAlarmOutDelay);
  327. m_WeekDayCtrl.SetCurSel(0);
  328. m_CopyTimeCtrl.SetCurSel(0);
  329. m_iHour11 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][0].byStartHour;
  330. m_iMin11 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][0].byStartMin;
  331. m_iHour12 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][0].byStopHour;
  332. m_iMin12 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][0].byStopMin;
  333. m_iHour21 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][1].byStartHour;
  334. m_iMin21 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][1].byStartMin;
  335. m_iHour22 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][1].byStopHour;
  336. m_iMin22 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][1].byStopMin;
  337. m_iHour31 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][2].byStartHour;
  338. m_iMin31 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][2].byStartMin;
  339. m_iHour32 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][2].byStopHour;
  340. m_iMin32 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][2].byStopMin;
  341. m_iHour41 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][3].byStartHour;
  342. m_iMin41 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][3].byStartMin;
  343. m_iHour42 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][3].byStopHour;
  344. m_iMin42 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[0][3].byStopMin;
  345. UpdateData(FALSE);
  346. }
  347. void CRemoteAlarmConfig::OnSelchangeCombooutweekday()
  348. {
  349. if(m_pRemoteParam->m_dvrSelect == -1)
  350. return;
  351. // TODO: Add your control notification handler code here
  352. int i = m_WeekDayCtrl.GetCurSel();
  353. m_iHour11 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStartHour;
  354. m_iMin11 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStartMin;
  355. m_iHour12 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStopHour;
  356. m_iMin12 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStopMin;
  357. m_iHour21 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStartHour;
  358. m_iMin21 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStartMin;
  359. m_iHour22 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStopHour;
  360. m_iMin22 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStopMin;
  361. m_iHour31 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStartHour;
  362. m_iMin31 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStartMin;
  363. m_iHour32 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStopHour;
  364. m_iMin32 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStopMin;
  365. m_iHour41 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStartHour;
  366. m_iMin41 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStartMin;
  367. m_iHour42 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStopHour;
  368. m_iMin42 = m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStopMin;
  369. UpdateData(FALSE);
  370. }
  371. void CRemoteAlarmConfig::OnOuttimeok()
  372. {
  373. if(m_pRemoteParam->m_dvrSelect == -1)
  374. return;
  375. // TODO: Add your control notification handler code here
  376. UpdateData(TRUE);
  377. if(!F_TimeTest())
  378. return;
  379. int i = m_WeekDayCtrl.GetCurSel();
  380. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStartHour = m_iHour11;
  381. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStartMin = m_iMin11;
  382. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStopHour = m_iHour12;
  383. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStopMin = m_iMin12;
  384. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStartHour = m_iHour21;
  385. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStartMin = m_iMin21;
  386. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStopHour = m_iHour22;
  387. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStopMin = m_iMin22;
  388. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStartHour = m_iHour31;
  389. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStartMin = m_iMin31;
  390. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStopHour = m_iHour32;
  391. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStopMin = m_iMin32;
  392. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStartHour = m_iHour41;
  393. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStartMin = m_iMin41;
  394. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStopHour = m_iHour42;
  395. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStopMin = m_iMin42;
  396. GetDlgItem(IDC_OUTTIMECOPY)->EnableWindow(TRUE);
  397. }
  398. void CRemoteAlarmConfig::OnOuttimecopy()
  399. {
  400. // TODO: Add your control notification handler code here
  401. UpdateData(TRUE);
  402. int j,k;
  403. int i = m_WeekDayCtrl.GetCurSel();
  404. int m_nCopyTime = m_CopyTimeCtrl.GetCurSel() - 1;
  405. if(m_nCopyTime == -1)
  406. {
  407. for(j=0; j<MAX_DAYS; j++)
  408. {
  409. if(j == i)
  410. continue;
  411. for(k=0; k<MAX_TIMESEGMENT; k++)
  412. {
  413. memcpy(&(m_alarmoutcfg[m_alarmout].struAlarmOutTime[j][k]), &(m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][k]), sizeof(NET_DVR_SCHEDTIME));
  414. }
  415. }
  416. }
  417. else
  418. {
  419. for(k=0; k<MAX_TIMESEGMENT; k++)
  420. {
  421. memcpy(&(m_alarmoutcfg[m_alarmout].struAlarmOutTime[m_nCopyTime][k]), &(m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][k]), sizeof(NET_DVR_SCHEDTIME));
  422. }
  423. }
  424. }
  425. void CRemoteAlarmConfig::OnOutcopy()
  426. {
  427. // TODO: Add your control notification handler code here
  428. UpdateData(TRUE);
  429. CString sTemp;
  430. m_AlarmOutCtrl.GetLBText(m_alarmout, sTemp);
  431. memcpy(m_alarmoutcfg[m_alarmout].sAlarmOutName, sTemp, NAME_LEN);
  432. int i;
  433. int m_nCopyAlarm = m_CopyOutCtrl.GetCurSel() - 1;
  434. m_alarmoutcfg[m_alarmout].dwAlarmOutDelay = m_OutDelayCtrl.GetCurSel();
  435. if(m_nCopyAlarm == -1)
  436. {
  437. for(i=0; i<(int)m_dwAlarmOutNum; i++)
  438. {
  439. if(m_alarmout == i)
  440. continue;
  441. memcpy(&(m_alarmoutcfg[i]), &(m_alarmoutcfg[m_alarmout]), sizeof(NET_DVR_ALARMOUTCFG));
  442. }
  443. }
  444. else
  445. {
  446. memcpy(&(m_alarmoutcfg[m_nCopyAlarm]), &(m_alarmoutcfg[m_alarmout]), sizeof(NET_DVR_ALARMOUTCFG));
  447. }
  448. bSetAlarmParams = TRUE;
  449. }
  450. void CRemoteAlarmConfig::OnExit()
  451. {
  452. // TODO: Add your control notification handler code here
  453. bSetAlarmParams = FALSE;
  454. }
  455. BOOL CRemoteAlarmConfig::F_TimeTest()
  456. {
  457. int i, j;
  458. WORD wStartTime[4], wStopTime[4];
  459. UpdateData(TRUE);
  460. if( (m_iHour11 < 0) || (m_iHour11 > 24) || (m_iHour12 < 0) || (m_iHour12 > 24) || \
  461. (m_iHour21 < 0) || (m_iHour21 > 24) || (m_iHour22 < 0) || (m_iHour22 > 24) || \
  462. (m_iHour31 < 0) || (m_iHour31 > 24) || (m_iHour32 < 0) || (m_iHour32 > 24) || \
  463. (m_iHour41 < 0) || (m_iHour41 > 24) || (m_iHour42 < 0) || (m_iHour42 > 24) )
  464. {
  465. MessageBox("小时的范围在0 -- 24之间!", "温馨提示", MB_ICONINFORMATION);
  466. return FALSE;
  467. }
  468. if( (m_iMin11 < 0) || (m_iMin11 > 60) || (m_iMin12 < 0) || (m_iMin12 > 60) || \
  469. (m_iMin21 < 0) || (m_iMin21 > 60) || (m_iMin22 < 0) || (m_iMin22 > 60) || \
  470. (m_iMin31 < 0) || (m_iMin31 > 60) || (m_iMin32 < 0) || (m_iMin32 > 60) || \
  471. (m_iMin41 < 0) || (m_iMin41 > 60) || (m_iMin42 < 0) || (m_iMin42 > 60) )
  472. {
  473. MessageBox("分钟的范围在0 -- 60之间!", "温馨提示", MB_ICONINFORMATION);
  474. return FALSE;
  475. }
  476. wStartTime[0] = m_iHour11 * 100 + m_iMin11;
  477. wStartTime[1] = m_iHour21 * 100 + m_iMin21;
  478. wStartTime[2] = m_iHour31 * 100 + m_iMin31;
  479. wStartTime[3] = m_iHour41 * 100 + m_iMin41;
  480. wStopTime[0] = m_iHour12 * 100 + m_iMin12;
  481. wStopTime[1] = m_iHour22 * 100 + m_iMin22;
  482. wStopTime[2] = m_iHour32 * 100 + m_iMin32;
  483. wStopTime[3] = m_iHour42 * 100 + m_iMin42;
  484. for(i = 0; i < 4; i++)
  485. {
  486. if( (wStartTime[i] > 2400) || (wStopTime[i] > 2400) )
  487. {
  488. MessageBox("布防时间不能超过24:00!", "温馨提示", MB_ICONINFORMATION);
  489. return FALSE;
  490. }
  491. if(wStartTime[i] > wStopTime[i])
  492. {
  493. MessageBox("布防起始时间不能大于停止时间!", "温馨提示", MB_ICONINFORMATION);
  494. return FALSE;
  495. }
  496. for(j = 0; j < 4; j++)
  497. {
  498. if (i == j)
  499. continue;
  500. if( (wStartTime[i] > wStartTime[j]) && (wStartTime[i] < wStopTime[j]) || \
  501. (wStopTime[i] > wStartTime[j]) && (wStopTime[i] < wStopTime[j]) )
  502. {
  503. MessageBox("布防时间段不能重复!", "温馨提示", MB_ICONINFORMATION);
  504. return FALSE;
  505. }
  506. }
  507. }
  508. return TRUE;
  509. }
  510. void CRemoteAlarmConfig::OnInok()
  511. {
  512. if(m_pRemoteParam->m_dvrSelect == -1)
  513. return;
  514. // TODO: Add your control notification handler code here
  515. UpdateData(TRUE);
  516. m_alarmincfg[m_alarmin].byAlarmInHandle = m_bAlarmIn;
  517. m_alarmincfg[m_alarmin].byAlarmType = m_AlarmInTypeCtrl.GetCurSel();
  518. memcpy(m_alarmincfg[m_alarmin].sAlarmInName, m_AlarmInName, NAME_LEN);
  519. bSetAlarmParams = TRUE;
  520. }
  521. void CRemoteAlarmConfig::OnAlarmcfgok()
  522. {
  523. if(m_pRemoteParam->m_dvrSelect == -1)
  524. return;
  525. // TODO: Add your control notification handler code here
  526. UpdateData(TRUE);
  527. if(!F_TimeTest())
  528. return;
  529. int i = m_WeekDayCtrl.GetCurSel();
  530. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStartHour = m_iHour11;
  531. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStartMin = m_iMin11;
  532. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStopHour = m_iHour12;
  533. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][0].byStopMin = m_iMin12;
  534. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStartHour = m_iHour21;
  535. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStartMin = m_iMin21;
  536. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStopHour = m_iHour22;
  537. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][1].byStopMin = m_iMin22;
  538. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStartHour = m_iHour31;
  539. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStartMin = m_iMin31;
  540. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStopHour = m_iHour32;
  541. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][2].byStopMin = m_iMin32;
  542. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStartHour = m_iHour41;
  543. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStartMin = m_iMin41;
  544. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStopHour = m_iHour42;
  545. m_alarmoutcfg[m_alarmout].struAlarmOutTime[i][3].byStopMin = m_iMin42;
  546. memcpy(m_alarmincfg[m_alarmin].sAlarmInName, m_AlarmInName, NAME_LEN);
  547. m_alarmincfg[m_alarmin].byAlarmInHandle = m_bAlarmIn;
  548. m_alarmincfg[m_alarmin].byAlarmType = m_AlarmInTypeCtrl.GetCurSel();
  549. m_alarmoutcfg[m_alarmout].dwAlarmOutDelay = m_OutDelayCtrl.GetCurSel();
  550. bSetAlarmParams = TRUE;
  551. }
  552. void CRemoteAlarmConfig::OnCancel()
  553. {
  554. // TODO: Add your control notification handler code here
  555. }