MotorTOperate.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using SHJX.Service.Model.Control;
  3. using SHJX.Service.Control.Modules;
  4. using SHJX.Service.Control.Interface;
  5. using SHJX.Service.Common.ReadXML;
  6. namespace SHJX.Service.Control.Route.RouteController
  7. {
  8. public class MotorTOperate : FlowControlOperateImp
  9. {
  10. private const string OpName = "MotorT";
  11. public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
  12. {
  13. try
  14. {
  15. var res = data.Task.RouteStep switch
  16. {
  17. "T_Move_L" or "T_Move_W" => SendMove(data),
  18. "T_Move_GoBack_L" or "T_Move_GoBack_W" => SendGoBack(data),
  19. _ => throw new ArgumentNullException(data.Task.RouteStep),
  20. };
  21. return res;
  22. }
  23. catch (Exception)
  24. {
  25. throw;
  26. }
  27. }
  28. private bool SendMove(DataEventArgs data)
  29. {
  30. var portArgs = GetArg(data.Task.To);
  31. portArgs.WriteWay = WriteWay.Move;
  32. return data.Client.Factory(OpName).Write(portArgs);
  33. }
  34. private bool SendGoBack(DataEventArgs data)
  35. {
  36. var portArgs = GetArg(data.Task.To);
  37. portArgs.WriteWay = WriteWay.GoBack;
  38. portArgs.Distance = OpName.MotorFinal();
  39. return data.Client.Factory(OpName).Write(portArgs);
  40. }
  41. protected virtual PortArgs GetArg(string to)
  42. {
  43. return new()
  44. {
  45. TypeName = OpName,
  46. Distance = to.CalculateAreaPoint(OpName)
  47. };
  48. }
  49. }
  50. }