Aggiornamento gestioen DECODER x allarmi e check variazioni
This commit is contained in:
@@ -11,7 +11,6 @@ namespace MP.MONO.DECODER
|
||||
public class AlarmManager
|
||||
{
|
||||
protected List<string> AlarmList = new List<string>();
|
||||
List<int> currAlarmStatus = new List<int>();
|
||||
protected static Lua state = new Lua();
|
||||
protected static string luaPath = "";
|
||||
public static string alarmStatus = "";
|
||||
@@ -20,40 +19,34 @@ namespace MP.MONO.DECODER
|
||||
|
||||
public AlarmManager()
|
||||
{
|
||||
// !!!FIXME TODO
|
||||
|
||||
#if false
|
||||
// fare vero setup da file... x ora è fake
|
||||
for (int i = 1; i < 16; i++)
|
||||
{
|
||||
AlarmList.Add($"Allarme{i:00}");
|
||||
}
|
||||
#endif
|
||||
currAlarmStatus.Add(0);
|
||||
|
||||
// preparo variabile x avvisare script che il modo è da NLua
|
||||
luaPath = Path.Combine(Directory.GetCurrentDirectory(), "lua", "AlarmDecoder.lua");
|
||||
#if FALSE
|
||||
state["alarmList"] = AlarmList;
|
||||
state["numAlarm"] = AlarmList.Count;
|
||||
#endif
|
||||
|
||||
#if false
|
||||
state.DoString(" callMode = 'NLua' ");
|
||||
// initi 0/0
|
||||
#if false
|
||||
state.DoString(" lastVal = 0 ");
|
||||
state.DoString(" currVal = 0 ");
|
||||
#endif
|
||||
#if true
|
||||
state["callMode"] = "NLua";
|
||||
state["lastVal"] = 0;
|
||||
state["currVal"] = 0;
|
||||
#endif
|
||||
|
||||
Log.Info("AlarmManager OK");
|
||||
Console.WriteLine("AlarmManager OK");
|
||||
}
|
||||
|
||||
public static List<string> processData(string prefix, List<string> alarmList, uint muteMask, uint disableMask, uint newStatus)
|
||||
/// <summary>
|
||||
/// Funzione chiamata LUA x calcolo status allarmi
|
||||
/// </summary>
|
||||
/// <param name="prefix"></param>
|
||||
/// <param name="alarmList"></param>
|
||||
/// <param name="muteMask"></param>
|
||||
/// <param name="disableMask"></param>
|
||||
/// <param name="lastVal"></param>
|
||||
/// <param name="currVal"></param>
|
||||
/// <returns></returns>
|
||||
public static List<string> processData(string prefix, List<string> alarmList, uint muteMask, uint disableMask, uint lastVal, ref uint currVal)
|
||||
{
|
||||
state["prefix"] = prefix;
|
||||
state["alarmList"] = alarmList;
|
||||
@@ -63,11 +56,13 @@ namespace MP.MONO.DECODER
|
||||
|
||||
List<string> answ = new List<string>();
|
||||
// invio dati aggiornati a LUA
|
||||
state["currVal"] = newStatus;
|
||||
state["lastVal"] = lastVal;
|
||||
state["currVal"] = currVal;
|
||||
|
||||
// FIXME TODO!!! fare invio banco allarmi correnti (SE fossero + banchi da config)
|
||||
state.DoFile(luaPath);
|
||||
alarmStatus = state.GetString("alarmStatus");
|
||||
// recupero NUOVO valore (filtrato) attuale da salvare
|
||||
currVal = (uint)state.GetNumber("lastVal");
|
||||
bool.TryParse(state.GetString("valueChanged"), out valueChanged);
|
||||
if (valueChanged)
|
||||
{
|
||||
|
||||
+23
-14
@@ -152,23 +152,32 @@ void AlarmValPipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
var bankVal = alarmList.FirstOrDefault(x => x.Key == alarmData.memAddr);
|
||||
uint actVal = !string.IsNullOrEmpty(bankVal.Key) ? bankVal.Value : 0;
|
||||
// valutare se dividere in 2 da 16... FIXME TODO
|
||||
var bankAlarmList = AlarmManager.processData(alarmData.memAddr, alarmData.messages, alarmData.silenceMask[0], alarmData.disableMask[0], actVal);
|
||||
// aggiungo...
|
||||
activeAlarmList.AddRange(bankAlarmList);
|
||||
|
||||
AlarmLogModel newAlarm = new AlarmLogModel()
|
||||
var bankAlarmList = AlarmManager.processData(alarmData.memAddr, alarmData.messages, alarmData.silenceMask[0], alarmData.disableMask[0], alarmData.alarmsState[0], ref actVal);
|
||||
// salvo nuovo valore in oggetto...
|
||||
if (alarmData.alarmsState[0] != actVal)
|
||||
{
|
||||
MachineId = MachineId,
|
||||
DtRif = DateTime.Now,
|
||||
MemAddress = bankVal.Key,
|
||||
Index = alarmData != null ? alarmData.index : 0,
|
||||
Status = alarmData != null ? (uint)bankVal.Value & alarmData.silenceMask[0] & alarmData.disableMask[0] : (uint)bankVal.Value,
|
||||
ValDecoded = bankAlarmList.Count > 0 ? string.Join(", ", bankAlarmList) : "All OK"
|
||||
};
|
||||
alarmLogList.Add(newAlarm);
|
||||
alarmData.alarmsState[0] = actVal;
|
||||
// aggiungo...
|
||||
activeAlarmList.AddRange(bankAlarmList);
|
||||
|
||||
AlarmLogModel newAlarm = new AlarmLogModel()
|
||||
{
|
||||
MachineId = MachineId,
|
||||
DtRif = DateTime.Now,
|
||||
MemAddress = bankVal.Key,
|
||||
Index = alarmData != null ? alarmData.index : 0,
|
||||
Status = alarmData != null ? (uint)bankVal.Value & alarmData.silenceMask[0] & alarmData.disableMask[0] : (uint)bankVal.Value,
|
||||
ValDecoded = bankAlarmList.Count > 0 ? string.Join(", ", bankAlarmList) : "All OK"
|
||||
};
|
||||
alarmLogList.Add(newAlarm);
|
||||
}
|
||||
}
|
||||
}
|
||||
// serializzo...
|
||||
|
||||
// salvo status aggiornato allarme...
|
||||
redisDb.StringSet(Constants.ALARMS_SETT_KEY, JsonConvert.SerializeObject(currAlarmsConf));
|
||||
|
||||
// serializzo l'elenco allarmi...
|
||||
string serAlarms = "All OK";
|
||||
if (activeAlarmList.Count > 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user