/// <summary> /// 解析报文 /// </summary> /// <param name="parameters"></param> /// <param name="msg"></param> /// <param name="startIndex"></param> /// <param name="isSequence"></param> internal DoublePointInformation(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSequence) : base(parameters, msg, startIndex, isSequence) { if (!isSequence) { startIndex += parameters.SizeOfIOA; /* skip IOA */ } /* parse DIQ (double point information with qualitiy) */ byte diq = msg[startIndex++]; value = (DoublePointValue)(diq & 0x03); quality = new QualityDescriptor((byte)(diq & 0xf0)); }
internal DoublePointInformation(ApplicationLayerParameters parameters, byte[] msg, int startIndex, bool isSequence) : base(parameters, msg, startIndex, isSequence) { if (!isSequence) { startIndex += parameters.SizeOfIOA; /* skip IOA */ } if ((msg.Length - startIndex) < GetEncodedSize()) { throw new ASDUParsingException("Message too small"); } /* parse DIQ (double point information with qualitiy) */ byte diq = msg[startIndex++]; value = (DoublePointValue)(diq & 0x03); quality = new QualityDescriptor((byte)(diq & 0xf0)); }
/// <summary> /// 创建 /// </summary> /// <param name="ioa"></param> /// <param name="value"></param> /// <param name="quality"></param> /// <param name="timestamp"></param> public DoublePointWithCP56Time2a(int ioa, DoublePointValue value, QualityDescriptor quality, CP56Time2a timestamp) : base(ioa, value, quality) { this.timestamp = timestamp; }
/// <summary> /// 使用地址、值、品质描述词创建双点信息 /// </summary> /// <param name="ioa"></param> /// <param name="value"></param> /// <param name="quality"></param> public DoublePointInformation(int ioa, DoublePointValue value, QualityDescriptor quality) : base(ioa) { this.value = value; this.quality = quality; }