Пример #1
0
        private void CreateRaybtn_Click(object sender, EventArgs e)
        {
            string DataNow = DateTime.Now.ToString("yyyyMMddhhmmss");
            string PanelID = $"SCDESAM{DataNow}";

            Task.Run(() =>
            {
                Button btn = sender as Button;
                try
                {
                    this.Invoke(new Action(() => { btn.Enabled = false; }));
                    RaydiumAPI.SetCSVDataPath(DataPath);
                    RaydiumAPI.SetPanelID(PanelID);
                    eRadErr RayErr = RaydiumAPI.DoCreateBin();
                    RayErr         = RaydiumAPI.DoCreateBin(true);
                    if (RayErr != eRadErr.OK)
                    {
                        string msg = RaydiumAPI.GetErrorStr(RayErr);
                        MessageBox.Show(msg);
                        ShowLog(msg, WriteLogType.Error);
                        return;
                    }
                    int CheckSum = RaydiumAPI.ReadFileChecksum(PanelID);
                    ShowLog($"生成补偿数据,CheckSum:{CheckSum}", WriteLogType.Normal);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    this.Invoke(new Action(() => { btn.Enabled = true; }));
                }
            });
        }
Пример #2
0
        private void CreateCSVBtn_Click(object sender, EventArgs e)
        {
            //部分变量暂时是通过写死的方式;
            Button btn = sender as Button;

            try
            {
                int    Threshold1 = 40;
                int    Threshold2 = 100;
                int    Threshold3 = 50;
                string FilePath   = "";
                string Sufix      = "";
                btn.Enabled = false;
                eRadErr RadRes = eRadErr.OK;
                if (this.murasholdbox1.Text == "" || this.murasholdbox2.Text == "")
                {
                    MessageBox.Show("请设置MuraThreshold参数!");
                    return;
                }
                if (SelectHighPass == null)
                {
                    MessageBox.Show("请选择高通滤波数据生成方式!");
                    return;
                }
                float mThreshold1 = Convert.ToSingle(this.murasholdbox1.Text);
                float mThreshold2 = Convert.ToSingle(this.murasholdbox2.Text);

                List <Task>         Taskls = new List <Task>();
                FolderBrowserDialog folder = new FolderBrowserDialog();
                folder.Description = "选择所有文件存放的目录";
                if (folder.ShowDialog() == DialogResult.OK)
                {
                    FilePath = folder.SelectedPath;
                }
                foreach (Pattern patinfo in SelectModelRecipe.PatternArray)
                {
                    string ImgPath = "";
                    double t1 = 0, t2 = 0, t3 = 0;
                    float  muraNum = 0;
                    switch (patinfo.Color)
                    {
                    case "R":
                        ImgPath = $"{FilePath}\\Red{patinfo.Gary}.bmp";
                        break;

                    case "B":
                        ImgPath = $"{FilePath}\\blue{patinfo.Gary}.bmp";
                        break;

                    case "G":
                        ImgPath = $"{FilePath}\\Green{patinfo.Gary}.bmp";
                        break;

                    default:
                        break;
                    }
                    if (!File.Exists(ImgPath))
                    {
                        MessageBox.Show(ImgPath);
                        return;
                    }
                    StringBuilder SbImgPath = new StringBuilder(ImgPath);
                    StringBuilder SbCsvPath = new StringBuilder(ImgPath.Replace(".bmp", ".csv").Trim());
                    Taskls.Add(Task.Factory.StartNew(() =>
                    {
                        int Res = ImgProc.ImageProc(SbImgPath, SbCsvPath, patinfo.Size, Threshold1, Threshold2, Threshold3,
                                                    patinfo.Threshold4, SelectModelRecipe.Width, SelectModelRecipe.Height,
                                                    patinfo.OffsetH, patinfo.OffsetW, patinfo.Scale, true, true, true, ref t1,
                                                    ref t2, ref t3, 100, ref muraNum, mThreshold1, mThreshold2);
                        string ResMsg = ImgProc.GetErrorInfo((ImgProErrorCode)Res);
                        if (Res == (int)ImgProErrorCode.ImageError_Success)
                        {
                            ShowLog($"{Path.GetFileName(ImgPath)} Result:{ResMsg}", WriteLogType.Action);
                        }
                        else
                        {
                            ShowLog($"{Path.GetFileName(ImgPath)} Result:{ResMsg}", WriteLogType.Error);
                        }
                    }));
                }

                Task.WaitAll(Taskls.ToArray());

                switch (SelectHighPass)
                {
                case HighPassStyle.Open:
                    Sufix  = $"_HighPass_{50}";
                    RadRes = RaydiumAPI.DoCreateBin(FilePath, "./DMR_CFG.rad", Sufix);
                    break;

                case HighPassStyle.Close:
                    Sufix  = "";
                    RadRes = RaydiumAPI.DoCreateBin(FilePath, "./DMR_CFG.rad", Sufix);
                    break;

                case HighPassStyle.ClsAndSaveOpData:
                    Sufix  = "";
                    RadRes = RaydiumAPI.DoCreateBin(FilePath, "./DMR_CFG.rad", Sufix);
                    Sufix  = $"_HighPass_{50}";
                    RaydiumAPI.DoCreateBin(FilePath, "./DMR_CFG.rad", Sufix);
                    break;

                case HighPassStyle.OpAndSaveClsData:
                    Sufix  = $"_HighPass_{50}";
                    RadRes = RaydiumAPI.DoCreateBin(FilePath, "./DMR_CFG.rad", Sufix);
                    Sufix  = "";
                    RaydiumAPI.DoCreateBin(FilePath, "./DMR_CFG.rad", Sufix);
                    break;

                default:
                    break;
                }
                if (RadRes != eRadErr.OK)
                {
                    MessageBox.Show($"补偿数据生成失败!ErrorCode:{RadRes}");
                    return;
                }
                MessageBox.Show("Finished!");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                btn.Enabled = true;
            }
        }