public BeamPara(ClassChanpara chanpara, testBlock block, wedge wed, probe pro, position pos) { double xd = 0; double yd = 0; testblock = block; Wedge = wed; Probe = pro; Position = pos; activele = chanpara.activenb[0]; skewflag = GetSkewflag(chanpara.skew); if (chanpara.method == 0) { xd = chanpara.defectX; yd = chanpara.defectY; point = Direct(xd, yd, chanpara.interfaceAngle[0]); index = point.x[1]; } else if (chanpara.method == 1) { xd = chanpara.defectX; yd = 2 * testblock.BlockHeight - chanpara.defectY; point = Reflect(chanpara.defectX, chanpara.defectY, chanpara.interfaceAngle[0]); index = point.x[2]; } centerele = Centerelement(index, chanpara.interfaceAngle[0]); beamfile = Dealytime(xd, yd, centerele, chanpara.interfaceAngle[0]); }
/**Save to beamfile*/ private void save_Click(object sender, EventArgs e) { int i = 0; i = paraGrid.CurrentRow.Index; SaveFileDialog bfSaveDialog = new SaveFileDialog(); string filePath = Application.StartupPath + @"\BeamFile"; bfSaveDialog.Filter = "bm文件(*.bm)|*.bm|所有文件(*.*)|*.*"; if (!Directory.Exists(filePath)) { try { Directory.CreateDirectory(filePath); } catch { filePath = Application.StartupPath; } } bfSaveDialog.InitialDirectory = filePath; bfSaveDialog.FilterIndex = 1; if (bfSaveDialog.ShowDialog() == DialogResult.OK) { ClassBeamFile beamfile = beamlist[i]; String filename = bfSaveDialog.FileName; string date = string.Format("{0:yyyy-MM-dd HH_mm_ss}", DateTime.Now); date = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");//"G" SystemConfig.WriteConfigData(filename, "date", date); SystemConfig.WriteBase64Data(filename, "beamFile", beamfile); } }
public FormDelays(ClassBeamFile beamFile) { InitializeComponent(); this.beamFile = beamFile; init(); }
public ClassCouple(UltraProbe pro, UltraWedge wed, UTPosition pos, Groove gro, int startele, int skewflag) { probe = pro; wedge = wed; groove = gro; position = pos; grooveheight = groove.height.Sum(); beamfile = CoupleDelay(startele, skewflag); }
/**Get Beamfile.*/ public ClassBeamFile GetBeamfile(double defectX, double defectY, int[] centerele, double[] angle, int method) { double xd = 0; double yd = 0; int startele = 0; ClassBeamFile beam = new ClassBeamFile(); if (method == (int)PathMethod.Direct) { xd = defectX; yd = defectY; startele = centerele[0] - activele[0] / 2 + 1; beam.txDelay = GetDelay(xd, yd, startele, angle[0], 0); beam.rxDelay = beam.txDelay; beam.txSize = (uint)activele[0]; beam.rxSize = beam.txSize; beam.txElementBin = GetBeambin(startele, activele[0], skewflag); beam.rxElementBin = beam.txElementBin; } else if (method == (int)PathMethod.Reflect) { xd = defectX; yd = 2 * grooveheight - defectY; startele = centerele[0] - activele[0] / 2 + 1; beam.txDelay = GetDelay(xd, yd, startele, angle[0], 0); beam.rxDelay = beam.txDelay; beam.txSize = (uint)activele[0]; beam.rxSize = beam.txSize; beam.txElementBin = GetBeambin(startele, activele[0], skewflag); beam.rxElementBin = beam.txElementBin; } else if (method == (int)PathMethod.Series) { xd = defectX; yd = 2 * grooveheight - defectY; startele = centerele[0] - activele[0] / 2 + 1; beam.txDelay = GetDelay(xd, yd, startele, angle[0], 0); beam.txSize = (uint)activele[0]; beam.txElementBin = GetBeambin(startele, activele[0], skewflag); yd = 2 * grooveheight + defectY; startele = centerele[1] - activele[1] / 2 + 1; beam.rxDelay = GetDelay(xd, yd, startele, angle[1], 1); beam.rxSize = (uint)activele[1]; beam.rxElementBin = GetBeambin(startele, activele[1], skewflag); } return(beam); }
public BeamPara(ClassChanpara chanpara, Groove gro, UltraWedge wed, UltraProbe pro, UTPosition pos, GateInformation gate) { this.gate = gate; xd = chanpara.defectX; yd = chanpara.defectY; groove = gro; wedge = wed; probe = pro; position = pos; grooveheight = groove.height.Sum(); skewflag = GetSkewflag(chanpara.skew); if (chanpara.method == (int)PathMethod.Direct) { activele[0] = chanpara.activenb[0]; linepoint[0] = Direct(xd, yd, chanpara.interfaceAngle[0]); index = linepoint[0].x[1]; centerele[0] = Centerelement(index, chanpara.interfaceAngle[0], activele[0]); } else if (chanpara.method == (int)PathMethod.Reflect) { activele[0] = chanpara.activenb[0]; linepoint[0] = Reflect(xd, yd, chanpara.interfaceAngle[0]); index = linepoint[0].x[2]; centerele[0] = Centerelement(index, chanpara.interfaceAngle[0], activele[0]); } else if (chanpara.method == (int)PathMethod.Series) { activele[0] = chanpara.activenb[0]; activele[1] = chanpara.activenb[1]; linepoint[0] = Reflect(xd, yd, chanpara.interfaceAngle[0]); index = linepoint[0].x[2]; centerele[0] = Centerelement(index, chanpara.interfaceAngle[0], activele[0]); linepoint[1] = DoubleReflect(xd, yd, chanpara.interfaceAngle[1]); index = linepoint[1].x[3]; centerele[1] = Centerelement(index, chanpara.interfaceAngle[1], activele[1]); } CaculateFocuspoint(); beamfile = GetBeamfile(xd, yd, centerele, chanpara.interfaceAngle, chanpara.method); arrowpoint = GetArrow(linepoint, chanpara.method); GetPathtime(chanpara.method); }
private ClassBeamFile CoupleDelay(int startele) { ClassBeamFile beam = new ClassBeamFile(); double angle = BeamPara.TurntoRadian(Wedge.WedgeAngle); int i = 0; double delay = Math.Sin(angle) * Probe.ElementaryPitch / Wedge.WedgeVelocity; for (i = 0; i < COUPLENUM; i++) { beam.rxDelay[i] = (float)(i * delay); beam.txDelay[i] = (float)(i * delay); } beam.txSize = COUPLENUM; beam.rxSize = COUPLENUM; beam.txElementBin = BeamPara.GetBeambin(startele, COUPLENUM, 0); beam.rxElementBin = BeamPara.GetBeambin(startele, COUPLENUM, 0); return(beam); }
private void saveToXML(ClassBeamFile beamFile) { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); string filePath; if (lastFileName == null) { filePath = Application.StartupPath + @"\BeamFile"; } else { filePath = lastFileName; } if (filePath.IndexOf('\\') < 0 && filePath.IndexOf('/') < 0 || filePath.StartsWith(":")) { MessageBox.Show("路径格式错误!"); return; } string str = Directory.GetDirectoryRoot(filePath); //str = System.IO.Path.GetPathRoot(Path.GetFullPath( filePath)); if (!Directory.Exists(str)) { MessageBox.Show("该盘符不存在,请选择其他保存路径!"); return; } if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } saveFileDialog1.InitialDirectory = filePath; saveFileDialog1.Filter = "bm文件(*.bm)|*.bm|所有文件(*.*)|*.*"; saveFileDialog1.FilterIndex = 1; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string date = string.Format("{0:yyyy-MM-dd HH_mm_ss}", DateTime.Now); date = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");//"G" SystemConfig.WriteConfigData(saveFileDialog1.FileName, "date", date); SystemConfig.WriteBase64Data(saveFileDialog1.FileName, "beamFile", beamFile); lastFileName = Path.GetDirectoryName(saveFileDialog1.FileName); } }
public ClassBeamFile Dealytime(double xd, double yd, int centerele, double angle) { ClassBeamFile beam = new ClassBeamFile(); double xw = 0; double yw = 0; double xe = 0; double ye = 0; double tmax = 0; int i = 0; double[] time = new double[activele]; double probeangle = 0; double k = 0; int startele = 0; double reflectangle = 0; startele = centerele - activele / 2 - 1; probeangle = TurntoRadian(Wedge.WedgeAngle); k = (Math.Tan(probeangle)); reflectangle = TurntoRadian(angle); xw = (Position.WedgePosition + (int)((testblock.BlockHeight - testblock.BottomLength) / Math.Tan(reflectangle))); yw = -Wedge.WedgeLeftHeight; for (i = 0; i < activele; i++) { xe = (xw + (Position.ProbePosition + Probe.FirstDistance + (i + startele) * Probe.ElementaryPitch) * Math.Cos(probeangle)); ye = k * (xe - xw) + yw; time[i] = Pathtime(xe, ye, xd, yd, Wedge.WedgeVelocity, testblock.TestBlockVelocity); } tmax = time.Max(); for (i = 0; i < activele; i++) { beam.txDelay[i] = (float)(tmax - time[i]); beam.rxDelay[i] = (float)(tmax - time[i]); } beam.rxSize = (uint)activele; beam.txSize = (uint)activele; beam.txElementBin = GetBeambin(startele, activele, skewflag); beam.rxElementBin = GetBeambin(startele, activele, skewflag); return(beam); }
public static ClassBeamFile Dealytime(float xd, float yd, int centerele, wedge Wedge, probe Probe, position Position, testBlock testblock) { ClassBeamFile beamfile = new ClassBeamFile(); float xw = 0; float yw = 0; float xe = 0; float ye = 0; float tmax = 0; int i = 0; float[] time = new float[32]; float probeangle = 0; float k = 0; int startele = 0; float reflectangle = 0; startele = centerele - 15; probeangle = TurntoRadian(Wedge.WedgeAngle); k = (float)(Math.Tan(probeangle)); reflectangle = TurntoRadian(testblock.VAngle); xw = (float)(Position.WedgePosition + (testblock.BlockHeight - testblock.BottomLength) / Math.Tan(reflectangle)); yw = -Wedge.WedgeLeftHeight; for (i = 0; i < 32; i++) { xe = (float)(xw + (Position.ProbePosition + Probe.FirstDistance + (i + startele) * Probe.ElementaryInterSpace) * Math.Cos(probeangle)); ye = k * (xe - xw) + yw; time[i] = Pathtime(xe, ye, xd, 2 * testblock.BlockHeight - yd, Wedge.WedgeVelocity, testblock.TestBlockVelocity); } tmax = time.Max(); for (i = 0; i < 32; i++) { beamfile.txDelay[i] = tmax - time[i]; beamfile.rxDelay[i] = tmax - time[i]; } beamfile.rxSize = 32; beamfile.txSize = 32; beamfile.txElementBin = beamfileinit(startele, 32); beamfile.rxElementBin = beamfileinit(startele, 32); return(beamfile); }
private ClassBeamFile CoupleDelay(int startele, int skewflag) { double gatestart = 0; double gaterange = 0; double ys = 0; int i = 0; ClassBeamFile beam = new ClassBeamFile(); double angle = BeamPara.TurntoRadian(wedge.incidentAngle); double delay = Math.Sin(angle) * probe.eleSpace / wedge.transVeloc; for (i = 0; i < COUPLENUM; i++) { beam.rxDelay[i] = (float)(i * delay); beam.txDelay[i] = (float)(i * delay); } beam.txSize = COUPLENUM; beam.rxSize = COUPLENUM; beam.txElementBin = BeamPara.GetBeambin(startele, COUPLENUM, skewflag); beam.rxElementBin = BeamPara.GetBeambin(startele, COUPLENUM, skewflag); ys = wedge.height - ((position.probePosition + probe.eleEdge + startele * probe.eleSpace)) * Math.Sin(angle); gatestart = 2 * ys / Math.Cos(angle) / wedge.transVeloc; gaterange = grooveheight / groove.longVeloc * 2; gatei.delay = gatestart; gatei.range = gaterange; gatea.delay = gatei.delay + gaterange; gatea.range = gaterange; gateb.delay = gatea.delay + gaterange; gateb.range = gaterange; gatec.delay = gateb.delay + gaterange; gatec.range = gaterange; gatedelay.Add(gatei); gatedelay.Add(gatea); gatedelay.Add(gateb); gatedelay.Add(gatec); return(beam); }
private void readFromTXT(string file) { int num = Convert.ToInt32(textBox1.Text); if (num <= 0) { return; } StreamReader sr = new StreamReader(file, Encoding.Default); String line; for (int i = 0; i < num; i++) { if ((line = sr.ReadLine()) != null) { ClassBeamFile beamFile = new ClassBeamFile(); beamFile.rxSize = 32; beamFile.txSize = 32; String[] arrays = line.Split('\t'); for (int j = 0; j < 32; j++) { beamFile.txDelay[j] = (float)((double)Convert.ToInt32(arrays[j]) / 1000 * 0.78); beamFile.rxDelay[j] = beamFile.txDelay[j]; } BinForm binForm = new BinForm(beamFile); binForm.ShowDialog(); saveToXML(beamFile); } else { break; } } sr.Close(); }
public ClassCouple(probe pro, wedge wed, int startele) { Probe = pro; Wedge = wed; beamfile = CoupleDelay(startele); }
public BinForm(ClassBeamFile beamFile) { InitializeComponent(); this.beamFile = beamFile; }