FuQiAlignerSmec.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System;
  2. using Aitex.Core.RT.Log;
  3. using Aitex.Core.RT.Event;
  4. using Aitex.Core.RT.DataCenter;
  5. using Aitex.Core.Util;
  6. using Aitex.Sorter.Common;
  7. using Aitex.Core.RT.Device;
  8. using MECF.Framework.Common.Communications;
  9. using MECF.Framework.Common.SubstrateTrackings;
  10. using System.Collections.Generic;
  11. using Aitex.Core.RT.SCCore;
  12. using System.IO.Ports;
  13. using System.Threading;
  14. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.AlignersBase;
  15. using Aitex.Core.Common;
  16. using Aitex.Core.RT.Device.Unit;
  17. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots;
  18. using Aitex.Core.RT.OperationCenter;
  19. using System.Diagnostics;
  20. namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.HonghuAligners
  21. {
  22. public class FuqiAlignerSmec : FuqiAligner
  23. {
  24. public FuqiAlignerSmec(string module, string name, string scRoot, int alignertype = 0)
  25. :base(module,name,scRoot,alignertype)
  26. {
  27. }
  28. public FuqiAlignerSmec(string module, string name, string scRoot, IoSensor[] dis,IoTrigger[] dos)
  29. : base(module, name, scRoot,dis,dos)
  30. {
  31. }
  32. public FuqiAlignerSmec(string module, string name, string scRoot, IoSensor[] dis, IoTrigger[] dos,WaferSize[] wsizes=null)
  33. : base(module, name, scRoot, dis, dos, wsizes)
  34. {
  35. }
  36. protected override bool fStartInit(object[] param)
  37. {
  38. lock (_locker)
  39. {
  40. _lstHandler.Clear();
  41. }
  42. _connection.ForceClear();
  43. lock (_locker)
  44. {
  45. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetUseNewCommand));
  46. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.Reset));
  47. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetWIDReaderOff));
  48. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetVacuumOnAfterAlign));
  49. if (SC.ContainsItem($"{_scRoot}.{Name}.CenterAndNotch") && SC.GetValue<bool>($"{_scRoot}.{Name}.CenterAndNotch"))
  50. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetCenterAndNotch));
  51. else
  52. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetOnlyNotch));
  53. if (_isEnableTwiceAdjustment)
  54. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetAdjustTwice));
  55. else
  56. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.SetAdjustFirstTime));
  57. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.RequestRecipe));
  58. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.RequestPlace));
  59. }
  60. _timerActionMonitor.Restart();
  61. return true;
  62. }
  63. protected override bool fReset(object[] param)
  64. {
  65. if (base.fReset(param))
  66. {
  67. lock (_locker)
  68. {
  69. _lstHandler.AddLast(new FuqiRequestHandler(this, FuqiAlignerCommand.RequestRecipe));
  70. }
  71. return true;
  72. }
  73. return false;
  74. }
  75. }
  76. }