RemoteLog.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. // RemoteLog.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "StoneU_HC_OCX.h"
  5. #include "RemoteLog.h"
  6. #include "newclientDlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. extern SERVER_INFO serverinfo[MAXIPNUMBER];
  13. CRemoteLog * RFile;
  14. HANDLE hfile[10];
  15. HANDLE hEvent;
  16. extern CNewclientDlg *g_NewClientDlg;
  17. /////////////////////////////////////////////////////////////////////////////
  18. // CRemoteLog dialog
  19. UINT LogFileThread(LPVOID pParam)
  20. {
  21. NET_DVR_TIME StartTime;
  22. NET_DVR_TIME StopTime;
  23. LONG m_lLogFile;
  24. LONG bRet = -1;
  25. NET_DVR_LOG strFileInfo;
  26. CString tempstring;
  27. RFile->m_iServer = RFile->m_ServerCtrl.GetCurSel()-1;
  28. RFile->m_iMode = RFile->m_ModeCtrl.GetCurSel();
  29. RFile->m_iMajType = RFile->m_MajTypeCtrl.GetCurSel();
  30. RFile->m_iMinType = RFile->m_MinTypeCtrl.GetCurSel();
  31. StartTime.dwYear = (WORD)RFile->m_ctDateStart.GetYear();
  32. StartTime.dwMonth = (WORD)RFile->m_ctDateStart.GetMonth();
  33. StartTime.dwDay = (WORD)RFile->m_ctDateStart.GetDay();
  34. StartTime.dwHour = (char)RFile->m_ctTimeStart.GetHour();
  35. StartTime.dwMinute = (char)RFile->m_ctTimeStart.GetMinute();
  36. StartTime.dwSecond = (char)RFile->m_ctTimeStart.GetSecond();
  37. StopTime.dwYear = (WORD)RFile->m_ctDateStop.GetYear();
  38. StopTime.dwMonth = (WORD)RFile->m_ctDateStop.GetMonth();
  39. StopTime.dwDay = (WORD)RFile->m_ctDateStop.GetDay();
  40. StopTime.dwHour = (char)RFile->m_ctTimeStop.GetHour();
  41. StopTime.dwMinute = (char)RFile->m_ctTimeStop.GetMinute();
  42. StopTime.dwSecond = (char)RFile->m_ctTimeStop.GetSecond();
  43. m_lLogFile = NET_DVR_FindDVRLog(serverinfo[RFile->m_iServer].m_lServerID, RFile->m_iMode, RFile->m_iMajType, RFile->m_iMinType, &StartTime, &StopTime);
  44. if(m_lLogFile < 0)
  45. {
  46. MessageBox(g_NewClientDlg->GetSafeHwnd(),"搜索日志结束失败!", "温馨提示", MB_ICONINFORMATION);
  47. CString sTemp;
  48. sTemp.Format("ERROR: NET_DVR_FindDVRLog = %d",NET_DVR_GetLastError());
  49. TRACE(sTemp);
  50. CloseHandle(hfile[RFile->n]);
  51. hfile[RFile->n] = NULL;
  52. return 0;
  53. }
  54. while(1)
  55. {
  56. bRet = NET_DVR_FindNextLog(m_lLogFile, &strFileInfo);
  57. if(bRet == NET_DVR_FILE_SUCCESS)
  58. {
  59. tempstring.Format("%04d-%02d-%02d %02d:%02d:%02d", strFileInfo.strLogTime.dwYear, strFileInfo.strLogTime.dwMonth, strFileInfo.strLogTime.dwDay, strFileInfo.strLogTime.dwHour,strFileInfo.strLogTime.dwMinute,strFileInfo.strLogTime.dwSecond);
  60. RFile->m_list.InsertItem(RFile->m_lLogNum,tempstring,0);
  61. if(strFileInfo.dwMajorType == 1)
  62. {
  63. tempstring.Format("%s","报警");
  64. }
  65. else if(strFileInfo.dwMajorType == 2)
  66. {
  67. tempstring.Format("%s","异常");
  68. }
  69. else if(strFileInfo.dwMajorType == 3)
  70. {
  71. tempstring.Format("%s","操作");
  72. }
  73. RFile->m_list.SetItemText(RFile->m_lLogNum,1,tempstring);
  74. tempstring.Format("%d",strFileInfo.dwMinorType);
  75. RFile->m_list.SetItemText(RFile->m_lLogNum,2,tempstring);
  76. RFile->m_lLogNum++;
  77. }
  78. else
  79. {
  80. if(bRet == NET_DVR_ISFINDING)
  81. {
  82. Sleep(5);
  83. continue;
  84. }
  85. if( (bRet == NET_DVR_NOMOREFILE) || (bRet == NET_DVR_FILE_NOFIND) )
  86. {
  87. RFile->GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志"); // by zxy 2005/05/10
  88. RFile->m_bSearch = FALSE;
  89. MessageBox(g_NewClientDlg->GetSafeHwnd(),"搜索日志结束!", "温馨提示", MB_ICONINFORMATION);
  90. break;
  91. }
  92. else
  93. {
  94. RFile->GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
  95. RFile->m_bSearch = FALSE;
  96. MessageBox(g_NewClientDlg->GetSafeHwnd(),"由于服务器忙,或网络故障,搜索日志异常终止!", "温馨提示", MB_ICONINFORMATION);
  97. break;
  98. }
  99. }
  100. }
  101. CloseHandle(hfile[RFile->n]);
  102. hfile[RFile->n] = NULL;
  103. NET_DVR_FindLogClose(m_lLogFile);
  104. return 0;
  105. }
  106. UINT GetLogFileThread(LPVOID pParam)
  107. {
  108. LONG bRet = -1;
  109. NET_DVR_LOG strFileInfo;
  110. CString tempstring;
  111. while(1)
  112. {
  113. bRet = NET_DVR_FindNextLog(RFile->m_lLogFile, &strFileInfo);
  114. if(bRet == NET_DVR_FILE_SUCCESS)
  115. {
  116. tempstring.Format("%04d-%02d-%02d %02d:%02d:%02d", strFileInfo.strLogTime.dwYear, strFileInfo.strLogTime.dwMonth, strFileInfo.strLogTime.dwDay, strFileInfo.strLogTime.dwHour,strFileInfo.strLogTime.dwMinute,strFileInfo.strLogTime.dwSecond);
  117. RFile->m_list.InsertItem(RFile->m_lLogNum,tempstring,0);
  118. if(strFileInfo.dwMajorType == 1)
  119. {
  120. tempstring.Format("%s","报警");
  121. }
  122. else if(strFileInfo.dwMajorType == 2)
  123. {
  124. tempstring.Format("%s","异常");
  125. }
  126. else if(strFileInfo.dwMajorType == 3)
  127. {
  128. tempstring.Format("%s","操作");
  129. }
  130. RFile->m_list.SetItemText(RFile->m_lLogNum,1,tempstring);
  131. tempstring.Format("%d",strFileInfo.dwMinorType);
  132. RFile->m_list.SetItemText(RFile->m_lLogNum,2,tempstring);
  133. RFile->m_lLogNum++;
  134. }
  135. else
  136. {
  137. if(bRet == NET_DVR_ISFINDING)
  138. {
  139. Sleep(5);
  140. continue;
  141. }
  142. if( (bRet == NET_DVR_NOMOREFILE) || (bRet == NET_DVR_FILE_NOFIND) )
  143. {
  144. RFile->GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志"); // by zxy 2005/05/10
  145. RFile->m_bSearch = FALSE;
  146. MessageBox(g_NewClientDlg->GetSafeHwnd(),"搜索日志结束!", "温馨提示", MB_ICONINFORMATION);
  147. break;
  148. }
  149. else
  150. {
  151. RFile->GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
  152. RFile->m_bSearch = FALSE;
  153. MessageBox(g_NewClientDlg->GetSafeHwnd(),"由于服务器忙,或网络故障,搜索日志异常终止!", "温馨提示", MB_ICONINFORMATION);
  154. break;
  155. }
  156. }
  157. }
  158. CloseHandle(RFile->m_hFileThread);
  159. RFile->m_hFileThread = NULL;
  160. NET_DVR_FindLogClose(RFile->m_lLogFile);
  161. return 0;
  162. }
  163. CRemoteLog::CRemoteLog(CWnd* pParent /*=NULL*/)
  164. : CDialog(CRemoteLog::IDD, pParent)
  165. {
  166. //{{AFX_DATA_INIT(CRemoteLog)
  167. m_ctDateStart = 0;
  168. m_ctDateStop = 0;
  169. m_ctTimeStart = 0;
  170. m_ctTimeStop = 0;
  171. //}}AFX_DATA_INIT
  172. }
  173. void CRemoteLog::DoDataExchange(CDataExchange* pDX)
  174. {
  175. CDialog::DoDataExchange(pDX);
  176. //{{AFX_DATA_MAP(CRemoteLog)
  177. DDX_Control(pDX, IDC_LIST, m_list);
  178. DDX_Control(pDX, IDC_COMBOSERVER, m_ServerCtrl);
  179. DDX_Control(pDX, IDC_COMBOMODE, m_ModeCtrl);
  180. DDX_Control(pDX, IDC_COMBOMINTYPE, m_MinTypeCtrl);
  181. DDX_Control(pDX, IDC_COMBOMAJTYPE, m_MajTypeCtrl);
  182. DDX_DateTimeCtrl(pDX, IDC_DATESTART, m_ctDateStart);
  183. DDX_DateTimeCtrl(pDX, IDC_DATESTOP, m_ctDateStop);
  184. DDX_DateTimeCtrl(pDX, IDC_TIMESTART, m_ctTimeStart);
  185. DDX_DateTimeCtrl(pDX, IDC_TIMESTOP, m_ctTimeStop);
  186. //}}AFX_DATA_MAP
  187. }
  188. BEGIN_MESSAGE_MAP(CRemoteLog, CDialog)
  189. //{{AFX_MSG_MAP(CRemoteLog)
  190. ON_BN_CLICKED(IDEXIT, OnExit)
  191. ON_BN_CLICKED(IDC_BUTTONFIND, OnButtonfind)
  192. //}}AFX_MSG_MAP
  193. END_MESSAGE_MAP()
  194. /////////////////////////////////////////////////////////////////////////////
  195. // CRemoteLog message handlers
  196. BOOL CRemoteLog::OnInitDialog()
  197. {
  198. CDialog::OnInitDialog();
  199. // TODO: Add extra initialization here
  200. m_bSearch = FALSE;
  201. m_hFileThread = NULL;
  202. m_ServerCtrl.AddString("请选择DVR");
  203. for(int i = 0; i < MAXIPNUMBER; i++)
  204. {
  205. if(serverinfo[i].m_csServerName != "")
  206. m_ServerCtrl.AddString(serverinfo[i].m_csServerName);
  207. }
  208. RFile = this;
  209. m_list.InsertColumn(0,"日志时间",LVCFMT_LEFT,180,-1);
  210. m_list.InsertColumn(1,"主类型",LVCFMT_LEFT,80,-1);
  211. m_list.InsertColumn(2,"次类型",LVCFMT_LEFT,150,-1);
  212. m_list.InsertColumn(3,"事件",LVCFMT_LEFT,150,-1);
  213. m_lLogNum = 0;
  214. m_lLogFile = -1;
  215. CTime time1 = CTime::GetCurrentTime();
  216. CTime time(time1.GetYear(),time1.GetMonth(),time1.GetDay(),0,0,0);
  217. CTime time0(time1.GetYear(),time1.GetMonth(),time1.GetDay(),23,59,59);
  218. m_ctDateStart = time;
  219. m_ctTimeStart = time;
  220. m_ctDateStop = time1;
  221. m_ctTimeStop = time0;
  222. m_iServer = 0;
  223. m_iMode = 0;
  224. m_iMajType = 0;
  225. m_iMinType = 0;
  226. m_ServerCtrl.SetCurSel(m_iServer);
  227. m_ModeCtrl.SetCurSel(m_iMode);
  228. m_MajTypeCtrl.SetCurSel(m_iMajType);
  229. m_MinTypeCtrl.SetCurSel(m_iMinType);
  230. UpdateData(FALSE);
  231. return TRUE; // return TRUE unless you set the focus to a control
  232. // EXCEPTION: OCX Property Pages should return FALSE
  233. }
  234. void CRemoteLog::OnCancel()
  235. {
  236. // TODO: Add extra cleanup here
  237. // CDialog::OnCancel();
  238. }
  239. void CRemoteLog::OnOK()
  240. {
  241. // TODO: Add extra validation here
  242. // CDialog::OnOK();
  243. }
  244. void CRemoteLog::OnExit()
  245. {
  246. // TODO: Add your control notification handler code here
  247. if(m_hFileThread)
  248. {
  249. TerminateThread(m_hFileThread, 0);
  250. CloseHandle(m_hFileThread);
  251. m_hFileThread = NULL;
  252. NET_DVR_FindLogClose(m_lLogFile);
  253. }
  254. CDialog::OnCancel();
  255. }
  256. void CRemoteLog::OnButtonfind()
  257. {
  258. // TODO: Add your control notification handler code here
  259. UpdateData(TRUE);
  260. DWORD dwThreadId;
  261. if(m_ServerCtrl.GetCurSel() == 0)
  262. {
  263. MessageBox("获取设备状态失败!", "温馨提示", MB_ICONINFORMATION);
  264. return;
  265. }
  266. /* if(!m_bSearch)
  267. {
  268. for (i=0; i<10; i++)
  269. {
  270. n = i;
  271. hfile[i] = CreateThread(NULL,0,LPTHREAD_START_ROUTINE(LogFileThread),this,0,&dwThreadId);
  272. if(hfile[i] == NULL)
  273. {
  274. }
  275. }
  276. GetDlgItem(IDC_BUTTONFIND)->SetWindowText("停止搜索");
  277. m_bSearch = TRUE;
  278. }
  279. else
  280. {
  281. SetEvent(hEvent);
  282. Sleep(1000);
  283. for (i=0; i<10; i++)
  284. {
  285. if(hfile[i])
  286. {
  287. TerminateThread(hfile[i], 0);
  288. CloseHandle(hfile[i]);
  289. hfile[i] = NULL;
  290. }
  291. }
  292. GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
  293. m_bSearch = FALSE;
  294. }
  295. */
  296. if(!m_bSearch)
  297. {
  298. NET_DVR_TIME StartTime;
  299. NET_DVR_TIME StopTime;
  300. m_iServer = m_ServerCtrl.GetCurSel()-1;
  301. m_iMode = m_ModeCtrl.GetCurSel();
  302. m_iMajType = m_MajTypeCtrl.GetCurSel();
  303. m_iMinType = m_MinTypeCtrl.GetCurSel();
  304. StartTime.dwYear = (WORD)m_ctDateStart.GetYear();
  305. StartTime.dwMonth = (WORD)m_ctDateStart.GetMonth();
  306. StartTime.dwDay = (WORD)m_ctDateStart.GetDay();
  307. StartTime.dwHour = (char)m_ctTimeStart.GetHour();
  308. StartTime.dwMinute = (char)m_ctTimeStart.GetMinute();
  309. StartTime.dwSecond = (char)m_ctTimeStart.GetSecond();
  310. StopTime.dwYear = (WORD)m_ctDateStop.GetYear();
  311. StopTime.dwMonth = (WORD)m_ctDateStop.GetMonth();
  312. StopTime.dwDay = (WORD)m_ctDateStop.GetDay();
  313. StopTime.dwHour = (char)m_ctTimeStop.GetHour();
  314. StopTime.dwMinute = (char)m_ctTimeStop.GetMinute();
  315. StopTime.dwSecond = (char)m_ctTimeStop.GetSecond();
  316. m_lLogFile = NET_DVR_FindDVRLog(serverinfo[m_iServer].m_lServerID, m_iMode, m_iMajType, m_iMinType, &StartTime, &StopTime);
  317. if(m_lLogFile < 0)
  318. {
  319. MessageBox("搜索日志失败!", "温馨提示", MB_ICONINFORMATION);
  320. CString sTemp;
  321. sTemp.Format("ERROR: NET_DVR_FindDVRLog = %d",NET_DVR_GetLastError());
  322. TRACE(sTemp);
  323. return;
  324. }
  325. m_bSearch = TRUE;
  326. m_lLogNum = 0;
  327. m_list.DeleteAllItems();
  328. if(m_hFileThread == NULL)
  329. m_hFileThread = CreateThread(NULL,0,LPTHREAD_START_ROUTINE(GetLogFileThread),this,0,&dwThreadId);
  330. if(m_hFileThread == NULL)
  331. {
  332. MessageBox("打开线程失败!", "温馨提示", MB_ICONINFORMATION);
  333. return;
  334. }
  335. GetDlgItem(IDC_BUTTONFIND)->SetWindowText("停止搜索");
  336. m_bSearch = TRUE;
  337. }
  338. else
  339. {
  340. if(m_hFileThread)
  341. {
  342. TerminateThread(m_hFileThread, 0);
  343. CloseHandle(m_hFileThread);
  344. m_hFileThread = NULL;
  345. }
  346. NET_DVR_FindLogClose(m_lLogFile);
  347. GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
  348. m_bSearch = FALSE;
  349. m_lLogNum = 0;
  350. m_hFileThread = NULL;
  351. }
  352. }