| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | 
							- using System.Collections.Generic;
 
- using PLC.Siemens.Protocol.Common;
 
- using PLC.Siemens.Protocol.Iso;
 
- using PLC.Siemens.O;
 
- namespace PLC.Siemens.ProtocolHandle
 
- {
 
-     public class IsoControlPduHandle : IPacketHandle
 
-     {
 
-         public int IsoPduSize { get; set; }
 
-         public ushort SrcRef { get; set; }
 
-         public ushort DstRef { get; set; }
 
-         public ushort SrcTSap { get; set; }
 
-         public ushort DstTSap { get; set; }
 
-         public IList<IsoControlPdu> Requests { get; set; }
 
-         public IList<IsoControlPdu> Responses { get; set; }
 
-         public ResultCode ResultCode { get; set; }
 
-         public void Handle(IIsoSender sender)
 
-         {
 
-             var request = new IsoControlPdu
 
-             {
 
-                 IsoPduSize = IsoPduSize,
 
-                 SrcRef = SrcRef,
 
-                 DstRef = DstRef,
 
-                 SrcTSap = SrcTSap,
 
-                 DstTSap = DstTSap
 
-             };
 
-             Requests.Add(request);
 
-             var response = sender.Send<IsoControlPdu, IsoControlPdu>(request);
 
-             if (response == null)
 
-             {
 
-                 ResultCode = ResultCode.ReadDataFalut;
 
-                 return;
 
-             }
 
-             if (CheckPdu(response, PduType.ConnConfirm) != 0) return;
 
-             Responses.Add(response);
 
-             ResultCode = ResultCode.OK;
 
-         }
 
-         
 
-         public IsoControlPduHandle()
 
-         {
 
-             ResultCode = ResultCode.Unknown; 
 
-             Requests = new List<IsoControlPdu>();
 
-             Responses = new List<IsoControlPdu>();
 
-         }
 
-         
 
-         private int CheckPdu(IsoControlPdu pdu, PduType pduType)
 
-         {
 
-             int size = pdu.Tpkt.Length;
 
-             if (size < 7 || size > StaticConst.IsoPayloadSize || pdu.Cotp.PduType != (byte)pduType)
 
-                 return (int)ErrorType.ErrIsoInvalidPdu;
 
-             return (int)ErrorType.NoError; 
 
-         }
 
-     }
 
- }
 
 
  |