ReadMultiHandle.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233
  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. namespace Houdar.PLC.Driver.Simenss.ProtocolHandle
  6. {
  7. public class ReadMultiHandle:IPacketHandle
  8. {
  9. public ushort PduLength { get; set; }
  10. public List<DataItem> DataItem { get; set; }
  11. public ResultCode ResultCode { get; private set; }
  12. public void Handle(IIsoSender sender)
  13. {
  14. ReadRequest read = new ReadRequest();
  15. read.ListItems = DataItem;
  16. ReadResponse res = sender.IsoSend<ReadRequest, ReadResponse>(read);
  17. ResultCode = res.Header.Error;
  18. if (ResultCode == ResultCode.OK)
  19. {
  20. for (int i = 0; i < res.DataItems.Count; i++)
  21. {
  22. var reqItem = DataItem[i];
  23. var resItem = res.DataItems[i];
  24. reqItem.Err = (ResultCode)resItem.ReturnCode;
  25. reqItem.Data = resItem.Data;
  26. if (reqItem.Err == ResultCode.OKFF)
  27. reqItem.Err = ResultCode.OK;
  28. }
  29. }
  30. }
  31. }
  32. }