using System; using System.Text; using System.Linq; using System.Drawing; using System.Diagnostics; using System.Windows.Forms; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic; using Tango.PMR.Stubs; using Tango.Stubs; const Int32 FPGA3 = 0x60000800; const Int32 F3_VALVE_OUT = 0x0E2; /* 7 8 5 6 3 4 1 2 FRONT */ const Int32 MIDTANK2MANIF4_VALVE_2 = 1 << 0;//8 const Int32 MIDTANK2MANIF4_VALVE_1 = 1 << 1;//4 const Int32 MIDTANK2MANIF3_VALVE_2 = 1 << 2;//7 const Int32 MIDTANK2MANIF3_VALVE_1 = 1 << 3;//3 const Int32 MIDTANK2MANIF2_VALVE_2 = 1 << 4;//6 const Int32 MIDTANK2MANIF2_VALVE_1 = 1 << 5;//2 const Int32 MIDTANK2MANIF1_VALVE_2 = 1 << 6;//5 const Int32 MIDTANK2MANIF1_VALVE_1 = 1 << 7;//1 const Int32 CART2MIDTANK4_VALVE_2 = 1 << 8 ;//8 const Int32 CART2MIDTANK4_VALVE_1 = 1 << 9 ;//4 const Int32 CART2MIDTANK3_VALVE_2 = 1 << 10;//7 const Int32 CART2MIDTANK3_VALVE_1 = 1 << 11;//3 const Int32 CART2MIDTANK2_VALVE_2 = 1 << 12;//6 const Int32 CART2MIDTANK2_VALVE_1 = 1 << 13;//2 const Int32 CART2MIDTANK1_VALVE_2 = 1 << 14;//5 const Int32 CART2MIDTANK1_VALVE_1 = 1 << 15;//1 public void OnExecute(StubManager stubManager) { int MidTank_No = 0; var response = stubManager.ShowResponseWindow("Enter Midtank number to OPEN the 2Way valves (1-8), \nOr '0' to CLOSE all :", ""); stubManager.Write("\n"); MidTank_No = int.Parse(response); switch (MidTank_No) { case 1: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK1_VALVE_1); stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF1_VALVE_1); break; case 2: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK2_VALVE_1); stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF2_VALVE_1); break; case 3: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK3_VALVE_1); stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF3_VALVE_1); break; case 4: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK4_VALVE_1); stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF4_VALVE_1); break; case 5: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK1_VALVE_2); stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF1_VALVE_2); break; case 6: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK2_VALVE_2); stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF2_VALVE_2); break; case 7: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK3_VALVE_2); stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF3_VALVE_2); break; case 8: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, CART2MIDTANK4_VALVE_2); stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 | F3_VALVE_OUT, MIDTANK2MANIF4_VALVE_2); break; default: stubManager.Run("StubFpgaWriteRegRequest" ,FPGA3 + F3_VALVE_OUT, 0); // OFF break; } if(MidTank_No > 0 && MidTank_No < 9) { stubManager.Write("Open Valves #"); stubManager.Write(MidTank_No); stubManager.Write("\n"); } else { stubManager.WriteLine("Close all Valves !"); } }