| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | using System;using Houdar.PLC.Driver.Simenss.Protocol.Common;using Houdar.PLC.Driver.Simenss.Protocol.Upload;using ByteBuffer = Houdar.Core.Communication.Transport.ByteBuffer;namespace Houdar.PLC.Driver.Simenss.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;        }    }}
 |