RemoteLog.cpp 11 KB

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