borntonag
Power Member
Olá a todos.
Ando a dar os primeiros passos em Lua e estou aqui com um desafio na programação de um alarme.
Recebo do mesmo uma string (strData) que pode conter várias informações diferentes.
No caso em que tento armar o alarme e ele verifica se todas as zonas estou fechadas ou existe alguma aberta recebo uma string composta por um comando tipo "ERNN" em que o NN se for 00 significa que todas as zonas estão fechadas e arma o alarme ou 01, 02, etc. se a zona 1, zona 2, etc. estiver aberta e apresenta uma mensagem para fechar a respectiva zona.
Como posso separar a string para conseguir isolar o valor de NN numa variável? Este valor está em hexadecimal e teria de o converter para decimal.
É que se tal for possível isto resume-se a um ciclo e não uma secção de código para cada zona que o alarme tenha.
Exemplo:
Esbocei qualquer coisa como:
Ando a dar os primeiros passos em Lua e estou aqui com um desafio na programação de um alarme.
Recebo do mesmo uma string (strData) que pode conter várias informações diferentes.
No caso em que tento armar o alarme e ele verifica se todas as zonas estou fechadas ou existe alguma aberta recebo uma string composta por um comando tipo "ERNN" em que o NN se for 00 significa que todas as zonas estão fechadas e arma o alarme ou 01, 02, etc. se a zona 1, zona 2, etc. estiver aberta e apresenta uma mensagem para fechar a respectiva zona.
Como posso separar a string para conseguir isolar o valor de NN numa variável? Este valor está em hexadecimal e teria de o converter para decimal.
É que se tal for possível isto resume-se a um ciclo e não uma secção de código para cada zona que o alarme tenha.
Exemplo:
Código:
for Arming in string.gmatch(strData, "ER00") do
C4:SendToProxy(5001, "DISPLAY_TEXT", "<text>Preparado para armar, aguarde...</text>")
end
for Arming_1 in string.gmatch(strData, "ER01") do
C4:SendToProxy(5001, "DISPLAY_TEXT", "<text>Impossivel armar. Zona 1 aberta.</text>")
end
for Arming_2 in string.gmatch(strData, "ER02") do
C4:SendToProxy(5001, "DISPLAY_TEXT", "<text>Impossivel armar. Zona 2 aberta.</text>")
end
Esbocei qualquer coisa como:
Código:
-- ler string e separar ER de NN e guardar numa variável, por exemplo, ER_hex
-- converter NN_hex para NN_dec
if NN_dec == 00
C4:SendToProxy(5001, "DISPLAY_TEXT", "<text>Preparado para armar, aguarde...</text>")
else
C4:SendToProxy(5001, "DISPLAY_TEXT", "<text>Impossivel armar. Zona " .. NN_dec .. "aberta.</text>")
end