MainFrm.cpp
上传用户:shtiemo
上传日期:2017-12-29
资源大小:163k
文件大小:7k
开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "PasRTDat.h"
  5. #include "MainFrm.h"
  6. #include "RTDatOpr.h"
  7. #include "TimeDlg.h"
  8. #include "PerDlg.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CMainFrame
  16. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  17. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  18. //{{AFX_MSG_MAP(CMainFrame)
  19. ON_WM_CREATE()
  20. ON_COMMAND(ID_RTDAT_AUTOREAD, OnRtdatAutoread)
  21. ON_COMMAND(ID_RTDAT_AUTOSAVE, OnRtdatAutosave)
  22. ON_COMMAND(ID_RTDAT_GETRTDAT, OnRtdatGetrtdat)
  23. ON_COMMAND(ID_RTDAT_READRTDAT, OnRtdatReadrtdat)
  24. ON_COMMAND(ID_RTDAT_SAVERTDAT, OnRtdatSavertdat)
  25. ON_COMMAND(ID_RTDAT_SENDRTDAT, OnRtdatSendrtdat)
  26. ON_COMMAND(ID_RTDAT_SETPERIOD, OnRtdatSetperiod)
  27. ON_COMMAND(ID_RTDAT_SETTIME, OnRtdatSettime)
  28. ON_UPDATE_COMMAND_UI(ID_RTDAT_AUTOREAD, OnUpdateRtdatAutoread)
  29. ON_UPDATE_COMMAND_UI(ID_RTDAT_AUTOSAVE, OnUpdateRtdatAutosave)
  30. ON_WM_TIMER()
  31. ON_WM_DESTROY()
  32. ON_WM_CLOSE()
  33. ON_COMMAND(ID_RTDAT_RTUMEA, OnRtdatRtumea)
  34. ON_UPDATE_COMMAND_UI(ID_RTDAT_RTUMEA, OnUpdateRtdatRtumea)
  35. //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37. static UINT indicators[] =
  38. {
  39. ID_SEPARATOR,           // status line indicator
  40. ID_INDICATOR_CAPS,
  41. ID_INDICATOR_NUM,
  42. ID_INDICATOR_SCRL,
  43. };
  44. #define RTDAT_TIMERID 1000 // Timer ID
  45. #define RTDAT_TIMEER_TIME 1000 // 定时时间间隔
  46. /////////////////////////////////////////////////////////////////////////////
  47. // CMainFrame construction/destruction
  48. CMainFrame::CMainFrame()
  49. {
  50. // TODO: add member initialization code here
  51. }
  52. CMainFrame::~CMainFrame()
  53. {
  54. }
  55. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  56. {
  57. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  58. return -1;
  59. if (!m_wndToolBar.Create(this) ||
  60. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  61. {
  62. TRACE0("Failed to create toolbarn");
  63. return -1;      // fail to create
  64. }
  65. if (!m_wndStatusBar.Create(this) ||
  66. !m_wndStatusBar.SetIndicators(indicators,
  67.   sizeof(indicators)/sizeof(UINT)))
  68. {
  69. TRACE0("Failed to create status barn");
  70. return -1;      // fail to create
  71. }
  72. // TODO: Remove this if you don't want tool tips or a resizeable toolbar
  73. m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  74. CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  75. // TODO: Delete these three lines if you don't want the toolbar to
  76. //  be dockable
  77. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  78. EnableDocking(CBRS_ALIGN_ANY);
  79. DockControlBar(&m_wndToolBar);
  80. SetTimer (RTDAT_TIMERID, RTDAT_TIMEER_TIME, NULL);
  81. return 0;
  82. }
  83. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  84. {
  85. // TODO: Modify the Window class or styles here by modifying
  86. //  the CREATESTRUCT cs
  87. return CMDIFrameWnd::PreCreateWindow(cs);
  88. }
  89. /////////////////////////////////////////////////////////////////////////////
  90. // CMainFrame diagnostics
  91. #ifdef _DEBUG
  92. void CMainFrame::AssertValid() const
  93. {
  94. CMDIFrameWnd::AssertValid();
  95. }
  96. void CMainFrame::Dump(CDumpContext& dc) const
  97. {
  98. CMDIFrameWnd::Dump(dc);
  99. }
  100. #endif //_DEBUG
  101. /////////////////////////////////////////////////////////////////////////////
  102. // CMainFrame message handlers
  103. void CMainFrame::OnRtdatAutoread() 
  104. {
  105. // TODO: Add your command handler code here
  106. if (bAutoSave)
  107. {
  108. AfxMessageBox("请先停止自动保存操作!", MB_OK);
  109. return ;
  110. }
  111. if (!bAutoRead)
  112. {
  113. if (AfxMessageBox("确定要自动发送数据到ADM?", MB_OKCANCEL||MB_ICONEXCLAMATION) == IDOK)
  114. bAutoRead = !bAutoRead;
  115. }
  116. else
  117. bAutoRead = !bAutoRead;
  118. }
  119. void CMainFrame::OnRtdatAutosave() 
  120. {
  121. // TODO: Add your command handler code here
  122. if (bAutoRead)
  123. {
  124. AfxMessageBox("请先停止自动读取操作!", MB_OK);
  125. return ;
  126. }
  127. bAutoSave = !bAutoSave;
  128. }
  129. void CMainFrame::OnRtdatGetrtdat() 
  130. {
  131. // TODO: Add your command handler code here
  132. if (bAutoRead || bAutoSave)
  133. {
  134. AfxMessageBox("请先停止自动操作再进行!", MB_OK);
  135. return ;
  136. }
  137. GetAllRTData();
  138. }
  139. void CMainFrame::OnRtdatReadrtdat() 
  140. {
  141. // TODO: Add your command handler code here
  142. if (bAutoRead || bAutoSave)
  143. {
  144. AfxMessageBox("请先停止自动操作再进行!", MB_OK);
  145. return ;
  146. }
  147. CFileDialog Dlg(TRUE, NULL, "C:\IES500\PARAM\实时数据\*.DAT");
  148. if (Dlg.DoModal() == IDOK)
  149. {
  150. CString strFile = Dlg.GetPathName();
  151. if (!LoadRTDataFromFile(strFile))
  152. AfxMessageBox("读数据文件失败!");
  153. else
  154. Ary2ToAry1();
  155. }
  156. }
  157. void CMainFrame::OnRtdatSavertdat() 
  158. {
  159. // TODO: Add your command handler code here
  160. if (bAutoRead || bAutoSave)
  161. {
  162. AfxMessageBox("请先停止自动操作再进行!", MB_OK);
  163. return ;
  164. }
  165. saveAllRTDataToFile();
  166. }
  167. void CMainFrame::OnRtdatSendrtdat() 
  168. {
  169. // TODO: Add your command handler code here
  170. if (bAutoRead || bAutoSave)
  171. {
  172. AfxMessageBox("请先停止自动操作再进行!", MB_OK);
  173. return ;
  174. }
  175. if (AfxMessageBox("确定要发送数据到ADM?", MB_OKCANCEL||MB_ICONEXCLAMATION) == IDOK)
  176. SendAllDataToADM();
  177. }
  178. void CMainFrame::OnRtdatSetperiod() 
  179. {
  180. // TODO: Add your command handler code here
  181. CPerDlg PerDlg;
  182. PerDlg.m_nSeconds = nSeconds;
  183. if (PerDlg.DoModal() == IDOK) nSeconds = PerDlg.m_nSeconds;
  184. }
  185. void CMainFrame::OnRtdatSettime() 
  186. {
  187. // TODO: Add your command handler code here
  188. CTimeDlg TimeDlg;
  189. CTime Time = CTime::GetCurrentTime();
  190. TimeDlg.m_nDay = Time.GetDay();
  191. TimeDlg.m_nHour = Time.GetHour();
  192. TimeDlg.m_nMinute = Time.GetMinute();
  193. if (TimeDlg.DoModal() == IDOK)
  194. {
  195. DatStartTime = CTime(Time.GetYear(), Time.GetMonth(), TimeDlg.m_nDay
  196. ,TimeDlg.m_nHour, TimeDlg.m_nMinute, Time.GetSecond());
  197. StartTime = CTime::GetCurrentTime();
  198. }
  199. }
  200. void CMainFrame::OnUpdateRtdatAutoread(CCmdUI* pCmdUI) 
  201. {
  202. // TODO: Add your command update UI handler code here
  203. if (bAutoRead) pCmdUI->SetCheck(TRUE);
  204. else pCmdUI->SetCheck(FALSE);
  205. }
  206. void CMainFrame::OnUpdateRtdatAutosave(CCmdUI* pCmdUI) 
  207. {
  208. // TODO: Add your command update UI handler code here
  209. if (bAutoSave) pCmdUI->SetCheck(TRUE);
  210. else pCmdUI->SetCheck(FALSE);
  211. }
  212. void CMainFrame::OnTimer(UINT nIDEvent) 
  213. {
  214. // TODO: Add your message handler code here and/or call default
  215. // 事件触发处理
  216. if (BeSCADAEventProcess())
  217. nSecond = nSeconds;
  218. else
  219. nSecond++;
  220. if (bAutoSave && nSecond >= nSeconds)
  221. {
  222. GetAllRTData();
  223. saveAllRTDataToFile();
  224. }
  225. if (nSecond >= nSeconds) nSecond = 0; // 不保存也同样清0!!!
  226. if (bAutoRead)
  227. {
  228. CString strFile;
  229. CTime Time = CTime::GetCurrentTime();
  230. CTime DatTime = DatStartTime + (Time - StartTime);
  231. strFile.Format("C:\IES500\PARAM\实时数据\实时数据%02d%02d%02d%02d.dat", DatTime.GetDay(), DatTime.GetHour(), 
  232. DatTime.GetMinute(), DatTime.GetSecond());
  233. if (LoadRTDataFromFile(strFile))
  234. {
  235. Ary2ToAry1();
  236. SendAllDataToADM();
  237. }
  238. }
  239. CMDIFrameWnd::OnTimer(nIDEvent);
  240. }
  241. void CMainFrame::OnDestroy() 
  242. {
  243. CMDIFrameWnd::OnDestroy();
  244. // TODO: Add your message handler code here
  245. KillTimer(RTDAT_TIMERID);
  246. }
  247. void CMainFrame::OnClose() 
  248. {
  249. // TODO: Add your message handler code here and/or call default
  250. if (AfxMessageBox("确定要退出?", MB_OKCANCEL) == IDOK)
  251. CMDIFrameWnd::OnClose();
  252. }
  253. void CMainFrame::OnRtdatRtumea() 
  254. {
  255. // TODO: Add your command handler code here
  256. bRTUMea = !bRTUMea;
  257. }
  258. void CMainFrame::OnUpdateRtdatRtumea(CCmdUI* pCmdUI) 
  259. {
  260. // TODO: Add your command update UI handler code here
  261. if (bRTUMea) pCmdUI->SetCheck(1);
  262. else pCmdUI->SetCheck(0);
  263. }