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; })); } }); }
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; } }