public void Test48BitToLong() { byte[] mybytes = new byte[] { 0, 0, 0, 0, 0, 25 }; var longValue = VariableDataBlock.Bit48ToInt64(mybytes); Assert.Equal(25, longValue); }
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; } }
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); }
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); }