NegotiateHandle.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Collections.Generic;
  2. using PLC.Siemens.Protocol.Common;
  3. using PLC.Siemens.Protocol.Negotiate;
  4. using PLC.Siemens.O;
  5. namespace PLC.Siemens.ProtocolHandle
  6. {
  7. public class NegotiateHandle : IPacketHandle
  8. {
  9. public ushort PduRequest { get; set; }
  10. public IList<NegotiateRequest> Requests { get; set; }
  11. public IList<NegotiateResponse> Responses { get; set; }
  12. public ResultCode ResultCode { get; set; }
  13. public NegotiateHandle()
  14. {
  15. ResultCode = ResultCode.Unknown;
  16. PduRequest = 480;
  17. Requests = new List<NegotiateRequest>();
  18. Responses = new List<NegotiateResponse>();
  19. }
  20. public void Handle(IIsoSender sender)
  21. {
  22. var negotiateRequest = new NegotiateRequest();
  23. negotiateRequest.PduRequestLength = PduRequest;
  24. Requests.Add(negotiateRequest);
  25. var response = sender.IsoSend<NegotiateRequest, NegotiateResponse>(negotiateRequest);
  26. if (response == null)
  27. {
  28. ResultCode = ResultCode.PduConfirmFault;
  29. return;
  30. }
  31. ResultCode = response.Header.Error;
  32. if(ResultCode==ResultCode.OK)
  33. Responses.Add(response);
  34. }
  35. }
  36. }