Example #1
0
        protected override int OnWriteSumEntityData(SumDataEntity entity, BinaryWriter writer)
        {
            int num = 0;

            if (base.mode == TwinCAT.Ads.SumCommand.SumCommand.SumAccessMode.IndexGroupIndexOffset)
            {
                IgIoSumEntity entity2 = (IgIoSumEntity)entity;
                num += base.MarshalSumWriteHeader(entity2.IndexGroup, entity2.IndexOffset, entity.WriteLength, writer);
            }
            else if (base.mode == TwinCAT.Ads.SumCommand.SumCommand.SumAccessMode.ValueByHandle)
            {
                HandleSumEntity entity3 = (HandleSumEntity)entity;
                num += base.MarshalSumWriteHeader(0xf005, entity3.Handle, entity.WriteLength, writer);
            }
            else
            {
                if (base.mode != TwinCAT.Ads.SumCommand.SumCommand.SumAccessMode.ReleaseHandle)
                {
                    throw new NotSupportedException();
                }
                HandleSumEntity entity4 = (HandleSumEntity)entity;
                num += base.MarshalSumWriteHeader(0xf006, entity4.Handle, entity.WriteLength, writer);
            }
            return(num);
        }
Example #2
0
        protected override int OnWriteSumEntityData(SumDataEntity entity, BinaryWriter writer)
        {
            NotificationHandleSumEntity entity2 = (NotificationHandleSumEntity)entity;

            writer.Write(entity2.GetWriteBytes());
            return(entity2.WriteLength);
        }
Example #3
0
        protected virtual int OnWriteValueData(IList <byte[]> writeData, BinaryWriter writer)
        {
            int num = 0;

            for (int i = 0; i < this.sumEntities.Count; i++)
            {
                byte[]        buffer = writeData[i];
                SumDataEntity entity = this.sumEntities[i];
                writer.Write(buffer);
                num += buffer.Length;
            }
            return(num);
        }
Example #4
0
        protected override void OnReadReturnData(BinaryReader reader, out IList <byte[]> readData, out int[] readDataSizes, out AdsErrorCode[] returnCodes)
        {
            readDataSizes = new int[base.sumEntities.Count];
            returnCodes   = new AdsErrorCode[base.sumEntities.Count];
            readData      = new List <byte[]>();
            int num = 0;

            for (int i = 0; i < base.sumEntities.Count; i++)
            {
                returnCodes[i] = (AdsErrorCode)reader.ReadUInt32();
                num           += 4;
            }
            for (int j = 0; j < base.sumEntities.Count; j++)
            {
                SumDataEntity entity = base.sumEntities[j];
                byte[]        item   = reader.ReadBytes(entity.ReadLength);
                readData.Add(item);
            }
        }
Example #5
0
        public AdsErrorCode TryWrite(object[] values, out AdsErrorCode[] returnCodes)
        {
            IList <SumDataEntity> sumEntities = this.CreateSumEntityInfos();

            base.innerCommand = new SumWrite(base.connection, sumEntities, TwinCAT.Ads.SumCommand.SumCommand.SumAccessMode.IndexGroupIndexOffset);
            List <byte[]>          writeData        = new List <byte[]>();
            IList <Symbol>         unwrappedSymbols = base.UnwrappedSymbols;
            InstanceValueConverter converter        = new InstanceValueConverter();

            for (int i = 0; i < unwrappedSymbols.Count; i++)
            {
                SumDataEntity entity = sumEntities[i];
                Symbol        symbol = unwrappedSymbols[i];
                byte[]        item   = converter.Marshal(symbol, values[i]);
                if ((symbol.Category == DataTypeCategory.String) && (item.Length < entity.WriteLength))
                {
                    entity.SetWriteLength(item.Length);
                }
                writeData.Add(item);
            }
            return(base.innerCommand.TryWriteRaw(writeData, out returnCodes));
        }
Example #6
0
 protected abstract int OnWriteSumEntityData(SumDataEntity entity, BinaryWriter writer);
 protected override int OnWriteSumEntityData(SumDataEntity entity, BinaryWriter writer)
 {
     writer.Write(((NotificationHandleReleaseSumEntity)entity).Handle);
     return(4);
 }