WriteMultiHandle.cs 1.1 KB

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