YAServer.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. // YAServer.cpp : 定义应用程序的类行为。
  2. //
  3. #include "stdafx.h"
  4. #include "YAServer.h"
  5. #include "YAServerDlg.h"
  6. #include "def.h"
  7. #include "INIFILE.h"
  8. #include "Functions/Functions.h"
  9. #include "minidupm.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #endif
  13. // CYAServerApp
  14. BEGIN_MESSAGE_MAP(CYAServerApp, CWinApp)
  15. ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
  16. END_MESSAGE_MAP()
  17. // CYAServerApp 构造
  18. CYAServerApp::CYAServerApp()
  19. {
  20. // 支持重新启动管理器
  21. m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
  22. // TODO: 在此处添加构造代码,
  23. // 将所有重要的初始化放置在 InitInstance 中
  24. }
  25. // 唯一的一个 CYAServerApp 对象
  26. CYAServerApp theApp;
  27. // CYAServerApp 初始化
  28. BOOL CYAServerApp::InitInstance()
  29. {
  30. // 如果一个运行在 Windows XP 上的应用程序清单指定要
  31. // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
  32. //则需要 InitCommonControlsEx()。否则,将无法创建窗口。
  33. CreateMutex(NULL, FALSE, _T("MyMux"));
  34. if(GetLastError() == ERROR_ALREADY_EXISTS){
  35. HWND hWnd = ::FindWindow(NULL, _T("永安信通数据采集系统"));
  36. ::PostMessage(hWnd, WM_QUIT, 0, 0);
  37. //caption改为你窗口的具体caption
  38. //::ShowWindow(hWnd,SW_SHOW);
  39. //::SetForegroundWindow(hWnd); // 激活
  40. //return FALSE;
  41. }
  42. INITCOMMONCONTROLSEX InitCtrls;
  43. InitCtrls.dwSize = sizeof(InitCtrls);
  44. // 将它设置为包括所有要在应用程序中使用的
  45. // 公共控件类。
  46. InitCtrls.dwICC = ICC_WIN95_CLASSES;
  47. InitCommonControlsEx(&InitCtrls);
  48. SetUnhandledExceptionFilter(ExceptionFilter);
  49. CWinApp::InitInstance();
  50. AfxEnableControlContainer();
  51. // 创建 shell 管理器,以防对话框包含
  52. // 任何 shell 树视图控件或 shell 列表视图控件。
  53. CShellManager *pShellManager = new CShellManager;
  54. // 标准初始化
  55. // 如果未使用这些功能并希望减小
  56. // 最终可执行文件的大小,则应移除下列
  57. // 不需要的特定初始化例程
  58. // 更改用于存储设置的注册表项
  59. // TODO: 应适当修改该字符串,
  60. // 例如修改为公司或组织名
  61. SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
  62. init_param();
  63. load_db_conf();
  64. load_sys_conf();
  65. load_log_conf();
  66. load_reader_conf();
  67. CYAServerDlg dlg;
  68. m_pMainWnd = &dlg;
  69. INT_PTR nResponse = dlg.DoModal();
  70. if (nResponse == IDOK)
  71. {
  72. // TODO: 在此放置处理何时用
  73. // “确定”来关闭对话框的代码
  74. }
  75. else if (nResponse == IDCANCEL)
  76. {
  77. // TODO: 在此放置处理何时用
  78. // “取消”来关闭对话框的代码
  79. }
  80. // 删除上面创建的 shell 管理器。
  81. if (pShellManager != NULL)
  82. {
  83. delete pShellManager;
  84. }
  85. // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
  86. // 而不是启动应用程序的消息泵。
  87. return FALSE;
  88. }
  89. /*
  90. * 写入配置文件
  91. *
  92. * param
  93. * section ------ 字段名
  94. * key ------ 键值
  95. * value ------ 值
  96. *
  97. * 例子:
  98. * [DB]
  99. * user=root
  100. * DB为字段名, user为键值,root为键值
  101. *
  102. *
  103. * return
  104. * 无
  105. *
  106. */
  107. void CYAServerApp::writeini( string section, string key, string value )
  108. {
  109. WritePrivateProfileStringA(section.c_str(), key.c_str(), value.c_str(), FILEPATH_SERVER_CONFIG);
  110. }
  111. /*
  112. * 载入主数据库配置和备用数据库配置
  113. *
  114. * param
  115. * 无
  116. *
  117. * return
  118. * 无
  119. *
  120. */
  121. void CYAServerApp::load_db_conf()
  122. {
  123. IniFile ini;
  124. if(ini.open(FILEPATH_SERVER_CONFIG)){
  125. //主数据库ip
  126. dbhost = ini.read(CONF_SECT_DB, CONF_DB_KEY_HOST);
  127. //主数据库用户名
  128. dbuser = ini.read(CONF_SECT_DB, CONF_DB_KEY_USER);
  129. //主数据库密码
  130. dbpwd = ini.read(CONF_SECT_DB, CONF_DB_KEY_PWD);
  131. //主数据库数据库名
  132. dbname = ini.read(CONF_SECT_DB, CONF_DB_KEY_DBNAME);
  133. //是否使用备份数据库
  134. dbbackup = ini.read(CONF_SECT_DB, CONF_DB_KEY_DB_BACKUP);
  135. //主数据库服务器的端口
  136. dbport = atoi(ini.read(CONF_SECT_DB, CONF_DB_KEY_PORT).c_str());
  137. //主数据库的编码
  138. dbencoding = ini.read(CONF_SECT_DB, CONF_DB_KEY_ENCODING);
  139. //备用数据库ip
  140. dbhost_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_HOST);
  141. //备用数据库用户名
  142. dbuser_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_USER);
  143. //备用数据库密码
  144. dbpwd_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_PWD);
  145. //备用数据库数据库名称
  146. dbname_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_DBNAME);
  147. //备用数据库端口
  148. dbport_bk = atoi(ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_PORT).c_str());
  149. //备用数据库编码
  150. dbencoding_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_ENCODING);
  151. }
  152. }
  153. /*
  154. * 保存主数据库配置和备用数据库配置到配置文件
  155. *
  156. * param
  157. * 无
  158. *
  159. * return
  160. * 无
  161. *
  162. */
  163. void CYAServerApp::save_db_conf()
  164. {
  165. char t[20];
  166. string s;
  167. sprintf_s(t, "%d", dbport);
  168. s = t;
  169. writeini(CONF_SECT_DB, CONF_DB_KEY_HOST, dbhost);
  170. writeini(CONF_SECT_DB, CONF_DB_KEY_USER, dbuser);
  171. writeini(CONF_SECT_DB, CONF_DB_KEY_PWD, dbpwd);
  172. writeini(CONF_SECT_DB, CONF_DB_KEY_DBNAME, dbname);
  173. writeini(CONF_SECT_DB, CONF_DB_KEY_DB_BACKUP, dbbackup);
  174. writeini(CONF_SECT_DB, CONF_DB_KEY_ENCODING, dbencoding);
  175. writeini(CONF_SECT_DB, CONF_DB_KEY_PORT, s);
  176. sprintf_s(t, "%d", dbport_bk);
  177. s = t;
  178. writeini(CONF_SECT_DB_BK, CONF_DB_KEY_HOST, dbhost_bk);
  179. writeini(CONF_SECT_DB_BK, CONF_DB_KEY_USER, dbuser_bk);
  180. writeini(CONF_SECT_DB_BK, CONF_DB_KEY_PWD, dbpwd_bk);
  181. writeini(CONF_SECT_DB_BK, CONF_DB_KEY_DBNAME, dbname_bk);
  182. writeini(CONF_SECT_DB_BK, CONF_DB_KEY_ENCODING, dbencoding_bk);
  183. writeini(CONF_SECT_DB_BK, CONF_DB_KEY_PORT, s);
  184. }
  185. /*
  186. * 从配置文件载入系统配置
  187. *
  188. * param
  189. * 无
  190. *
  191. * return
  192. * 无
  193. *
  194. */
  195. void CYAServerApp::load_sys_conf()
  196. {
  197. locate_type = 0;
  198. IniFile ini;
  199. if(ini.open(FILEPATH_SERVER_CONFIG)){
  200. ws_url = ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_WS_URL);
  201. ws_url_bk = ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_WS_URL_BK);
  202. use_filter = (atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_USE_FILTER).c_str()) == 0 ? FALSE : TRUE);
  203. use_filter_odd = (atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_USE_FILTER_ODD).c_str()) == 0 ? FALSE : TRUE);
  204. recon_server = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_RECON_SERVER).c_str());
  205. recon_db = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_RECON_DB).c_str());
  206. reader_lost = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_READER_LOST).c_str());
  207. card_lost = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_CARD_LOST).c_str());
  208. timing_interval = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_TIMING_INTERVAL).c_str());
  209. sampling_interval = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_SAMPLING_INTERVAL).c_str());
  210. coor_error = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_COORDINATE_ERROR).c_str());
  211. ranging_error = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_RANGING_ERROR).c_str());
  212. move_error = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_MOVING_ERROR).c_str());
  213. z_offset = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_Z_OFFSET).c_str());
  214. locate_type = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_LOCATE_TYPE).c_str());
  215. send_json_postion = 1000;
  216. send_json_counting = 5000;
  217. send_json_alarm = 5000;
  218. send_json_device = 10000;
  219. ws_connect_interval = 2000;
  220. time_send_call = 5000;
  221. time_send_help = 5000;
  222. send_json_postion = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_POSION).c_str());
  223. send_json_counting = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_COUNTING).c_str());
  224. send_json_alarm = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_ALARM).c_str());
  225. send_json_device = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_DEVICE).c_str());
  226. ws_connect_interval = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_WS_CONNECT_INTERVAL).c_str());
  227. time_send_call = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_CALLINFO_INTERVAL).c_str());
  228. time_send_help = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_HELPINFO_INTERVAL).c_str());
  229. }
  230. }
  231. /*
  232. * 保存系统设置到配置文件
  233. *
  234. * param
  235. * 无
  236. *
  237. * return
  238. * 无
  239. *
  240. */
  241. void CYAServerApp::save_sys_conf()
  242. {
  243. char t[20];
  244. string s;
  245. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_WS_URL, ws_url);
  246. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_WS_URL_BK, ws_url_bk);
  247. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_USE_FILTER, use_filter ? "1" : "0");
  248. sprintf_s(t, "%d", recon_server);
  249. s = t;
  250. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_RECON_SERVER, s);
  251. sprintf_s(t, "%d", recon_db);
  252. s = t;
  253. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_RECON_DB, s);
  254. sprintf_s(t, "%d", reader_lost);
  255. s = t;
  256. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_READER_LOST, s);
  257. sprintf_s(t, "%d", card_lost);
  258. s = t;
  259. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_CARD_LOST, s);
  260. sprintf_s(t, "%d", timing_interval);
  261. s = t;
  262. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_TIMING_INTERVAL, s);
  263. sprintf_s(t, "%d", sampling_interval);
  264. s = t;
  265. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_SAMPLING_INTERVAL, s);
  266. sprintf_s(t, "%f", z_offset);
  267. s = t;
  268. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_Z_OFFSET, s);
  269. sprintf_s(t, "%f", coor_error);
  270. s = t;
  271. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_COORDINATE_ERROR, s);
  272. sprintf_s(t, "%f", ranging_error);
  273. s = t;
  274. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_RANGING_ERROR, s);
  275. sprintf_s(t, "%f", move_error);
  276. s = t;
  277. writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_MOVING_ERROR, s);
  278. }
  279. /*
  280. * 从配置文件载入日志配置
  281. *
  282. * param
  283. * 无
  284. *
  285. * return
  286. * 无
  287. *
  288. */
  289. void CYAServerApp::load_log_conf()
  290. {
  291. IniFile ini;
  292. if(ini.open(FILEPATH_SERVER_CONFIG)){
  293. //系统状态
  294. log_sys_status = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_SYS_STATUS).c_str()) == 0 ? FALSE : TRUE);
  295. //原始数据,底层数据
  296. log_raw_data = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_RAW_DATA).c_str()) == 0 ? FALSE : TRUE);
  297. //格式化数据
  298. log_parse_data = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_PARSE_DATA).c_str()) == 0 ? FALSE : TRUE);
  299. //发送数据包
  300. log_send_package = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_SEND_EVENT).c_str()) == 0 ? FALSE : TRUE);
  301. //接收数据包
  302. log_recv_package = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_REV_EVENT).c_str()) == 0 ? FALSE : TRUE);
  303. //定位数据
  304. log_locate_data = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_LOCATE_DATA).c_str()) == 0 ? FALSE : TRUE);
  305. }
  306. }
  307. /*
  308. * 保存日志设置
  309. *
  310. * param
  311. * 无
  312. *
  313. * return
  314. * 无
  315. *
  316. */
  317. void CYAServerApp::save_log_conf()
  318. {
  319. writeini(CONF_SECT_SERVER_LOG, CONF_LOG_SYS_STATUS, log_sys_status ? "1" : "0");
  320. writeini(CONF_SECT_SERVER_LOG, CONF_LOG_RAW_DATA, log_raw_data ? "1" : "0");
  321. writeini(CONF_SECT_SERVER_LOG, CONF_LOG_PARSE_DATA, log_parse_data ? "1" : "0");
  322. writeini(CONF_SECT_SERVER_LOG, CONF_LOG_SEND_EVENT, log_send_package ? "1" : "0");
  323. writeini(CONF_SECT_SERVER_LOG, CONF_LOG_REV_EVENT, log_recv_package ? "1" : "0");
  324. writeini(CONF_SECT_SERVER_LOG,CONF_LOG_LOCATE_DATA,log_locate_data ? "1" : "0");
  325. }
  326. /*
  327. * 设置监控服务器句柄以及路径
  328. *
  329. * param
  330. * hwd ------ 主对话框窗口句柄
  331. *
  332. * return
  333. * 无
  334. *
  335. */
  336. void CYAServerApp::set_server_handle(HWND hwd)
  337. {
  338. char t[20];
  339. char szAppdir[MAX_PATH+1] = {0};
  340. GetModuleFileNameA(NULL, szAppdir , MAX_PATH);
  341. sprintf_s(t, "%d", DWORD(hwd));
  342. writeini(CONF_SECT_MONITOR, CONF_MONITOR_SERVER_HANDLE, t);
  343. writeini(CONF_SECT_MONITOR, CONF_MONITOR_SERVER_PATH, szAppdir);
  344. }
  345. /*
  346. * 从配置文件载入监控配置
  347. *
  348. * param
  349. * 无
  350. *
  351. * return
  352. * 无
  353. *
  354. */
  355. void CYAServerApp::load_monitor_conf()
  356. {
  357. IniFile ini;
  358. if(ini.open(FILEPATH_SERVER_CONFIG)){
  359. m_hwnd_monitor = HWND(atoi(ini.read(CONF_SECT_MONITOR, CONF_MONITOR_MONITOR_HANDLE).c_str()));
  360. string path = ini.read(CONF_SECT_MONITOR, CONF_MONITOR_MONITOR_PATH);
  361. sprintf_s(m_path_monitor, MAX_PATH, "%s", path.c_str());
  362. //sprintf( m_path_monitor, "%s", path.c_str());
  363. }
  364. }
  365. /*
  366. * 初始化监视软件路径
  367. *
  368. * param
  369. * 无
  370. *
  371. * return
  372. * 无
  373. *
  374. */
  375. void CYAServerApp::init_param()
  376. {
  377. m_path_monitor = new char[MAX_PATH];
  378. memset(m_path_monitor,0,MAX_PATH*sizeof(char));
  379. }
  380. /*
  381. * 保存间隔配置到配置文件
  382. *
  383. * param
  384. * 无
  385. *
  386. * return
  387. * 无
  388. *
  389. */
  390. void CYAServerApp::save_interval_conf()
  391. {
  392. char t[20];
  393. string s;
  394. sprintf_s(t, "%d", send_json_postion);
  395. s = t;
  396. writeini(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_POSION, s);
  397. sprintf_s(t, "%d", send_json_counting);
  398. s = t;
  399. writeini(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_COUNTING, s);
  400. sprintf_s(t, "%d", send_json_alarm);
  401. s = t;
  402. writeini(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_ALARM, s);
  403. sprintf_s(t, "%d", send_json_device);
  404. s = t;
  405. writeini(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_DEVICE, s);
  406. }
  407. void CYAServerApp::load_reader_conf()
  408. {
  409. IniFile ini;
  410. if(ini.open(FILEPATH_SERVER_CONFIG)){
  411. //分站发送时间消息
  412. reader_interval_time = atoi(ini.read(CONF_SECT_READER, CONF_READER_INTERVAL_TIME).c_str());
  413. }
  414. }
  415. void CYAServerApp::save_reader_conf()
  416. {
  417. char t[20] = {0};
  418. string s;
  419. sprintf_s(t, "%d", reader_interval_time);
  420. s = t;
  421. writeini(CONF_SECT_READER, CONF_READER_INTERVAL_TIME, s);
  422. }