From 3cebac853bdf063f35f0d1db546e56575ea120d6 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 22 Mar 2022 19:56:00 +0100 Subject: [PATCH] update decoder x gestione decodifica preliminare parametri (manca DB) --- MP.MONO.DECODER/Program.cs | 97 ++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 56 deletions(-) diff --git a/MP.MONO.DECODER/Program.cs b/MP.MONO.DECODER/Program.cs index a3f04f4..468f4a4 100644 --- a/MP.MONO.DECODER/Program.cs +++ b/MP.MONO.DECODER/Program.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Configuration; using MP.MONO.Core; using MP.MONO.Core.CONF; +using MP.MONO.Core.DTO; using MP.MONO.Data; using MP.MONO.Data.Controllers; using MP.MONO.Data.DbModels; @@ -209,8 +210,10 @@ void AlarmsValPipe_EA_NewMessage(object? sender, EventArgs e) } } } - catch - { } + catch (Exception exc) + { + Log.Error($"Eccezione in AlarmsValPipe_EA_NewMessage:{Environment.NewLine}{exc}"); + } } } /// @@ -253,77 +256,59 @@ void ParamsValPipe_EA_NewMessage(object? sender, EventArgs e) #endif // verifico codici ricevuti - var paramsList = JsonConvert.DeserializeObject>(currArgs.newMessage); + var paramsList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (paramsList != null) { - // variabili accessorie - List activeAlarmList = new List(); - List alarmLogList = new List(); - - // rileggo da REDIS la conf attuale allarmi da area ALARMS_SETT_KEY, altrimenti uso quella letta inizialmente da conf base - List? currAlarmsConf = new List(); - string rawData = redisDb.StringGet(Constants.ALARMS_SETT_KEY); - // se trovati uso questi... + // recupero elenco parametri salvati in redis... + List? redisParamConf = new List(); + List updatedParams = new List(); + string rawData = redisDb.StringGet(Constants.PARAMS_CONF_KEY); if (!string.IsNullOrEmpty(rawData)) { - currAlarmsConf = JsonConvert.DeserializeObject>(rawData); - } - // altrimenti uso quelli di default inizialmente letti - else - { - currAlarmsConf = alarmsConf; - } - if (currAlarmsConf != null) - { - // ciclo x ogni bank di allarmi configurato - foreach (var alarmData in currAlarmsConf) + redisParamConf = JsonConvert.DeserializeObject>(rawData); + // se ho i parametri... + if (redisParamConf != null) { - // recupero valore allarme - var bankVal = paramsList.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 = AlarmsManager.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) + // ciclo x ogni valore ricevuto da message service... + foreach (var item in paramsList) { - alarmData.alarmsState[0] = actVal; - // aggiungo... - activeAlarmList.AddRange(bankAlarmList); - - AlarmLogModel newAlarm = new AlarmLogModel() + // cerco il parametro corrispondente... + var currParam = redisParamConf.FirstOrDefault(x => x.Title == item.Key); + if (currParam != null) { - 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); + currParam.ValueNum = item.Value; + currParam.Value = $"{item.Value.ToString(currParam.DisplFormat)}"; + // aggiungo a lista... + updatedParams.Add(currParam); + } } } } - // salvo status aggiornato allarme... - redisDb.StringSet(Constants.ALARMS_SETT_KEY, JsonConvert.SerializeObject(currAlarmsConf)); + //// salvo status aggiornato parametri... + //redisDb.StringSet(Constants.PARAMS_CURR_KEY, JsonConvert.SerializeObject(redisParamConf)); + + string updRawVal = JsonConvert.SerializeObject(redisParamConf); + + // invio sulla message pipeline corretta TUTTI i parametri aggiornati serializzati + paramsPipe.saveAndSendMessage(Constants.PARAMS_CURR_KEY, updRawVal); - // serializzo l'elenco allarmi... - string serAlarms = "[]"; - serAlarms = JsonConvert.SerializeObject(activeAlarmList); - // invio sulla message pipeline corretta TUTTI gli allarmi serializzati - alarmsPipe.saveAndSendMessage(Constants.ALARM_CURR_KEY, serAlarms); if (dbController != null) { - // salvo nel DB lo stato dei bank di allarme - foreach (var dbItem in alarmLogList) - { - _ = dbController.AlarmLogInsert(dbItem).Result; - } + // effettuo update in DB se ho + //// salvo nel DB lo stato dei bank di allarme + //foreach (var dbItem in alarmLogList) + //{ + // _ = dbController.AlarmLogInsert(dbItem).Result; + //} } } } - catch - { } + catch (Exception exc) + { + Log.Error($"Eccezione in ParamsValPipe_EA_NewMessage:{Environment.NewLine}{exc}"); + } } }