public void Procesar(List <byte[]> datos) { //Procesa las variables de lectura foreach (byte[] var in datos) { int id = Globales.ObtenerValor(var[0], var[1]); IVariableHardware vHrd = variablesLectura.FirstOrDefault(v => v.Id == id); Globales.ProcesarVariable(ref vHrd, var); } }
public static void ProcesarVariable(ref IVariableHardware vHrd, byte[] var) { if (vHrd is VariableDigital <bool> ) { ((VariableDigital <bool>)vHrd).Valor = Convertir.Booleano(var[3], (int)ValorBooleano.Verdadero); } else if (vHrd is VariableAnaloga) { ((VariableAnaloga)vHrd).Valor = Globales.ObtenerValor(var[2], var[3]); } else if (vHrd is VariableEncoder) { VariableEncoder enc = (VariableEncoder)vHrd; if (Convertir.Booleano(var[2], (int)ValorBooleano.Verdadero)) { enc.Incrementar((var[3] - 0x20)); } else if (var[2] == (byte)ValorBooleano.Falso) { enc.Decrementar((var[3] - 0x20)); } } }