// Static Methods // Delegate handler to create a new IEEE C37.118 digital value internal static IDigitalValue CreateNewValue(IDataCell parent, IDigitalDefinition definition, byte[] buffer, int startIndex, out int parsedLength) { IDigitalValue digital = new DigitalValue(parent, definition); parsedLength = digital.ParseBinaryImage(buffer, startIndex, 0); return(digital); }
/// <summary> /// Creates a new <see cref="DigitalValue"/>. /// </summary> /// <param name="parent">The <see cref="IDataCell"/> parent of this <see cref="DigitalValue"/>.</param> /// <param name="digitalDefinition">The <see cref="IDigitalDefinition"/> associated with this <see cref="DigitalValue"/>.</param> public DigitalValue(IDataCell parent, IDigitalDefinition digitalDefinition) : base(parent, digitalDefinition) { }
// Static Methods // Delegate handler to create a new IEEE 1344 digital value internal static IDigitalValue CreateNewValue(IDataCell parent, IDigitalDefinition definition, byte[] binaryImage, int startIndex, out int parsedLength) { IDigitalValue digital = new DigitalValue(parent, definition); parsedLength = digital.Initialize(binaryImage, startIndex, 0); return digital; }
private void SaveDeviceRecords(IConfigurationFrame configFrame, Device device, ScanParameters scanParams) { AdoDataConnection connection = scanParams.Connection; TableOperations <Measurement> measurementTable = new(connection); IConfigurationCell cell = configFrame.Cells[0]; // Add frequency SaveFixedMeasurement(m_deviceSignalTypes["FREQ"], device, measurementTable, scanParams, cell.FrequencyDefinition.Label); // Add dF/dt SaveFixedMeasurement(m_deviceSignalTypes["DFDT"], device, measurementTable, scanParams); // Add status flags SaveFixedMeasurement(m_deviceSignalTypes["FLAG"], device, measurementTable, scanParams); // Add analogs SignalType analogSignalType = m_deviceSignalTypes["ALOG"]; for (int i = 0; i < cell.AnalogDefinitions.Count; i++) { int index = i + 1; IAnalogDefinition analogDefinition = cell.AnalogDefinitions[i]; string signalReference = $"{device.Acronym}-{analogSignalType.Suffix}{index}"; // Query existing measurement record for specified signal reference - function will create a new blank measurement record if one does not exist Measurement measurement = measurementTable.QueryMeasurement(signalReference); string pointTag = scanParams.CreateIndexedPointTag(device.Acronym, analogSignalType.Acronym, index); measurement.DeviceID = device.ID; measurement.PointTag = pointTag; measurement.AlternateTag = analogDefinition.Label; measurement.Description = $"{device.Acronym} Analog Value {index} {analogDefinition.AnalogType}: {analogDefinition.Label}"; measurement.SignalReference = signalReference; measurement.SignalTypeID = analogSignalType.ID; measurement.Internal = true; measurement.Enabled = true; measurementTable.AddNewOrUpdateMeasurement(measurement); } // Add digitals SignalType digitalSignalType = m_deviceSignalTypes["DIGI"]; for (int i = 0; i < cell.DigitalDefinitions.Count; i++) { int index = i + 1; IDigitalDefinition digitialDefinition = cell.DigitalDefinitions[i]; string signalReference = $"{device.Acronym}-{digitalSignalType.Suffix}{index}"; // Query existing measurement record for specified signal reference - function will create a new blank measurement record if one does not exist Measurement measurement = measurementTable.QueryMeasurement(signalReference); string pointTag = scanParams.CreateIndexedPointTag(device.Acronym, digitalSignalType.Acronym, index); measurement.DeviceID = device.ID; measurement.PointTag = pointTag; measurement.AlternateTag = digitialDefinition.Label; measurement.Description = $"{device.Acronym} Digital Value {index}: {digitialDefinition.Label}"; measurement.SignalReference = signalReference; measurement.SignalTypeID = digitalSignalType.ID; measurement.Internal = true; measurement.Enabled = true; measurementTable.AddNewOrUpdateMeasurement(measurement); } // Add phasors SaveDevicePhasors(cell, device, measurementTable, scanParams); }