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); }
protected override int OnWriteSumEntityData(SumDataEntity entity, BinaryWriter writer) { NotificationHandleSumEntity entity2 = (NotificationHandleSumEntity)entity; writer.Write(entity2.GetWriteBytes()); return(entity2.WriteLength); }
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); }
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); } }
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)); }
protected abstract int OnWriteSumEntityData(SumDataEntity entity, BinaryWriter writer);
protected override int OnWriteSumEntityData(SumDataEntity entity, BinaryWriter writer) { writer.Write(((NotificationHandleReleaseSumEntity)entity).Handle); return(4); }