Exemplo n.º 1
0
        public ModbusBuffer(PortHandler Handler,
                            EDataDirection DataDirection,
                            ushort ControllerNum,
                            ushort AddressLBound,
                            ushort AddressUBound)
        {
            this.Handler = Handler;
//			Port.Encoding = System.Text.Encoding.GetEncoding();
            this.ControllerNum = ControllerNum;
            this.DataDirection = DataDirection;
            this.AddressLBound = AddressLBound;
            this.AddressUBound = AddressUBound;
            Data = new ushort[AddressUBound - AddressLBound + 1];
        }
Exemplo n.º 2
0
        /// <summary>
        /// Assigns Value in given direction between MappingTarget in Control and DataSource Target
        /// </summary>
        /// <param name="aDirection">
        /// Direction of data <see cref="EDataDirection"/>
        /// </param>
        /// <param name="aObject">
        /// Object which contains data <see cref="System.Object"/>
        /// </param>
        /// <param name="aControl">
        /// Control used to edit <see cref="System.Object"/>
        /// </param>
        /// <param name="aMappingTarget">
        /// Mapping which should be used to transfer data <see cref="System.String"/>
        /// </param>
        /// <returns>
        /// Returns true if successful <see cref="System.Boolean"/>
        /// </returns>
        public bool AssignValueToObject(EDataDirection aDirection, object aObject, object aControl, string aMappingTarget)
        {
            if (aMappingTarget == "")
            {
                return(false);
            }
            string oldmapping = MappingTarget;

            // Fake mapping target
            mappingTarget = aMappingTarget;
            // Call assign as usual
            bool res = AssignValueToObject(aDirection, aObject, aControl);

            // Restore mapping target
            mappingTarget = oldmapping;
            return(res);
        }
		/// <summary>
		/// Assigns Value in given direction between MappingTarget in Control and DataSource Target
		/// </summary>
		/// <param name="aDirection">
		/// Direction of data <see cref="EDataDirection"/>
		/// </param>
		/// <param name="aObject">
		/// Object which contains data <see cref="System.Object"/>
		/// </param>
		/// <param name="aControl">
		/// Control used to edit <see cref="System.Object"/>
		/// </param>
		/// <param name="aMappingTarget">
		/// Mapping which should be used to transfer data <see cref="System.String"/>
		/// </param>
		/// <returns>
		/// Returns true if successful <see cref="System.Boolean"/>
		/// </returns>
		public bool AssignValueToObject (EDataDirection aDirection, object aObject, object aControl, string aMappingTarget)
		{
			if (aMappingTarget == "")
				return (false);
			string oldmapping = MappingTarget;
			// Fake mapping target
			mappingTarget = aMappingTarget;
			// Call assign as usual
			bool res = AssignValueToObject (aDirection, aObject, aControl);
			// Restore mapping target
			mappingTarget = oldmapping;
			return (res);
		}
		/// <summary>
		/// Assigns Value in given direction between Control and DataSource Target
		/// </summary>
		/// <param name="aDirection">
		/// Direction of data <see cref="EDataDirection"/>
		/// </param>
		/// <param name="aObject">
		/// Object which contains data <see cref="System.Object"/>
		/// </param>
		/// <param name="aControl">
		/// Control used to edit <see cref="System.Object"/>
		/// </param>
		/// <returns>
		/// Returns true if successful <see cref="System.Boolean"/>
		/// </returns>
		public bool AssignValueToObject (EDataDirection aDirection, object aObject, object aControl)
		{
			bool res = false;
			// Check if 
			if (IsGlobal == true) {
				if (aDirection == EDataDirection.FromControlToDataSource)
					throw new ExceptionGlobalMappingAssignedFromControlToTarget();
					
#if NEWCACHE
				if (dataCache == null)
					dataCache = new CachedProperty (Adaptor.FinalTarget, Name);
				if (controlCache == null)
					controlCache = new CachedProperty (aControl, MappingTarget);
				if (controlCache.IsCached == true) {
					object val;
					if (dataCache.IsCached == true)
						if (dataCache.GetValue (out val) == true)
							if (controlCache.SetValue (val) == true) {
								val = null;
								return (true);
							}
				}
				return (false);
#endif
#if OLDCACHE 
				object FromObject = aObject;
				object ToObject = aControl;
				string FromProperty = Name;
				string ToProperty = MappingTarget;

				// assign, direction is already correct
				res = ConnectionProvider.CopyPropertyValue (FromObject, FromProperty, ToObject, ToProperty);
				FromObject = null;
				ToObject = null;
				return (res);
#endif
			}
			else {
#if NEWCACHE
				CachedProperty FromObject;
				CachedProperty ToObject;
				bool canbedone;
				if (aDirection == EDataDirection.FromControlToDataSource) {
					FromObject = controlCache;
					ToObject = dataCache;
					canbedone = AllowedToWrite;
					if (ToObject is IObserveable)
						(ToObject as IObserveable).ResetChangeCallCheckup();
				}
				else {
					FromObject = dataCache;
					ToObject = controlCache;
					canbedone = AllowedToRead;
				}
				
				if (controlCache == null)
					controlCache = new CachedProperty (aControl, MappingTarget);

				object val = null;
				// assign in set direction
				if ((canbedone == true) && (FromObject != null) && (ToObject != null)) {
					if (FromObject.GetValue (out val) == true) {
						if (ToObject.SetValue (val) == true)
							if (aDirection == EDataDirection.FromControlToDataSource)
								if ((ToObject is IObserveable) == false)
									DataSourceController.CallChangedFor (ToObject);
								else
									if ((ToObject as IObserveable).HasCalledForChange == false)
										(ToObject as IObserveable).HasChanged = true;
						res = true;
					}
				}
				FromObject = null;
				ToObject = null;
				return (res);
#endif
#if OLDCACHE 
				object FromObject;
				object ToObject;
				string FromProperty;
				string ToProperty;
				bool canbedone;
				// swap direction if needed 
				if (aDirection == EDataDirection.FromControlToDataSource) {
					FromObject = aControl;
					ToObject = aObject;
					FromProperty = MappingTarget;
					ToProperty = Name;
					canbedone = AllowedToWrite;
					if (ToObject is IObserveable)
						(ToObject as IObserveable).ResetChangeCallCheckup();
				}
				else {
					FromObject = aObject;
					ToObject = aControl;
					FromProperty = Name;
					ToProperty = MappingTarget;
					canbedone = AllowedToRead;
				}
				
				// assign in set direction
				if (canbedone == true) {
					if (ConnectionProvider.CopyPropertyValue(FromObject, FromProperty, ToObject, ToProperty) == true) {
						if (aDirection == EDataDirection.FromControlToDataSource)
							if ((ToObject is IObserveable) == false)
								DataSourceController.CallChangedFor (ToObject);
							else
								if ((ToObject as IObserveable).HasCalledForChange == false)
									(ToObject as IObserveable).HasChanged = true;
						res = true;
					}
//					else
//						Debug.Warning ("MappedProperty.AssignValueToObject", "CopyPropertyValue not successful");
				}
				FromObject = null;
				ToObject = null;
				return (res);
#endif
			}
		}
