SetPasswordRequest.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using PlcSiemens.Core.Extension;
  2. using PlcSiemens.O;
  3. using PlcSiemens.Protocol.Common;
  4. using PlcSiemens.Protocol.Header;
  5. namespace PlcSiemens.Protocol.Security
  6. {
  7. public class SetPasswordRequest : IBuildRequest
  8. {
  9. public HeaderPacket Header { get; set; }
  10. public ParamsRequest Params { get; set; }
  11. public DataSecurityRequest Data { get; set; }
  12. public string Password { get; set; }
  13. public SetPasswordRequest()
  14. {
  15. Header = new HeaderPacket();
  16. Params = new ParamsRequest();
  17. Data = new DataSecurityRequest();
  18. }
  19. public void Build()
  20. {
  21. Header.Build(PduType.Userdata, Params.PacketLength, Data.PacketLength);
  22. if (Password.IsNotEmpty())
  23. {
  24. Header.Build(PduType.Userdata, Params.PacketLength, Data.PacketLength);
  25. Params.Build(true, 0x00, GrType.GrSecurity, PduFuncType.SFunEnterPwd);
  26. Data.Build(Password.PadRight(8, ' ').ToCharArray());
  27. }
  28. else
  29. {
  30. Header.Build(PduType.Userdata, Params.PacketLength, (ushort)(Data.PacketLength - 8));
  31. Params.Build(true, 0x00, GrType.GrSecurity, PduFuncType.SFunCancelPwd);
  32. }
  33. Params.Uk = 0x11;
  34. }
  35. public ByteBuffer GetBuffer()
  36. {
  37. ByteBuffer buffer = ByteBuffer.Allocate();
  38. Header.GetByteBuffer(buffer);
  39. Params.GetByteBuffer(buffer);
  40. Data.GetByteBuffer(buffer);
  41. return buffer;
  42. }
  43. }
  44. }