NegotiateHandle.cs 1.2 KB

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