private void Connection_Mysql() { while (myWorkState) { TimeSpan timeSpan = DateTime.Now.Subtract(ConnectionTime); if (timeSpan.TotalMilliseconds > 1000) { CaseSettings = MySqlMethod.CaseLoad(); var Alarmdata = MySqlMethod.AiConfig_Compare_Load(); foreach (var item in Alarmdata) { var caseSetting = CaseSettings.Where(g => g.CaseNo == item.CaseNo).ToList()[0]; var value = MySqlMethod.Ai64web(item); var nowdata = MySqlMethod.Alarm_Procedure(item, value); var Adata = AiConfigs.Where(g => g.PK == item.PK).ToList(); if (Adata.Count > 0) { if (item.CompareType != Adata[0].CompareType) { switch (item.CompareType) { case 0: //上限 { LineNotifyClass lineNotifyClass = new LineNotifyClass(); lineNotifyClass.LineNotifyFunction(caseSetting.NotifyToken, $"\r案場名稱: {caseSetting.TitleName}\r點位名稱: {item.AiName}\r超過上限值: {item.AiMax}\r目前數值為 {nowdata}"); } break; case 1: //正常 { LineNotifyClass lineNotifyClass = new LineNotifyClass(); lineNotifyClass.LineNotifyFunction(caseSetting.NotifyToken, $"\r案場名稱: {caseSetting.TitleName}\r點位名稱: {item.AiName}\r上限值: {item.AiMax}\r下限值: {item.AiMin}\r恢復正常,目前數值為 {nowdata}"); } break; case 2: //下限 { LineNotifyClass lineNotifyClass = new LineNotifyClass(); lineNotifyClass.LineNotifyFunction(caseSetting.NotifyToken, $"\r案場名稱: {caseSetting.TitleName}\r點位名稱: {item.AiName}\r低於下限值: {item.AiMin}\r目前數值為 {nowdata}"); } break; } } } } AiConfigs = Alarmdata; ConnectionTime = DateTime.Now; } else { Thread.Sleep(80); } } }
public Form1() { InitializeComponent(); Log.Logger = new LoggerConfiguration() .WriteTo.Console() .WriteTo.File($"{AppDomain.CurrentDomain.BaseDirectory}\\log\\log-.txt", rollingInterval: RollingInterval.Day, outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}") .CreateLogger(); //宣告Serilog初始化 MySqlSetting = InitialMethod.MySqlLoad(); mySqlMethod = new MySqlMethod(MySqlSetting); mySqlComponent = new MySqlComponent(mySqlMethod); mySqlComponent.MyWorkState = true; MySqlAlarmComponent = new MySqlAlarmComponent(mySqlMethod); MySqlAlarmComponent.MyWorkState = true; timer1.Interval = 1000; timer1.Enabled = true; }
protected void Connection_Mysql() { while (myWorkState) { TimeSpan timeSpan = DateTime.Now.Subtract(ConnectionTime); if (timeSpan.TotalMilliseconds > 1000) //每一秒查詢動作 { var casevalue = MySqlMethod.CaseLoad(); foreach (var caseitem in casevalue) { if (caseitem.NotifyTypeEnum != 0)// 檢查是否使用發報功能 0 =不使用 { var aivalue = MySqlMethod.AiLoad(caseitem); foreach (var aiitem in aivalue) { if (aiitem.NotifyFlag) //AI點位需要發報 { if (MySqlMethod.AI64Load(aiitem)) //檢查即時數值是否超過時間 { var TimeValue = MySqlMethod.Ai_Time(aiitem); //檢查發報數值是否達到 if (TimeValue == null || TimeValue >= aiitem.TimeoutSpan) { NotifyTypeEnum notifyTypeEnum = (NotifyTypeEnum)caseitem.NotifyTypeEnum; switch (notifyTypeEnum) { case NotifyTypeEnum.None: break; case NotifyTypeEnum.Line: { LineNotifyClass lineNotifyClass = new LineNotifyClass(); lineNotifyClass.LineNotifyFunction(caseitem.NotifyToken, $"設備名稱:{aiitem.AiName} \r最後上傳時間 : {MySqlMethod.AI_LastTime(aiitem)}\r上傳逾時請檢查"); } break; case NotifyTypeEnum.Telegram: { TelegramBotClass telegramBotClass = new TelegramBotClass(caseitem.NotifyApi) { Chat_ID = caseitem.NotifyToken }; telegramBotClass.Send_Message_Group($"設備名稱:{aiitem.AiName} \r最後上傳時間 : {MySqlMethod.AI_LastTime(aiitem)}\r上傳逾時請檢查"); } break; } MySqlMethod.UpdataAi_Time(aiitem, true); } } else { MySqlMethod.UpdataAi_Time(aiitem, false); } } } var electricvalue = MySqlMethod.ElectricLoad(caseitem); foreach (var electricitem in electricvalue) { if (electricitem.NotifyFlag)//電表點位需要發報 { if (MySqlMethod.ElectricMeterLoad(electricitem)) { var TimeValue = MySqlMethod.ElectricMeter_Time(electricitem); if (TimeValue == null || TimeValue >= electricitem.TimeoutSpan) { NotifyTypeEnum notifyTypeEnum = (NotifyTypeEnum)caseitem.NotifyTypeEnum; switch (notifyTypeEnum) { case NotifyTypeEnum.None: break; case NotifyTypeEnum.Line: { LineNotifyClass lineNotifyClass = new LineNotifyClass(); lineNotifyClass.LineNotifyFunction(caseitem.NotifyToken, $"設備名稱:{electricitem.ElectricName} \r最後上傳時間 : {MySqlMethod.ElectricMeter_LastTime(electricitem)}\r上傳逾時請檢查"); } break; case NotifyTypeEnum.Telegram: { TelegramBotClass telegramBotClass = new TelegramBotClass(caseitem.NotifyApi) { Chat_ID = caseitem.NotifyToken }; telegramBotClass.Send_Message_Group($"設備名稱:{electricitem.ElectricName} \r最後上傳時間 : {MySqlMethod.ElectricMeter_LastTime(electricitem)}\r上傳逾時請檢查"); } break; } MySqlMethod.UpdataElectricMeter_Time(electricitem, true); } } else { MySqlMethod.UpdataElectricMeter_Time(electricitem, false); } } } } } ConnectionTime = DateTime.Now; } else { Thread.Sleep(80); } } }
public MySqlComponent(MySqlMethod mySqlMethod) { InitializeComponent(); MySqlMethod = mySqlMethod; }
public MySqlAlarmComponent(MySqlMethod mySqlMethod) { InitializeComponent(); MySqlMethod = mySqlMethod; AiConfigs = MySqlMethod.AiConfig_Compare_Load(); }
/// <summary> /// 時控 /// </summary> /// <param name="groupIndex">群組編號</param> /// <param name="DataSource">資料庫位址</param> /// <param name="InitialCatalog">資料庫名稱</param> /// <param name="UserID">帳號</param> /// <param name="Password">密碼</param> public TimeControlClass(int groupIndex, string DataSource, string InitialCatalog, string UserID, string Password) { GroupIndex = groupIndex; MySqlMethod = new MySqlMethod(GroupIndex, DataSource, InitialCatalog, UserID, Password); MySqlMethod.CheckDataTableExistFunction(); }