Example #1
0
        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]);
        }
Example #2
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);
            }
        }
Example #3
0
        public FormDelays(ClassBeamFile beamFile)
        {
            InitializeComponent();
            this.beamFile = beamFile;

            init();
        }
Example #4
0
 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);
 }
Example #5
0
        /**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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
File: Form1.cs Project: zjyu1/ASCAN
        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);
            }
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
File: Form1.cs Project: zjyu1/ASCAN
        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();
        }
Example #13
0
 public ClassCouple(probe pro, wedge wed, int startele)
 {
     Probe    = pro;
     Wedge    = wed;
     beamfile = CoupleDelay(startele);
 }
Example #14
0
 public BinForm(ClassBeamFile beamFile)
 {
     InitializeComponent();
     this.beamFile = beamFile;
 }