Files
mapo-mono/MP.MONO.DECODER/lua/AlarmDecoder.lua
T

98 lines
2.4 KiB
Lua

-- This is a one-line comment that ends at the end of the line
--[[ This a multi-line (long) [comment](http://www.lua.org/manual/5.1/manual.html#2.1)
that ends with this closing bracket --> ]]
--[=[ This is also a long comment ]=]
--[[---------------------------------------------------
Procedura decodifica Allarmi:
- ricezione tab elenco allarmi gestiti a bitmap, se ## = silenziati
- produzione var string con status finale risultati
- ricezione obj stato corrente x i vari allarmi
- decodifica x ogni info ricevuta dello stato allarmi relativo
- invio (salvataggio) stato allarmi tramite funzione
---------------------------------------------------]]--
-- ricezione da codice tab status allarmi, attenzione da C# è 0 based, qui è 1 based --> fix costruzione tabella
-- variabile semaforo callMode x chiamate locali o remote da NLua
callMode = callMode or ''
-- se non è da NLua inizializzo variabili accessorie
if(callMode ~= 'NLua')
then
alarmList = {"Allarme01", "Allarme02", "##Silenzio", "##Allarme04", "Allarme05", "Allarme06", "Allarme07", "##Allarme08"}
numAlarm = #alarmList
--print(alarmList)
end
alarmListTable={}
if numAlarm > 0 and alarmList[0] ~= nil
then
for i = numAlarm,1, -1
do
alarmListTable[i] = alarmList[i-1]
end
else
alarmListTable = alarmList
end
print('------------------------------')
for i = 1, numAlarm
do
print("AL"..i.." | "..alarmListTable[i])
end
--print('------------------------------')
--
--for i,val in pairs(alarmListTable) do
-- print("AL"..i.." | "..val)
--end
--print('------------------------------')
--
--for i,val in ipairs(alarmListTable) do
-- print("AL"..i.." | "..val)
--end
rawVal = 6
b0 = 1
b1 = 2
b2 = 4
--bVal = bit.tobit(rawVal)
--bHex = bit.tohex(rawVal)
--print(bit.band(bVal,b0))
--print(bit.band(bVal,b1))
--print(bit.band(bVal,b2))
--print(bHex)
--print('------------------------------')
--print(6&1 == 1)
--print(6&2 == 2)
--print(6&4 == 4)
--print(6&2 == 8)
--print(6&4 == 16)
--print('------------------------------')
--print(6|1)
--print(6|2)
--print(6|4)
--print(6|2)
--print(6|4)
--OR, XOR, AND = 1, 3, 4
--
--function bitoper(a, b, oper)
-- local r, m, s = 0, 2^31
-- repeat
-- s,a,b = a+b+m, a%m, b%m
-- r,m = r + m*oper%(s-a-b), m/2
-- until m < 1
-- return r
--end
--
--print(bitoper(6,3,OR)) --> 7
--print(bitoper(6,3,XOR)) --> 5
--print(bitoper(6,3,AND)) --> 2