diff --git a/MP.MONO.DECODER/AlarmManager.cs b/MP.MONO.DECODER/AlarmManager.cs index 16263e6..d42852f 100644 --- a/MP.MONO.DECODER/AlarmManager.cs +++ b/MP.MONO.DECODER/AlarmManager.cs @@ -40,19 +40,36 @@ namespace MP.MONO.DECODER state["currVal"] = 0; } - public static void processData(List newStatus) + public static List processData(List newStatus) { - // !!!FIXME TODO + List answ = new List(); + // processo tutti i valori e recupero allarmi modificati foreach (var item in newStatus) { state["currVal"] = item; state.DoFile(luaPath); alarmStatus = state.GetString("alarmStatus"); bool.TryParse(state.GetString("valueChanged"), out valueChanged); - Console.WriteLine($"Changed: {valueChanged}"); - Console.WriteLine(alarmStatus); - } + if (valueChanged) + { + Console.WriteLine($"Changed: {valueChanged}"); + Console.WriteLine(alarmStatus); + LuaTable tabActive = state.GetTable("alarmListActive"); + List activeList = new List(); + foreach (var allarme in tabActive.Values) + { + //activeList.Add($"{allarme}"); + answ.Add($"{allarme}"); + } + //// costruisco allarmi ordinati + //foreach (var allarme in activeList.OrderBy(x => x).ToList()) + //{ + // answ.Add(allarme); + //} + } + } + return answ; } } } diff --git a/MP.MONO.DECODER/Program.cs b/MP.MONO.DECODER/Program.cs index 7cad1e2..b84dde7 100644 --- a/MP.MONO.DECODER/Program.cs +++ b/MP.MONO.DECODER/Program.cs @@ -38,7 +38,11 @@ void AlarmValPipe_EA_NewMessage(object? sender, EventArgs e) var alarmList = JsonConvert.DeserializeObject>(currArgs.newMessage); if (alarmList != null) { - AlarmManager.processData(alarmList); + var activeAlarmList = AlarmManager.processData(alarmList); + // serializzo... + string serAlarms = JsonConvert.SerializeObject(activeAlarmList); + // invio sulla message pipeline corretta + alarmPipe.sendMessage(serAlarms); } } catch diff --git a/MP.MONO.DECODER/lua/AlarmDecoder.lua b/MP.MONO.DECODER/lua/AlarmDecoder.lua index fad190c..0df26c5 100644 --- a/MP.MONO.DECODER/lua/AlarmDecoder.lua +++ b/MP.MONO.DECODER/lua/AlarmDecoder.lua @@ -26,11 +26,11 @@ valueChanged = false -- se non รจ da NLua inizializzo variabili accessorie local function checkInit() if(callMode ~= 'NLua') then - alarmList = {"##Allarme01", "Allarme02", "AllarmeSilenziato03", "##Allarme04", "Allarme05", "Allarme06", "Allarme07", "##Allarme08"} + alarmList = {"##Allarme01", "Allarme02", "Allarme03", "##Allarme04", "Allarme05", "Allarme06", "Allarme07", "##Allarme08"} numAlarm = #alarmList -- valori status da testare lastVal = 0 - currVal = 3 + currVal = 255 end end @@ -60,9 +60,10 @@ end local function setupBitMask() for i = 1, numAlarm,1 do if(string.sub(alarmListTable[i],0,2)~='##') then - bitMask = math.floor(bitMask + 2^(i-1)) + bitMask = bitMask + 2^(i-1) end end + bitMask = math.tointeger(bitMask) end -- confronto lastVal e currVal @@ -82,17 +83,23 @@ end local function checkActiveAlarms() + local hasAlarms = 0 for i = 1, numAlarm do bTest = testBit(valMask(currVal),i) if(bTest) then - alarmListActive[i]=alarmListTable[i] + alarmListActive[#alarmListActive+1]=string.format("%03d",i) ..' - '.. alarmListTable[i] + hasAlarms = 1 end end + -- ordino allarmi... + if(hasAlarms==1) then + table.sort(alarmListActive) + end end local function calcStatusVar() for k, v in pairs(alarmListActive) do - alarmStatus = alarmStatus .. k .. ' - ' .. v .. ' | ' + alarmStatus = alarmStatus .. v .. ' | ' end if(#alarmStatus == 0) then