diff --git a/MP.MONO.UI/Components/AlarmsOverview.razor.cs b/MP.MONO.UI/Components/AlarmsOverview.razor.cs index 33c89bc..7f6d601 100644 --- a/MP.MONO.UI/Components/AlarmsOverview.razor.cs +++ b/MP.MONO.UI/Components/AlarmsOverview.razor.cs @@ -17,6 +17,7 @@ using MP.MONO.UI; using MP.MONO.UI.Shared; using MP.MONO.UI.Components; using MP.MONO.UI.Data; +using Newtonsoft.Json; namespace MP.MONO.UI.Components { @@ -32,6 +33,7 @@ namespace MP.MONO.UI.Components private void AlarmPipe_EA_NewMessage(object? sender, EventArgs e) { PubSubEventArgs currArgs = (PubSubEventArgs)e; +#if false if (currArgs.newMessage == "reset") { ListRecords = new List(); @@ -51,6 +53,24 @@ namespace MP.MONO.UI.Components } ListRecords.Add(newRec); ListRecords = ListRecords.OrderByDescending(x => x.Order).ToList(); + } +#endif + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + var alarmList = JsonConvert.DeserializeObject>(currArgs.newMessage); + ListRecords = alarmList.Select(x => new DisplayDataDTO() + { + IsNumeric = false, + Title = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}", + Value = x, + Order = ListRecords == null ? 0 : ListRecords.Count + }).ToList(); + } + catch + { } } InvokeAsync(() => { diff --git a/MachineSim/Program.cs b/MachineSim/Program.cs index 4ed323f..ca9cf4d 100644 --- a/MachineSim/Program.cs +++ b/MachineSim/Program.cs @@ -53,23 +53,34 @@ void saveAndSendMessage(string memKey, string value, string notifyChannel, strin } void simAlarms() { - int minPeriod = 10000; - int maxPeriod = 15000; + int minPeriod = 3000; + int maxPeriod = 10000; do { - int alarmCode = rand.Next(0, 255); + List activeAlarms = new List(); + //int alarmCode = rand.Next(0, 255); + int alarmCode = rand.Next(0, 160); // se >= 128 --> 0 (no alarm) alarmCode = alarmCode <= 127 ? alarmCode : 0; - saveAndSendMessage(mHash("Machine:Alarms:Current"), $"{alarmCode}", "allarms", $"{alarmCode}"); + for (int i = 0; i < 8; i++) + { + if ((alarmCode & (1 << i)) != 0) + { + activeAlarms.Add($"Alarm {i:000}"); + } + } + string rawData = JsonConvert.SerializeObject(activeAlarms); + // decodifico allarme e lo trasformo in List di allarmi attivi... + saveAndSendMessage(mHash("Machine:Alarms:Current"), rawData, "allarms", rawData); // attesa random Thread.Sleep(rand.Next(minPeriod, maxPeriod)); } while (true); } void simParameters() { - int minPeriod = 100; - int maxPeriod = 500; + int minPeriod = 50; + int maxPeriod = 300; do {