예제 #1
0
        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;
        }
예제 #2
0
        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;
        }
예제 #3
0
        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);
            }
        }