| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | using System.Collections.Generic;using Houdar.Core.Communication.Transport;using Houdar.Core.Util.Extension;using Houdar.PLC.Driver.Simenss.Protocol.Common;using Houdar.PLC.Driver.Simenss.Protocol.Header;using Houdar.PLC.Driver.Simenss.Protocol.ReadData;namespace Houdar.PLC.Driver.Simenss.Protocol.WriteData{    public class WriteRequest:IBuildRequest    {        public HeaderPacket Header { get; set; }        public WriteParamsRequest Params { get; set; }        public WriteDataRequest[] Data { get; set; }        public List<DataItem> DataItems { get; set; }        public WriteRequest()        {            Header = new HeaderPacket();            Params = new WriteParamsRequest();        }        public void Build()        {            Params.Build(DataItems);            Data = new WriteDataRequest[DataItems.Count];            ushort dataLength = 0;            for (int i = 0; i < DataItems.Count; i++)            {                var tmp = new WriteDataRequest();                Data[i] = tmp;                var dataItem = DataItems[i];                tmp.Build(dataItem, i == DataItems.Count - 1);                dataLength += tmp.PacketLength;            }            ushort paramsLength = Params.PacketLength;            Header.Build(PduType.Request, paramsLength, dataLength);        }        public ByteBuffer GetBuffer()        {            ByteBuffer buffer = ByteBuffer.Allocate();            Header.GetByteBuffer(buffer);            Params.GetByteBuffer(buffer);            Data.ForEach(t => t.GetByteBuffer(buffer));            return buffer;        }    }}
 |