/// <summary> /// 创建人:张辽阔 /// 创建时间:2017-06-07 /// 创建记录:停止看门狗 /// </summary> public static void StopWatchdog() { lock (WatchdogOperation_Lock) { if (IsStartedWatchdog) { try { string message; if (Watchdog.GetInstance().Stop(out message)) { IsStartedWatchdog = false; IsWarnNotStartWatchdog = false; LogHelper.WriteWatchDogLog("停止看门狗成功!"); //停止定时器 WatchdogTimerOperation.WatchdogTimerStop(); LogHelper.WriteWatchDogLog("停止定时器成功!"); } else { LogHelper.WriteWatchDogLog(message); } } catch (Exception e) { LogHelper.WriteLog(e); } } else { LogHelper.WriteWatchDogLog("看门狗已经停止,无法再次停止!"); } } }
/// <summary> /// 创建人:张辽阔 /// 创建时间:2017-06-09 /// 创建记录:重新启动看门狗 /// </summary> /// <param name="wgID">网关ID</param> public static void ReStartWatchdog(int wgID) { if (wgID <= 0) { LogHelper.WriteWatchDogLog("WGID错误,未能重新启动看门狗!"); return; } lock (WatchdogOperation_Lock) { if (IsStartWatchdog) { try { int?maxTemperTime = GetMaxTemperatureTimeByWGID(wgID); if (maxTemperTime.HasValue) { //最大温度采集时间间隔毫秒数 double resetTimeMillisecond = maxTemperTime.Value * 60 * 1000; if (resetTimeMillisecond > MaxinumResetTime) { LogHelper.WriteWatchDogLog("最大温度采集时间间隔(" + resetTimeMillisecond + "毫秒)大于看门狗支持的最大重启时间(" + MaxinumResetTime + "毫秒),放弃重新设置看门狗!"); return; } //计算看门狗重启毫秒数 double tempResetTime = MaxTemperatureTimeMulti * resetTimeMillisecond; if (tempResetTime < MininumResetTime) { LogHelper.WriteWatchDogLog("设置看门狗重启时间的值小于" + MininumResetTime + "毫秒,放弃重新设置看门狗!"); return; } if (tempResetTime > MaxinumResetTime) { tempResetTime = MaxinumResetTime; } uint resetTime = Convert.ToUInt32(Math.Floor(tempResetTime)); LogHelper.WriteWatchDogLog("设置看门狗重启时间为“" + resetTime + "”毫秒!"); string message; if (Watchdog.GetInstance().Stop(out message)) { if (Watchdog.GetInstance().Start(resetTime, out message)) { IsStartedWatchdog = true; LogHelper.WriteWatchDogLog("重新设置看门狗成功!"); //启动定时器 WatchdogTimerOperation.WatchdogTimerStart(wgID, resetTimeMillisecond); LogHelper.WriteWatchDogLog("重新设置定时器成功!"); } else { LogHelper.WriteWatchDogLog(message); } } else { LogHelper.WriteWatchDogLog(message); } } else { LogHelper.WriteWatchDogLog("最大温度采集时间为空!"); } } catch (Exception e) { LogHelper.WriteLog(e); } } else { if (!IsWarnNotStartWatchdog) { try { LogHelper.WriteWatchDogLog("设置不启动看门狗!"); StopWatchdog(); IsWarnNotStartWatchdog = true; } catch (Exception e) { LogHelper.WriteLog(e); } } } } }