98 lines
2.4 KiB
Lua
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 |