Migliorata simulazione allarmi (lista di allarmia ttivi)

This commit is contained in:
Samuele Locatelli
2022-03-07 12:37:24 +01:00
parent 172ec0b364
commit f956146e4e
2 changed files with 37 additions and 6 deletions
@@ -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<DisplayDataDTO>();
@@ -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<string> --> allarmi
if (!string.IsNullOrEmpty(currArgs.newMessage))
{
try
{
var alarmList = JsonConvert.DeserializeObject<List<string>>(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(() =>
{
+17 -6
View File
@@ -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<string> activeAlarms = new List<string>();
//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<String> 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
{