12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using PlcSiemens.O;
- using PlcSiemens.Protocol.Common;
- using PlcSiemens.Protocol.Upload;
- using ByteBuffer = PlcSiemens.O.ByteBuffer;
- namespace PlcSiemens.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;
- }
- }
- }
|