private void InitializeStarter(IStarter starter, IDeviceContext deviceContext, int relayNumber, int channelNumber, byte[] data) { channelNumber++; int starterNumber; if (uint.Parse(deviceContext.ChannelNumberOfStarter1) == channelNumber) { starterNumber = 1; } else if (uint.Parse(deviceContext.ChannelNumberOfStarter2) == channelNumber) { starterNumber = 2; } else if (uint.Parse(deviceContext.ChannelNumberOfStarter3) == channelNumber) { starterNumber = 3; } else { return; } starter.StarterNumber = starterNumber; starter.ChannelNumber = channelNumber; if (deviceContext.SchemeTable.GetStarterRow(starterNumber) != null) { return; } var row = new DefaultStarterRow(); row.StarterId = starterNumber; if (starterNumber == 1) { row.StarterDescription = deviceContext.Starter1Description; } else if (starterNumber == 2) { row.StarterDescription = deviceContext.Starter2Description; } else if (starterNumber == 3) { row.StarterDescription = deviceContext.Starter3Description; } starter.StarterDescription = row.StarterDescription; deviceContext.SchemeTable.AddStarterRow(row); var addressOfLightingMode = (channelNumber - 1) * 12; var lightingModeValueValue = (ushort)(data[addressOfLightingMode] * 256 + data[addressOfLightingMode + 1]); if (LightingValueNameDictionary.ContainsKey(lightingModeValueValue)) { starter.StarterLightingMode = LightingValueNameDictionary[lightingModeValueValue]; } else { starter.StarterLightingMode = LightingModeEnum.UNDEFINED; } // Маска реле неисправности канала var address = (channelNumber - 1) * 12; var faultValue = (ushort)(data[address + 4] * 256 + data[address + 5]); for (int i = 0; i < _maskRelayFaultCanal.Length; i++) { var mask = _maskRelayFaultCanal[i]; if ((faultValue & mask) > 0) { deviceContext.SchemeTable.AddResistorRow(new DefaultResistorRow { ResistorId = i + 1, ResistorDiskret = i, ResistorModul = 1, ParentStarterId = starterNumber, ResistorDescription = String.Empty }); } } }
private void InitializeStarter(IStarter starter, IDeviceContext deviceContext, int channelNumber, byte[] data, byte lightingModeValue, int baseAddress) { channelNumber++; int starterNumber; if (uint.Parse(deviceContext.ChannelNumberOfStarter1) == channelNumber) { starterNumber = 1; } else if (uint.Parse(deviceContext.ChannelNumberOfStarter2) == channelNumber) { starterNumber = 2; } else if (uint.Parse(deviceContext.ChannelNumberOfStarter3) == channelNumber) { starterNumber = 3; } else { return; } starter.StarterNumber = starterNumber; starter.ChannelNumber = channelNumber; if (deviceContext.SchemeTable.GetStarterRow(starterNumber) != null) { return; } var row = new DefaultStarterRow(); row.StarterId = starterNumber; if (starterNumber == 1) { row.StarterDescription = deviceContext.Starter1Description; } else if (starterNumber == 2) { row.StarterDescription = deviceContext.Starter2Description; } else if (starterNumber == 3) { row.StarterDescription = deviceContext.Starter3Description; } starter.StarterDescription = row.StarterDescription; deviceContext.SchemeTable.AddStarterRow(row); if (LightingValueNameDictionary.ContainsKey(lightingModeValue)) { starter.StarterLightingMode = LightingValueNameDictionary[lightingModeValue]; } else { starter.StarterLightingMode = LightingModeEnum.UNDEFINED; } ; ushort offsetAddress = 0x4; for (int modulIndex = 0; modulIndex < 8; modulIndex++) { int offsetModule = 0; if ((modulIndex == 0) || (modulIndex % 2 == 0)) { offsetModule = 1 + modulIndex; } else { offsetModule = modulIndex - 1; } var faultValue = data[(2 * (0x3040 - baseAddress) + (channelNumber - 1) * offsetAddress * 2) + offsetModule]; for (int i = 0; i < _maskRelayFaultCanal.Length; i++) { var mask = _maskRelayFaultCanal[i]; if ((faultValue & mask) > 0) { deviceContext.SchemeTable.AddResistorRow(new DefaultResistorRow { ResistorId = i + 8 * (i + 1) * modulIndex, ResistorDiskret = i, ResistorModul = 1 + modulIndex, ParentStarterId = starterNumber, ResistorDescription = String.Empty }); } } } }