}//UpdateBalanceData() public static void listConnectedBalances( ICswResources CswResources, CswNbtBalanceReturn Return, object Request ) { CswNbtResources NbtResources = (CswNbtResources) CswResources; Return.Data.BalanceList = new Collection<SerialBalance>(); CswNbtMetaDataObjectClass BalanceOC = NbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.BalanceClass ); if( null != BalanceOC ) { CswNbtView ExistingBalancesView = new CswNbtView( NbtResources ); ExistingBalancesView.ViewName = "Connected Balances"; CswNbtViewRelationship BalanceRel = ExistingBalancesView.AddViewRelationship( BalanceOC, true ); //only add to the list of returned balances if it has had an announcement in the last 11 minutes ExistingBalancesView.AddViewPropertyAndFilter( BalanceRel, BalanceOC.getObjectClassProp( CswNbtObjClassBalance.PropertyName.LastActive ), SubFieldName: CswEnumNbtSubFieldName.Value, Value: DateTime.Now.Subtract( TimeSpan.FromMinutes( 11 ) ).ToString(), FilterMode: CswEnumNbtFilterMode.GreaterThan ); //only add to the list of returned balances if it is Operational ExistingBalancesView.AddViewPropertyAndFilter( BalanceRel, BalanceOC.getObjectClassProp( CswNbtObjClassBalance.PropertyName.Operational ), SubFieldName: CswEnumNbtSubFieldName.Checked, Value: CswEnumTristate.True, FilterMode: CswEnumNbtFilterMode.Equals ); ExistingBalancesView.AddViewPropertyAndFilter( BalanceRel, BalanceOC.getObjectClassProp( CswNbtObjClassBalance.PropertyName.Quantity ), SubFieldName: CswEnumNbtSubFieldName.Value, Value: "0", FilterMode: CswEnumNbtFilterMode.NotEquals ); ICswNbtTree BalanceTree = NbtResources.Trees.getTreeFromView( ExistingBalancesView, true, false, false ); int BalanceCount = BalanceTree.getChildNodeCount(); if( BalanceCount > 0 ) { BalanceTree.goToRoot(); for( int i = 0; i < BalanceCount; i++ ) { BalanceTree.goToNthChild( i ); CswNbtObjClassBalance Balance = BalanceTree.getCurrentNode(); Return.Data.BalanceList.Add( new SerialBalance { NbtName = Balance.Name.Text, CurrentWeight = Balance.Quantity.Quantity, UnitOfMeasurement = Balance.Quantity.CachedUnitName, NodeId = Balance.NodeId.ToString(), IsActive = ( Balance.LastActive.DateTimeValue + TimeSpan.FromMinutes( 10 ) > DateTime.Now ), } ); BalanceTree.goToParentNode(); } //for ( int i = 0; i < BalanceCount; i++ ) } //if( BalanceCount > 0 ) } //if ( null != BalanceOC ) }//listConnectedBalances( ICswResources CswResources, CswNbtBalanceReturn Return, object Request )
}//listConnectedBalances( ICswResources CswResources, CswNbtBalanceReturn Return, object Request ) public static void listBalanceConfigurations( ICswResources CswResources, CswNbtBalanceReturn Return, object Request ) { CswNbtResources NbtResources = (CswNbtResources) CswResources; Return.Data.ConfigurationList = new Collection<BalanceConfiguration>(); CswNbtMetaDataObjectClass BalanceConfigurationOC = NbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.BalanceConfigurationClass ); if( null != BalanceConfigurationOC ) { CswNbtView ExistingConfigurationsView = BalanceConfigurationOC.CreateDefaultView( true ); ICswNbtTree ConfigTree = NbtResources.Trees.getTreeFromView( ExistingConfigurationsView, true, false, false ); int ConfigCount = ConfigTree.getChildNodeCount(); if( ConfigCount > 0 ) { ConfigTree.goToRoot(); for( int i = 0; i < ConfigCount; i++ ) { ConfigTree.goToNthChild( i ); CswNbtObjClassBalanceConfiguration Configuration = ConfigTree.getCurrentNode(); Return.Data.ConfigurationList.Add( new BalanceConfiguration { Name = Configuration.Name.Text, RequestFormat = Configuration.RequestFormat.Text, ResponseFormat = Configuration.ResponseFormat.Text, BaudRate = (int) Configuration.BaudRate.Value, ParityBit = Configuration.ParityBit.Text, DataBits = (int) Configuration.DataBits.Value, StopBits = Configuration.StopBits.Text, Handshake = Configuration.Handshake.Text, } ); ConfigTree.goToParentNode(); } //for ( int i = 0; i < BalanceCount; i++ ) } //if( BalanceCount > 0 ) } //if ( null != BalanceOC ) }//listBalanceConfigurations()
public static void registerBalanceConfiguration( ICswResources CswResources, CswNbtBalanceReturn Return, BalanceConfiguration Request ) { CswNbtResources NbtResources = (CswNbtResources) CswResources; CswNbtMetaDataObjectClass BalanceConfigurationOC = NbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.BalanceConfigurationClass ); if( null != BalanceConfigurationOC ) { Return.Data.ConfigurationList = new Collection<BalanceConfiguration>(); CswNbtObjClassBalanceConfiguration BalanceConfiguration = _findConfigurationWithName( NbtResources, Request.Name ); Action<CswNbtNode> AfterBalanceConfig = delegate( CswNbtNode NewNode ) { CswNbtObjClassBalanceConfiguration thisBalanceConfig = NewNode; thisBalanceConfig.Name.Text = Request.Name; thisBalanceConfig.RequestFormat.Text = Request.RequestFormat; thisBalanceConfig.ResponseFormat.Text = Request.ResponseFormat; thisBalanceConfig.BaudRate.Value = Request.BaudRate; thisBalanceConfig.ParityBit.Text = Request.ParityBit; thisBalanceConfig.DataBits.Value = Request.DataBits; thisBalanceConfig.StopBits.Text = Request.StopBits; thisBalanceConfig.Handshake.Text = Request.Handshake; }; if( null == BalanceConfiguration ) { //there is no configuration with this name yet. Make a new one. CswNbtMetaDataNodeType ConfigNT = BalanceConfigurationOC.FirstNodeType; BalanceConfiguration = NbtResources.Nodes.makeNodeFromNodeTypeId( ConfigNT.NodeTypeId, AfterBalanceConfig ); } else { AfterBalanceConfig( BalanceConfiguration.Node ); BalanceConfiguration.postChanges( false ); } Return.Data.ConfigurationList.Add( Request ); }//if ( null != BalanceConfigurationOC ) } // registerBalanceConfiguration()
} // registerBalanceConfiguration() public static void getBalanceInformation( ICswResources CswResources, CswNbtBalanceReturn Return, string Request ) { CswNbtResources NbtResources = (CswNbtResources) CswResources; Return.Data.BalanceList = new Collection<SerialBalance>(); CswPrimaryKey BalanceKey = new CswPrimaryKey(); BalanceKey.FromString( Request ); CswNbtObjClassBalance Balance = NbtResources.Nodes[BalanceKey]; Return.Data.BalanceList.Add( new SerialBalance { NbtName = Balance.Name.Text, CurrentWeight = Balance.Quantity.Quantity, UnitOfMeasurement = Balance.Quantity.CachedUnitName, NodeId = Balance.NodeId.ToString(), IsActive = (Balance.LastActive.DateTimeValue + TimeSpan.FromMinutes(10) > DateTime.Now), } ); }//getBalanceInformation( ICswResources CswResources, CswNbtBalanceReturn Return, string Request )