public void Stop() { try { // DTU监听器 if (DTUListener.IsRuning) { DTUListener.Stop(); if (!DTUListener.IsRuning) { TraceManager.AppendDebug("DTU监听器已经关闭"); } else { TraceManager.AppendErrMsg("DTU监听器关闭失败"); } } // DTU控制器 if (DTUController.IsRuning) { DTUController.Stop(); if (!DTUController.IsRuning) { TraceManager.AppendDebug("DTU控制器已经关闭"); } else { TraceManager.AppendErrMsg("DTU控制器关闭失败"); } } // DTU通信器 if (HDDTUService.IsRuning) { HDDTUService.Stop(); if (!HDDTUService.IsRuning) { TraceManager.AppendDebug("DTU通信器已经关闭"); } else { TraceManager.AppendErrMsg("DTU控制器关闭失败"); } } // DTU缓存管理器 if (DTUCacheManager.IsRuning) { DTUCacheManager.Stop(); if (!DTUCacheManager.IsRuning) { TraceManager.AppendDebug("DTU缓存管理器已经关闭"); } else { TraceManager.AppendErrMsg("DTU缓存管理器关闭失败"); } } //数据库工作器 if (DBWorker.IsRuning) { DBWorker.Stop(); if (!DBWorker.IsRuning) { TraceManager.AppendDebug("数据库工作器已经关闭"); } else { TraceManager.AppendErrMsg("数据库工作器关闭失败"); } } // 日志管理器 if (TraceManager.IsRuning) { TraceManager.Stop(); } } catch { } IsRuning = false; }
public void Start(out string errMsg) { errMsg = ""; if (IsRuning) { return; } try { TraceManager.Start(TriggerTrace); // 环境检查 if (!EnvChecker.Check(out errMsg)) { return; } TraceManager.AppendDebug("环境检查通过"); //数据库工作服务打开 if (DBWorker.IsRuning) { DBWorker.Stop(); } DBWorker.Start(); if (DBWorker.IsRuning) { TraceManager.AppendDebug("数据库工作器已经打开"); } else { errMsg = "数据库工作器打开失败"; TraceManager.AppendErrMsg(errMsg); Stop(); return; } // 打开DTU缓存管理器 if (DTUCacheManager.IsRuning) { DTUCacheManager.Stop(); } DTUCacheManager.Start(); if (DTUCacheManager.IsRuning) { TraceManager.AppendDebug("DTU缓存管理器已经打开"); } else { errMsg = "DTU缓存管理器打开失败"; TraceManager.AppendErrMsg(errMsg); Stop(); return; } // DTU通信器 if (HDDTUService.IsRuning) { HDDTUService.Stop(); } HDDTUService.Start(out string err); if (HDDTUService.IsRuning) { TraceManager.AppendDebug("DTU监听器已经打开"); } else { errMsg = "DTU控制器打开失败:" + err; TraceManager.AppendErrMsg(errMsg); Stop(); return; } // DTU控制器 if (DTUController.IsRuning) { DTUController.Stop(); } DTUController.Start(); if (DTUController.IsRuning) { TraceManager.AppendDebug("DTU控制器已经打开"); } else { errMsg = "DTU控制器打开失败"; TraceManager.AppendErrMsg(errMsg); Stop(); return; } // DTU监听器 if (DTUListener.IsRuning) { DTUListener.Stop(); } DTUListener.Start(); if (DTUListener.IsRuning) { TraceManager.AppendDebug("DTU监听器已经打开"); } else { errMsg = "DTU监听器打开失败"; TraceManager.AppendErrMsg(errMsg); Stop(); return; } } catch (Exception e) { errMsg = e.Message; Stop(); return; } IsRuning = true; }
private void DtuListUpdate(DTUInfo[] dtuInfos) { if (dtuInfos == null || dtuInfos.Length == 0) { return; } string dtuIDs = "'第一个补个位'"; string setOnlineSQL = ""; foreach (DTUInfo dtu in dtuInfos) { if (dtu.IsActive == 1) { setOnlineSQL += string.Format(@" update DTUBase set [是否使用] ={0}, [是否在线] ={1}, [登录时间] = '{2}', [最后注册时间] ='{3}', [终端IP地址] ='{4}', [终端端口] ={5}, [网关IP地址] ='{6}', [网关端口] ={7} where [终端登录号码] = '{8}'", dtu.IsUsed, dtu.IsActive, dtu.ActiveTime, dtu.LastRegisterTime, dtu.TerminalIP, dtu.TerminalPort, dtu.GatewayIP, dtu.GatewayPort, dtu.ID); dtuIDs += "'" + dtu.ID + "'"; } } string setAllOfflineSQL = string.Format(@"UPDATE DTUBase SET 是否在线 =0;"); // 注意先复位先更新 DBUtil.ExecuteNonQuery(setOnlineSQL, out string errMsg); if (!string.IsNullOrEmpty(errMsg)) { TraceManager.AppendErrMsg("DTU列表更新到数据库失败:" + errMsg); return; } DataTable dt = new DataTable(); string querySQL = @"select * from DTUBase where 终端登录号码 in (" + dtuIDs + ");"; // string querySQL = @"select * from DTUBase;"; dt = DBUtil.ExecuteDataTable(querySQL, out errMsg); if (!string.IsNullOrEmpty(errMsg)) { TraceManager.AppendErrMsg("DTU列表从数据库加载时出错" + errMsg); return; } List <DTUInfo> dbDtus = new List <DTUInfo>(); foreach (DataRow dr in dt.Rows) { DTUInfo dtu = new DTUInfo(); dtu.DBID = DataUtil.ToInt(dr["ID"]); dtu.ID = DataUtil.ToString(dr["终端登录号码"]); dtu.Name = DataUtil.ToString(dr["名称"]); dtu.Description = DataUtil.ToString(dr["描述"]); dtu.FactoryName = DataUtil.ToString(dr["DTU厂家"]); dtu.Model = DataUtil.ToString(dr["DTU型号"]); dtu.WorkType = DataUtil.ToString(dr["DTU工作方式"]); dtu.Protocol = DTUInfo.GetProtocol(DataUtil.ToString(dr["通信协议"])); dtu.IsUsed = DataUtil.ToInt(dr["是否使用"]); dtu.IsActive = DataUtil.ToInt(dr["是否在线"]); dtu.ActiveTime = DataUtil.ToDateString(dr["登录时间"]); dtu.LastRegisterTime = DataUtil.ToDateString(dr["最后注册时间"]); dtu.TerminalIP = DataUtil.ToString(dr["终端IP地址"]); dtu.TerminalPort = DataUtil.ToInt(dr["终端端口"]); dtu.GatewayIP = DataUtil.ToString(dr["网关IP地址"]); dtu.GatewayPort = DataUtil.ToInt(dr["网关端口"]); dbDtus.Add(dtu); } // 同步到内存 if (dbDtus.Count > 0) { DTUCacheManager.OperDTUCache(DTUCacheManager.OPeratingType.UpdateBSInfoMulti, dbDtus.ToArray(), null); } }