| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | using System;using PLC.Siemens.Protocol.Common;using PLC.Siemens.Protocol.Upload;using ByteBuffer = Core.Communication.Transport.ByteBuffer;using PLC.Siemens.O;namespace PLC.Siemens.ProtocolHandle{    public class UploadHandle:IPacketHandle    {        public UploadRequest Request { get; set; }        public UploadResponse Response { get; set; }        public byte UploadID { get; set; }        public ResultCode ResultCode { get; set; }        public UploadHandle()        {            Request = new UploadRequest();        }        public void Handle(IIsoSender sender)        {            Request.UploadID = UploadID;                        Response = sender.IsoSend<UploadRequest, UploadResponse>(Request);                        ResultCode = Response.Header.Error;            bool done = Response.Params.EoU == 0;            ByteBuffer byteBuffer = ByteBuffer.Allocate();            byteBuffer.Push(Response.Data.Datas);            while (!done && ResultCode == ResultCode.OK)            {                Response = sender.IsoSend<UploadRequest, UploadResponse>(Request);                ResultCode = Response.Header.Error;                byteBuffer.Push(Response.Data.Datas);                done = Response.Params.EoU == 0;            }            Request.UploadID = UploadID;            Request.PduType = PduType.PduEndUpload;            Response = sender.IsoSend<UploadRequest, UploadResponse>(Request);            ResultCode = Response.Header.Error;            done = Response.Params.EoU == 0;        }    }}
 |