コード例 #1
0
ファイル: NbtPublic.svc.cs プロジェクト: crfroehlich/legacy
        public SerialBalance UpdateBalanceData(SerialBalance Request)
        {
            //delegate has to be static because you can't create an instance yet: you don't have resources until the delegate is actually called
            SerialBalance Ret = new SerialBalance();

            var SvcDriver = new CswWebSvcDriver <SerialBalance, SerialBalance>(
                CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null),
                ReturnObj: Ret,
                WebSvcMethodPtr: CswNbtWebServiceSerialBalance.UpdateBalanceData,
                ParamObj: Request
                );

            SvcDriver.run();

            return(Ret);
        }
コード例 #2
0
ファイル: Balance.cs プロジェクト: crfroehlich/legacy
        }//performBalanceCheck()

        /// <summary>
        /// Announces Balance to NBT
        /// </summary>
        public void announceBalance( )
        {
            if (_isEnabled)
            {
                NbtAuth.SessionCompleteEvent SendBalanceToServer = delegate(NbtPublicClient Client)
                {
                    SerialBalance Response = Client.UpdateBalanceData(_balanceData);
                    string        Status   = "NonExistentSession";
                    if (null != Response)
                    {
                        _balanceData.NodeId = Response.NodeId;
                        Status = "Authenticated";
                    }
                    return(Status);
                };

                AuthenticationClient.PerformAction(SendBalanceToServer);
            }
        }//announceBalance()
コード例 #3
0
ファイル: Balance.cs プロジェクト: crfroehlich/legacy
        public Balance(string COM, string Manufacturer, string Description)
        {
            _isEnabled        = false;
            _updateInProgress = false;
            _stableReadsOnly  = false;

            _balanceData                   = new SerialBalance();
            _balanceData.NbtName           = "";
            _balanceData.CurrentWeight     = 0;
            _balanceData.UnitOfMeasurement = "";
            _balanceData.Manufacturer      = Manufacturer;
            _balanceData.DeviceDescription = Description;
            _balanceData.Operational       = false;

            _driftThreshold      = 0;
            _pendingReadRequests = 0;

            _serialPortConfiguration = new BalanceConfiguration();

            _balanceConnection          = new SerialPort();
            _balanceConnection.PortName = COM;

            _balanceConnection.DataReceived += parseWeightResult;
        }//constructor
コード例 #4
0
        public static void UpdateBalanceData( ICswResources CswResources, SerialBalance Return, SerialBalance Request )
        {

            CswNbtResources NbtResources = (CswNbtResources) CswResources;

            CswNbtMetaDataObjectClass BalanceOC = NbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.BalanceClass );
            if( null != BalanceOC )
            {
                CswNbtMetaDataObjectClassProp BalanceNameOCP = BalanceOC.getObjectClassProp( CswNbtObjClassBalance.PropertyName.Name );
                CswNbtObjClassBalance Balance;


                Action<CswNbtNode> UpdateBalance = delegate( CswNbtNode NewNode )
                {
                    CswNbtObjClassBalance thisBalance = NewNode;
                    thisBalance.Name.Text = Request.NbtName;
                    thisBalance.Quantity.Quantity = Request.CurrentWeight;
                    thisBalance.LastActive.DateTimeValue = DateTime.Now;
                    thisBalance.Device.Text = Request.DeviceDescription;
                    thisBalance.Manufacturer.Text = Request.Manufacturer;
                    thisBalance.Operational.Checked = CswConvert.ToTristate( Request.Operational );
                    thisBalance.BalanceConfiguration.RelatedNodeId = _findConfigurationWithName( NbtResources, Request.Configuration ).NodeId;

                    CswNbtObjClassUnitOfMeasure Unit = _mapUnitToNode( NbtResources, Request.UnitOfMeasurement );

                    if( null != Unit )
                    {
                        thisBalance.Quantity.UnitId = Unit.NodeId;
                    }
                };


                if( string.IsNullOrEmpty(Request.NodeId) )
                {
                    CswNbtView ExistingBalancesView = new CswNbtView( NbtResources );
                    ExistingBalancesView.ViewName = "Existing Balances";
                    CswNbtViewRelationship BalanceRel = ExistingBalancesView.AddViewRelationship( BalanceOC, false );
                    ExistingBalancesView.AddViewPropertyAndFilter( BalanceRel, BalanceNameOCP,
                                                                   Value: Request.NbtName,
                                                                   FilterMode: CswEnumNbtFilterMode.Equals );
                    ICswNbtTree ExistingBalancesTree = NbtResources.Trees.getTreeFromView( ExistingBalancesView, false, true, true );


                    if( ExistingBalancesTree.getChildNodeCount() == 0 )
                    {
                        //there is no balance with this name yet. Make a new one.
                        CswNbtMetaDataNodeType BalanceNT = BalanceOC.FirstNodeType;
                        Balance = NbtResources.Nodes.makeNodeFromNodeTypeId( BalanceNT.NodeTypeId, UpdateBalance );
                    }
                    else
                    {
                        //this balance already exists, grab a reference to it.
                        ExistingBalancesTree.goToNthChild( 0 );
                        Balance = ExistingBalancesTree.getCurrentNode();
                        UpdateBalance( Balance.Node );
                        Balance.postChanges( false );

                    }
                }//if null == request.nodeid
                else
                {
                    Balance = NbtResources.Nodes[new CswPrimaryKey( "nodes", Convert.ToInt32( Request.NodeId ) )];
                    UpdateBalance( Balance.Node );
                    Balance.postChanges( false );
                }

                //return the requested balance back, plus what nodeId it was assigned
                Return = Request;
                Return.NodeId = Balance.NodeId.PrimaryKey.ToString();

            }//if ( null != BalanceOC )

        }//UpdateBalanceData()