WriteMultiHandle.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Collections.Generic;
  3. using Houdar.PLC.Driver.Simenss.Protocol.Common;
  4. using Houdar.PLC.Driver.Simenss.Protocol.ReadData;
  5. using Houdar.PLC.Driver.Simenss.Protocol.WriteData;
  6. namespace Houdar.PLC.Driver.Simenss.ProtocolHandle
  7. {
  8. public class WriteMultiHandle:IPacketHandle
  9. {
  10. public ushort PduLength { get; set; }
  11. public List<DataItem> DataItem { get; set; }
  12. public ResultCode ResultCode { get; private set; }
  13. public void Handle(IIsoSender sender)
  14. {
  15. WriteRequest write = new WriteRequest();
  16. write.DataItems = DataItem;
  17. var res = sender.IsoSend<WriteRequest, WriteResponse>(write);
  18. ResultCode = res.Header.Error;
  19. if (ResultCode == ResultCode.OK)
  20. {
  21. for (int i = 0; i < res.Data.Length; i++)
  22. {
  23. var reqItem = DataItem[i];
  24. var resItem = res.Data[i];
  25. reqItem.Err = (ResultCode)resItem.ReturnCode;
  26. if (reqItem.Err == ResultCode.OKFF)
  27. reqItem.Err = ResultCode.OK;
  28. }
  29. }
  30. }
  31. }
  32. }