From a87fee41f5e65d0a125f5ff6f15a59b12fa5a6b4 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 21 Mar 2022 18:51:03 +0100 Subject: [PATCH] Riordino lua script x DECODER --- MP.MONO.DECODER/MP.MONO.DECODER.csproj | 12 +- MP.MONO.DECODER/Program.cs | 276 ++++-------------- MP.MONO.DECODER/lua/AlarmDecoder.lua | 12 - MP.MONO.DECODER/lua/{ => test}/ScratchPad.lua | 0 .../lua/{ => test}/ScratchPad_02.lua | 0 5 files changed, 55 insertions(+), 245 deletions(-) rename MP.MONO.DECODER/lua/{ => test}/ScratchPad.lua (100%) rename MP.MONO.DECODER/lua/{ => test}/ScratchPad_02.lua (100%) diff --git a/MP.MONO.DECODER/MP.MONO.DECODER.csproj b/MP.MONO.DECODER/MP.MONO.DECODER.csproj index 1054b9d..38c1ccd 100644 --- a/MP.MONO.DECODER/MP.MONO.DECODER.csproj +++ b/MP.MONO.DECODER/MP.MONO.DECODER.csproj @@ -32,15 +32,6 @@ - - Always - - - Always - - - Always - Always @@ -53,6 +44,9 @@ Always + + Always + Always diff --git a/MP.MONO.DECODER/Program.cs b/MP.MONO.DECODER/Program.cs index 467bc47..44db293 100644 --- a/MP.MONO.DECODER/Program.cs +++ b/MP.MONO.DECODER/Program.cs @@ -1,15 +1,14 @@ -using NLua; -using MP.MONO.DECODER; -using MP.MONO.Data; +using Microsoft.Extensions.Configuration; using MP.MONO.Core; -using StackExchange.Redis; -using Microsoft.Extensions.Configuration; -using Newtonsoft.Json; -using MP.MONO.Core.DTO; -using MP.MONO.Data.Controllers; -using NLog; -using MP.MONO.Data.DbModels; using MP.MONO.Core.CONF; +using MP.MONO.Data; +using MP.MONO.Data.Controllers; +using MP.MONO.Data.DbModels; +using MP.MONO.DECODER; +using Newtonsoft.Json; +using NLog; +using NLua; +using StackExchange.Redis; // See https://aka.ms/new-console-template for more information @@ -75,45 +74,29 @@ List? machineStatusConf = new List(); // gestione configurazioni da redis setupConf(); - -// inizializzo gestione messagePipe da Redis +/* -------------------------------- + * Setup Gestione ALLARMI + * --------------------------------*/ +// init classe gestione allarmi con LUA +AlarmManager alarmMan = new AlarmManager(); +// inizializzo gestione messagePipe da Redis x allarmi MessagePipe alarmPipe = new MessagePipe(redisConn, Constants.ALARM_M_QUEUE); MessagePipe alarmValPipe = new MessagePipe(redisConn, Constants.ALARM_ACT_VAL); // registro gestione eventi alarmValPipe.EA_NewMessage += AlarmValPipe_EA_NewMessage; +/* -------------------------------- + * Setup Gestione Parametri + * --------------------------------*/ + + + +/* -------------------------------- + * Funzioni / metodi accessori + * --------------------------------*/ /// -/// Recupero da redis le conf (es modi,stati,allarmi) +/// Gestione evento ricezione messaggio allarmi /// -void setupConf() -{ - // recupero valori e deserializzo - string rawData = ""; - - // machine conf - rawData = redisDb.StringGet(Constants.STATUS_CONF_KEY); - if (!string.IsNullOrEmpty(rawData)) - { - machineStatusConf = JsonConvert.DeserializeObject>(rawData); - } - - // machine mode - rawData = redisDb.StringGet(Constants.MODE_CONF_KEY); - if (!string.IsNullOrEmpty(rawData)) - { - machineModeConf = JsonConvert.DeserializeObject>(rawData); - } - - // allarmi, versione base... - rawData = redisDb.StringGet(Constants.ALARMS_CONF_KEY); - if (!string.IsNullOrEmpty(rawData)) - { - alarmsConf = JsonConvert.DeserializeObject>(rawData); - } -} - -// init classe gestione allarmi con LUA -AlarmManager alarmMan = new AlarmManager(); void AlarmValPipe_EA_NewMessage(object? sender, EventArgs e) { PubSubEventArgs currArgs = (PubSubEventArgs)e; @@ -196,195 +179,40 @@ void AlarmValPipe_EA_NewMessage(object? sender, EventArgs e) { } } } - -Lua state; -state = new Lua(); -// preparo variabile x avvisare script che il modo è da NLua -state.DoString(" callMode = 'NLua' "); - -int numTest = 0; -if (numTest == 1) +/// +/// Recupero da redis le conf (es modi,stati,allarmi) +/// +void setupConf() { - // inserisco dati in LUA... - List alarmList = new List(); - string alarmStatus = ""; - bool valueChanged = false; - string luaPath = Path.Combine(Directory.GetCurrentDirectory(), "lua", "AlarmDecoder.lua"); - state.NewTable("alarmListTable"); - LuaTable tabA = state.GetTable("alarmListTable"); + // recupero valori e deserializzo + string rawData = ""; - // aggiorno valori - alarmList = new List() { "Allarme01", "Allarme02", "##Allarme03", "Allarme04", "##Allarme05", "Allarme06", "Allarme07", "Allarme08" }; - state["alarmList"] = alarmList; - state["numAlarm"] = alarmList.Count; - - //state.DoString(@" - //function setupAlarms() - // for i = numAlarm,1, -1 - // do - // alarmListTable[i] = alarmList[i-1] - // end - //end - //"); - //var scriptFunc = state["setupAlarms"] as LuaFunction; - //var res2 = scriptFunc.Call(); - - // eseguo - state["lastVal"] = 0; - state["currVal"] = 3; - state.DoFile(luaPath); - alarmStatus = state.GetString("alarmStatus"); - bool.TryParse(state.GetString("valueChanged"), out valueChanged); - Console.WriteLine($"Changed: {valueChanged}"); - Console.WriteLine(alarmStatus); - //tabA = state.GetTable("alarmListActive"); - //foreach (var item in tabA.Values) - //{ - // Console.WriteLine(item); - //} - Thread.Sleep(800); - - state["currVal"] = 7; - state.DoFile(luaPath); - alarmStatus = state.GetString("alarmStatus"); - bool.TryParse(state.GetString("valueChanged"), out valueChanged); - Console.WriteLine($"Changed: {valueChanged}"); - Console.WriteLine(alarmStatus); - //tabA = state.GetTable("alarmListActive"); - //foreach (var item in tabA.Values) - //{ - // Console.WriteLine(item); - //} - Thread.Sleep(800); - - state["currVal"] = 15; - state.DoFile(luaPath); - alarmStatus = state.GetString("alarmStatus"); - bool.TryParse(state.GetString("valueChanged"), out valueChanged); - Console.WriteLine($"Changed: {valueChanged}"); - Console.WriteLine(alarmStatus); - //tabA = state.GetTable("alarmListActive"); - //foreach (var item in tabA.Values) - //{ - // Console.WriteLine(item); - //} - - Thread.Sleep(800); - - state["currVal"] = 0; - state.DoFile(luaPath); - alarmStatus = state.GetString("alarmStatus"); - bool.TryParse(state.GetString("valueChanged"), out valueChanged); - Console.WriteLine($"Changed: {valueChanged}"); - Console.WriteLine(alarmStatus); - //tabA = state.GetTable("alarmListActive"); - //foreach (var item in tabA.Values) - //{ - // Console.WriteLine(item); - //} - - //state.DoString("a={b={c=2}}"); - //LuaTable tabA = state.GetTable("a"); - //LuaTable tabB = state.GetTable("a.b"); - //state.DoString(" print(a) "); - - //foreach (var item in tabB) - //{ - // Console.WriteLine(item); - //} - //tabA = state.GetTable("alarmListActive"); - //foreach (var item in tabA.Values) - //{ - // Console.WriteLine(item); - //} + // machine conf + rawData = redisDb.StringGet(Constants.STATUS_CONF_KEY); + if (!string.IsNullOrEmpty(rawData)) + { + machineStatusConf = JsonConvert.DeserializeObject>(rawData); + } + // machine mode + rawData = redisDb.StringGet(Constants.MODE_CONF_KEY); + if (!string.IsNullOrEmpty(rawData)) + { + machineModeConf = JsonConvert.DeserializeObject>(rawData); + } + // allarmi, versione base... + rawData = redisDb.StringGet(Constants.ALARMS_CONF_KEY); + if (!string.IsNullOrEmpty(rawData)) + { + alarmsConf = JsonConvert.DeserializeObject>(rawData); + } } -else if (numTest == 2) -{ - static double Compute(double x) - { - return x * (x - 1); - - } - var myobj = new MyClass(); - myobj.IntegerProperty = 17; - state["var1"] = "someValue"; - state["obj"] = myobj; - state["compute"] = new Func(Compute); - // Will print "output: someValue" - state.DoString(" print('output: ' .. var1) "); - // Will print 18 - state.DoString(" print(obj.IntegerProperty + 1) "); - // Will print "Doing something: hello" - state.DoString(" obj:DoSomething('hello') "); - state.DoString(" obj:SaveData('redis:key:name','{John = 320, Mary = 340, Bob = 880, Rob = 860}') "); - - state.DoString("a={b={c=2}}"); - LuaTable tabA = state.GetTable("a"); - LuaTable tabB = state.GetTable("a.b"); - state.DoString(" print(a) "); - foreach (var item in tabA) - { - Console.WriteLine(item); - } - - foreach (var item in tabB) - { - Console.WriteLine(item); - } - // Will print "-0.1875" - state.DoString(" print(compute(0.25)) "); - // Reading values back - state.DoString(" x = compute(0.75) "); - state.DoString(" y = 2.0 * (obj.IntegerProperty * x) "); - - double x = state.GetNumber("x"); - double y = state.GetNumber("y"); - // Will print: x = -0.1875, y = -6.375 - Console.WriteLine($"x = {x}, y = {y}"); - - double val = 12.0; - state["x"] = val; // Create a global value 'x' - var resRaw = state.DoString("return 10 + x*(5 + 2)")[0]; - double res = 0; - double.TryParse($"{resRaw}", out res); - Console.WriteLine($"{res}"); - - - - state.DoString("y = 10 + x*(4 + 2)"); - var rawState = state["y"]; // Retrieve the value of y - double y2 = 0; - double.TryParse($"{rawState}", out y2); - Console.WriteLine($"{y2}"); - - state.DoString(@" - function ScriptFunc (val1, val2) - if val1 > val2 then - return val1 + 1 - else - return val2 - 1 - end - end - "); - var scriptFunc = state["ScriptFunc"] as LuaFunction; - if (scriptFunc != null) - { - var res2 = (long)scriptFunc.Call(3, 9).First(); - Console.WriteLine($"risultato script: {res2}"); - } - // LuaFunction.Call will also return a array of objects, since a Lua function - // can return multiple values - -} -else if (numTest == 99) -{ - string luaPath = Path.Combine(Directory.GetCurrentDirectory(), "lua", "prova.lua"); - state.DoFile(luaPath); -} +/* -------------------------------- + * MAIN + * --------------------------------*/ // Ciclo infinito x attesa chiusura con CTRL-C do diff --git a/MP.MONO.DECODER/lua/AlarmDecoder.lua b/MP.MONO.DECODER/lua/AlarmDecoder.lua index 822b17d..d8d95a8 100644 --- a/MP.MONO.DECODER/lua/AlarmDecoder.lua +++ b/MP.MONO.DECODER/lua/AlarmDecoder.lua @@ -119,17 +119,6 @@ local function displayTestInfo() end end --- calcolo maschera... -local function setupDisableMask() - if (callMode ~= 'NLua') then - for i = 1, numAlarm, 1 do - if (string.sub(alarmListTable[i], 0, 2) ~= '##') then - disableMask = disableMask + 2 ^ (i - 1) - end - end - disableMask = math.tointeger(disableMask) - end -end -- MAIN alarmListTable = {} @@ -138,7 +127,6 @@ alarmStatus = "" checkInit() setupTable() ---setupDisableMask() checkVariation() checkActiveAlarms() diff --git a/MP.MONO.DECODER/lua/ScratchPad.lua b/MP.MONO.DECODER/lua/test/ScratchPad.lua similarity index 100% rename from MP.MONO.DECODER/lua/ScratchPad.lua rename to MP.MONO.DECODER/lua/test/ScratchPad.lua diff --git a/MP.MONO.DECODER/lua/ScratchPad_02.lua b/MP.MONO.DECODER/lua/test/ScratchPad_02.lua similarity index 100% rename from MP.MONO.DECODER/lua/ScratchPad_02.lua rename to MP.MONO.DECODER/lua/test/ScratchPad_02.lua