Exemplo n.º 5
0
        /// <summary>
        /// Assigns Value in given direction between Control and DataSource Target
        /// </summary>
        /// <param name="aDirection">
        /// Direction of data <see cref="EDataDirection"/>
        /// </param>
        /// <param name="aObject">
        /// Object which contains data <see cref="System.Object"/>
        /// </param>
        /// <param name="aControl">
        /// Control used to edit <see cref="System.Object"/>
        /// </param>
        /// <returns>
        /// Returns true if successful <see cref="System.Boolean"/>
        /// </returns>
        public bool AssignValueToObject(EDataDirection aDirection, object aObject, object aControl)
        {
            bool res = false;

            // Check if
            if (IsGlobal == true)
            {
                if (aDirection == EDataDirection.FromControlToDataSource)
                {
                    throw new ExceptionGlobalMappingAssignedFromControlToTarget();
                }

#if NEWCACHE
                if (dataCache == null)
                {
                    dataCache = new CachedProperty(Adaptor.FinalTarget, Name);
                }
                if (controlCache == null)
                {
                    controlCache = new CachedProperty(aControl, MappingTarget);
                }
                if (controlCache.IsCached == true)
                {
                    object val;
                    if (dataCache.IsCached == true)
                    {
                        if (dataCache.GetValue(out val) == true)
                        {
                            if (controlCache.SetValue(val) == true)
                            {
                                val = null;
                                return(true);
                            }
                        }
                    }
                }
                return(false);
#endif
#if OLDCACHE
                object FromObject   = aObject;
                object ToObject     = aControl;
                string FromProperty = Name;
                string ToProperty   = MappingTarget;

                // assign, direction is already correct
                res        = ConnectionProvider.CopyPropertyValue(FromObject, FromProperty, ToObject, ToProperty);
                FromObject = null;
                ToObject   = null;
                return(res);
#endif
            }
            else
            {
#if NEWCACHE
                CachedProperty FromObject;
                CachedProperty ToObject;
                bool           canbedone;
                if (aDirection == EDataDirection.FromControlToDataSource)
                {
                    FromObject = controlCache;
                    ToObject   = dataCache;
                    canbedone  = AllowedToWrite;
                    if (ToObject is IObserveable)
                    {
                        (ToObject as IObserveable).ResetChangeCallCheckup();
                    }
                }
                else
                {
                    FromObject = dataCache;
                    ToObject   = controlCache;
                    canbedone  = AllowedToRead;
                }

                if (controlCache == null)
                {
                    controlCache = new CachedProperty(aControl, MappingTarget);
                }

                object val = null;
                // assign in set direction
                if ((canbedone == true) && (FromObject != null) && (ToObject != null))
                {
                    if (FromObject.GetValue(out val) == true)
                    {
                        if (ToObject.SetValue(val) == true)
                        {
                            if (aDirection == EDataDirection.FromControlToDataSource)
                            {
                                if ((ToObject is IObserveable) == false)
                                {
                                    DataSourceController.CallChangedFor(ToObject);
                                }
                                else
                                if ((ToObject as IObserveable).HasCalledForChange == false)
                                {
                                    (ToObject as IObserveable).HasChanged = true;
                                }
                            }
                        }
                        res = true;
                    }
                }
                FromObject = null;
                ToObject   = null;
                return(res);
#endif
#if OLDCACHE
                object FromObject;
                object ToObject;
                string FromProperty;
                string ToProperty;
                bool   canbedone;
                // swap direction if needed
                if (aDirection == EDataDirection.FromControlToDataSource)
                {
                    FromObject   = aControl;
                    ToObject     = aObject;
                    FromProperty = MappingTarget;
                    ToProperty   = Name;
                    canbedone    = AllowedToWrite;
                    if (ToObject is IObserveable)
                    {
                        (ToObject as IObserveable).ResetChangeCallCheckup();
                    }
                }
                else
                {
                    FromObject   = aObject;
                    ToObject     = aControl;
                    FromProperty = Name;
                    ToProperty   = MappingTarget;
                    canbedone    = AllowedToRead;
                }

                // assign in set direction
                if (canbedone == true)
                {
                    if (ConnectionProvider.CopyPropertyValue(FromObject, FromProperty, ToObject, ToProperty) == true)
                    {
                        if (aDirection == EDataDirection.FromControlToDataSource)
                        {
                            if ((ToObject is IObserveable) == false)
                            {
                                DataSourceController.CallChangedFor(ToObject);
                            }
                            else
                            if ((ToObject as IObserveable).HasCalledForChange == false)
                            {
                                (ToObject as IObserveable).HasChanged = true;
                            }
                        }
                        res = true;
                    }
//					else
//						Debug.Warning ("MappedProperty.AssignValueToObject", "CopyPropertyValue not successful");
                }
                FromObject = null;
                ToObject   = null;
                return(res);
#endif
            }
        }