void ExecuteRefreshCommand() { Alarms.Clear(); foreach (var alarm in App.Alarms) { Alarms.Add(alarm); } }
public void SetAlarms(IEnumerable <Alarm> newAlarms) { Alarms.Clear(); foreach (var alarm in newAlarms) { Alarms.Add(alarm); } }
public override void ReverseInit(object returnedData) { base.ReverseInit(returnedData); if ((bool)returnedData) { Alarms.Clear(); CreateLists(); } }
private void LoadAlarmSettingsVersion0() { // TODO: setting versioning Alarms.Clear(); // we are trying to load setting for the first time => there is nothing // when versioning will be supported check mechanism should be better // or someone delted the settings.dat file for example. if (Windows.Storage.ApplicationData.Current.LocalSettings.Values.ContainsKey(AlarmsKey) == false) { return; } var settingsStr = Windows.Storage.ApplicationData.Current.LocalSettings.Values[AlarmsKey] as string; var alarmsJson = JsonValue.Parse(settingsStr).GetArray(); foreach (var alarmJsonValue in alarmsJson) { var alarmJson = alarmJsonValue.GetObject(); var alarm = new BaseAlarmSetting(); alarm.Id = int.Parse(alarmJson[JsonId].GetString()); alarm.Enabled = Boolean.Parse(alarmJson[JsonEnabled].GetString()); alarm.Time = new TimeSpan(long.Parse(alarmJson[JsonTime].GetString())); alarm.DaysOfWeek = (DayOfWeekType)int.Parse(alarmJson[JsonDaysOfWeek].GetString()); alarm.AudioFilename = alarmJson[JsonAudioFilename].GetString(); alarm.ImageFilename = alarmJson[JsonImageFilename].GetString(); alarm.Occurrence = (OccurrenceType)Enum.Parse(typeof(OccurrenceType), alarmJson[JsonOccurrence].GetString()); // Fix: serialization of DateTimeOffset was missing. I do not want to change "date version" so I just check whether key is available here. if (alarmJson.ContainsKey(JsonDateTimeOffset)) { alarm.DateTimeOffset = DateTimeOffset.Parse(alarmJson[JsonDateTimeOffset].GetString(), System.Globalization.CultureInfo.InvariantCulture); } Alarms.Add(alarm); } }
public void StartDetect() { Task.Run(() => { Task.Run(() => { while (true) { Console.WriteLine("计算: " + FrameCount + " 采集: " + CapCount + "显示: " + DispCount + " 图片队列: " + ImageQueue.Count); FrameCount = 0; CapCount = 0; DispCount = 0; CurrentLoopCount = serialComm.LoopCount; Thread.Sleep(1000); } }); AlgorithmResult[] algorithmResults; while (DetectFlag) { Task.Run(() => { Image <Bgr, byte> image; if (ImageQueue.TryDequeue(out image)) { stDetectParam = DetectParam.GetSt(); AlarmRecord.SetRange(AlarmParam.PixelRange, AlarmParam.YRange); App.Current?.Dispatcher?.Invoke(() => { if (AlarmRecord.TotalLoopCount != AlarmParam.TotalLoopCount) { AlarmRecord.TotalLoopCount = AlarmParam.TotalLoopCount; Alarms.Clear(); AsyncSaveObject("Alarms", Alarms); } }); algorithmResults = Algorithm.DetectImage(image.Ptr, stDetectParam); List <AlgorithmResult> results = new List <AlgorithmResult>(algorithmResults); results.ForEach(result => { if (result.bStop != 0 || result.bWidthReachStop != 0) { DrawRectOnScreen(result.xPos, result.yPos); AddResultToStatistics(result.xPos, result.yPos, image.Clone()); } }); lock (this) { if (detectResultStatistics.Count > 0) { int avgX = 0; int avgY = 0; DateTime beginTime = DateTime.MinValue; DetectResultStatistic detectResultStatistic = null; TimeSpan maxDuration = FindMaxDuration(out avgX, out avgY, out beginTime, out detectResultStatistic); if (avgX == -1) { return; } float length = (float)((maxDuration.Seconds + maxDuration.Milliseconds / 1000.0) * AlarmParam.Velocity); DateTime latestTime = FindLatestTime(); if (DateTime.Now - latestTime > AlarmParam.MaxErrorTime) { DetectState = DetectResultState.皮带正常; AlarmHeadFlag = true; AlarmRecord.LoopOffset = LoopOffset; if (SaveFlag) { SaveFlag = false; SaveAlarmVideo(); } detectResultStatistics.Clear(); } else if (maxDuration > AlarmParam.MaxHurtTime)//逻辑判断有超过maxHurtTime时间,此时发生撕伤警报 { DetectState = DetectResultState.撕伤; AddAlarmToStatistics(avgX, avgY, length, detectResultStatistic); } else if (maxDuration > AlarmParam.MaxDivTime)//逻辑判断有超过maxDivTime时间,此时发生撕裂警报 { DetectState = DetectResultState.撕裂; } } } FrameCount++; } }); Thread.Sleep(10); } }); }