Esempio n. 1
0
        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
                    });
                }
            }
        }
Esempio n. 2
0
        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
                        });
                    }
                }
            }
        }