private static ValueData DeconstructValue(byte[] trame) { // Taille de la key codé sur 2 byte car c'est un ushort ushort keyCount = (ushort)BitConverter.ToInt16(trame, indiceTrame); indiceTrame += 2; string key = Encoding.ASCII.GetString(trame, indiceTrame, keyCount); indiceTrame += keyCount; // Type de data codé sur 1 byte byte dataTypeByte = trame[indiceTrame]; DataTypeTrameId dataType = (DataTypeTrameId)dataTypeByte; indiceTrame++; // Taille de la data codé sur 2 byte car c'est un ushort ushort dataCount = (ushort)BitConverter.ToInt16(trame, indiceTrame); indiceTrame += 2; object data = new object(); switch (dataType) { case DataTypeTrameId.Numeric: data = BitConverter.ToDouble(trame, indiceTrame); break; case DataTypeTrameId.Alphabetic: data = Encoding.ASCII.GetString(trame, indiceTrame, dataCount); break; case DataTypeTrameId.Boolean: data = BitConverter.ToBoolean(trame, indiceTrame); break; default: break; } return(new ValueData(key, dataType, data)); }
public ValueData(string key, DataTypeTrameId dataType, object data) { this.Key = key; this.DataType = dataType; this.Data = data; }