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;
- }
- }
- }
|