コード例 #1
0
        public void Test48BitToLong()
        {
            byte[] mybytes   = new byte[] { 0, 0, 0, 0, 0, 25 };
            var    longValue = VariableDataBlock.Bit48ToInt64(mybytes);

            Assert.Equal(25, longValue);
        }
コード例 #2
0
        public void SetData(VariableDataFrame data)
        {
            if (data.DataBlocks.Count >= _dataIndex)
            {
                var frame = data.DataBlocks[_dataIndex];

                DriverContext.Logger.LogDebug($"{_dataIndex}{Name} value {frame.Value}");

                if (_lastFrame != null && _lastFrame.Value != frame.Value)
                {
                    DispatchValue(frame.Value);
                }

                _lastFrame = frame;
            }
        }
コード例 #3
0
        public void ParseVariableDataFrame(ReadOnlySpan <byte> frame, int offset, ILogger logger)
        {
            var usedStorageMap = new Dictionary <Unit, int>();
            int dataLength     = frame.Length - offset;
            int internalOffset = offset;

            do
            {
                int usedLength;
                var vdb = VariableDataBlock.Parse(frame, internalOffset, usedStorageMap, out usedLength, logger);

                _vdbs.Add(vdb);

                internalOffset += usedLength;
                dataLength     -= usedLength;
            } while (dataLength > 0);
        }
コード例 #4
0
        public NodeInstance CreateNodeInstanceFromDataBlock(VariableDataBlock block)
        {
            switch (block.ValueInformationField.Unit)
            {
            case Unit.ActualityDuration:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusActualityDuration));

            case Unit.EnergyW:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusEnergyW));

            case Unit.EnergyJ:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusEnergyJ));

            case Unit.Volume:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusVolume));

            case Unit.Mass:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusMass));

            case Unit.OnTime:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusOnTime));

            case Unit.OperatingTime:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusOperatingTime));

            case Unit.PowerW:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusPowerW));

            case Unit.PowerJh:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusPowerJh));

            case Unit.VolumeFlowh:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusVolumeFlowh));

            case Unit.VolumeFlowmin:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusVolumeFlowmin));

            case Unit.VolumeFlows:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusVolumeFlows));

            case Unit.MassFlow:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusMassFlow));

            case Unit.FlowTemperature:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusFlowTemperature));

            case Unit.ReturnTemperature:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusReturnTemperature));

            case Unit.TemperatureDifference:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusTemperatureDifference));

            case Unit.ExternalTemperature:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusExternalTemperature));

            case Unit.Pressure:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusPressure));

            case Unit.TimePoint:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusTimePoint));

            case Unit.UnitsForHca:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusUnitsForHca));

            case Unit.AveragingDuration:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusAveragingDuration));

            case Unit.EnhancedId:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusEnhancedId));

            case Unit.BusAddress:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusBusAddress));

            case Unit.FabricationNumber:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusFabricationNumber));

            case Unit.ManufacturerSpecific:
                return(DriverContext.NodeTemplateFactory.CreateNodeInstance(MBusUdpFactory.MbusManufacturerSpecific));

            case Unit.Volt:
                break;

            case Unit.Ampere:
                break;
            }
            return(null);
        }