using System; using System.Text; using System.IO; 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; using System.Timers; const int MidTank_UNDER_TEST =24; int [] Convert_Midtank_No = new Int32 [8] {1,3,5,7,2,4,6,8}; uint [,] ADC_Add_Chnl = new uint [8,2] { {0x44,0x20}, {0x44,0x08}, {0x46,0x80}, {0x46,0x20}, {0x44,0x10}, {0x44,0x04}, {0x46,0x40}, {0x46,0x10}, }; string [,] Units_status_MidTank = new string[MidTank_UNDER_TEST,2] { {"Midtank1_Valve_Air","Not Test"}, //0 {"Midtank1_Valve_Ink","Not Test"}, //1 {"Midtank1_Pressure_Sensor","Not Test"}, //2 {"Midtank2_Valve_Air","Not Test"}, //3 {"Midtank2_Valve_Ink","Not Test"}, //4 {"Midtank2_Pressure_Sensor","Not Test"}, //5 {"Midtank3_Valve_Air","Not Test"}, //6 {"Midtank3_Valve_Ink","Not Test"}, //7 {"Midtank3_Pressure_Sensor","Not Test"}, //8 {"Midtank4_Valve_Air","Not Test"}, //9 {"Midtank4_Valve_Ink","Not Test"}, //10 {"Midtank4_Pressure_Sensor","Not Test"}, //11 {"Midtank5_Valve_Air","Not Test"}, //12 {"Midtank5_Valve_Ink","Not Test"}, //13 {"Midtank5_Pressure_Sensor","Not Test"}, //14 {"Midtank6_Valve_Air","Not Test"}, //15 {"Midtank6_Valve_Ink","Not Test"}, //16 {"Midtank6_Pressure_Sensor","Not Test"}, //17 {"Midtank7_Valve_Air","Not Test"}, //18 {"Midtank7_Valve_Ink","Not Test"}, //19 {"Midtank7_Pressure_Sensor","Not Test"}, //20 {"Midtank8_Valve_Air","Not Test"}, //21 {"Midtank8_Valve_Ink","Not Test"}, //22 {"Midtank8_Pressure_Sensor","Not Test"}, //23 }; //-------------------------------------------------------------------------------- public Task MidTank_test( Action settext, CancellationToken cancellationToken, string SN, string Location) { Task task = null; // Start a task and return it task = Task.Run(() => { stubManager.Write("S/N:" +SN+ "\n"); stubManager.Write("Location:" +Location+ "\n"); stubManager.Write("-----------------------\n"); copy_table (MidTank_UNDER_TEST,Units_status_MidTank); stubManager.Write("+++++++++++++++++++\n"); settext("Test MidTank"); Test_MIDTANK(); Status=write_to_file(SN,Location,MidTank_UNDER_TEST,"MidTank"); settext("End Test"); decimal result = 0; return result; }); return task; } //------------------------------------ int Test_MIDTANK() { double Pressur_Volt; double temp; for (Int32 i=1;i<9;i++) { open_valve(i,1,1) ; //open Air valve open_valve(i,0,1) ; //open Ink valve delay(2000); Pressur_Volt=read_pressuere_sense(i); if ((Pressur_Volt>3 )||(Pressur_Volt<2)) { Units_status[(i-1)*3+2,1]="Fail"; stubManager.Write("pressuere_sense of midtank" + i +"\tFail\n"); } else { close_valve(i,0,0) ; //close Ink valve DialogResult result = MessageBox.Show("ADD 20cc air thru Ink valve of Midtank"+ i, "Warning"); close_valve(i,1,0) ; //close Air valve delay(2000); temp=read_pressuere_sense(i); temp=temp-Pressur_Volt; if ((temp>0.5) && ( temp <2)) Units_status[(i-1)*3+2,1]="Pass"; else Units_status[(i-1)*3+2,1]="Fail"; } close_valve(i,0,0) ; //close Air valve close_valve(i,1,0) ; //close Ink valve } return 1; } double read_pressuere_sense(Int32 Midtank_Nm) { double Pressur_Volt; double calc; uint temp; adc_configuration((ADC_Add_Chnl[Midtank_Nm-1,0]),(ADC_Add_Chnl[Midtank_Nm-1,1]) ); //configure address and channel of midtank adc_set_for_read_ch(ADC_Add_Chnl[Midtank_Nm-1,0]); temp =adc_read_ch(ADC_Add_Chnl[Midtank_Nm-1,0]); calc= (double)temp *2.5 / 4096.0; Pressur_Volt = (1.96- calc) * 4.64 + 1.96; stubManager.Write("pressure sense of midtank " + Midtank_Nm + "is " + Pressur_Volt+ "Volt\n"); return Pressur_Volt; } //-------------------------------- int open_valve (int valve_nm,int valve_type,int check_valve) //valve_type=0 is Air ,1 is Ink ; check_valve=1 send feedbak { int temp1=Convert_Midtank_No[valve_nm-1] ; string temp; SetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 1); if (check_valve!=0) { temp="Air "; if (valve_type==1) temp="Ink "; DialogResult result = MessageBox.Show("Did " + temp + "Valve of Midtank " + valve_nm +" open?", "Warning",MessageBoxButtons.YesNo); if(result == DialogResult.No) { Units_status[(valve_nm-1)*3+valve_type,1]="Fail"; stubManager.Write(temp +"Valve\tFail\n"); return 0; } else { Units_status[(valve_nm-1)*3+valve_type,1]="Pass"; stubManager.Write(temp +"Valve\tOpen\n"); return 1; } } return 1; } //-------------------------------- int close_valve (int valve_nm,int valve_type,int check_valve) { int temp1=Convert_Midtank_No[valve_nm-1]; string temp; SetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 0); if (check_valve!=0) { temp="Air"; if (valve_type==1) temp="Ink"; DialogResult result = MessageBox.Show("Did " + temp +" Valve of Midtank " + valve_nm +" close?", "Warning",MessageBoxButtons.YesNo); if(result == DialogResult.No) { Units_status[(valve_nm-1)*3+valve_type,1]="Fail"; stubManager.Write(temp +"Valve\tFail\n"); return 0; } else { Units_status[(valve_nm-1)*3+valve_type,1]="Pass"; stubManager.Write(temp +"Valve\tclose\n"); return 1; } } return 1; } //--------------------------------