using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; using BRS.Common.Model.Helper; using System.Windows.Forms; using BRS.UI.Main.Properties; using System.Reflection; using System.Resources; namespace BRS.UI.Main { /// /// 配置文件夹以及示例数据处理 /// public static class SampleHelper { private static readonly List Folders = new List { "Configs", //"DataBase", //"Images", "Logs", //"Models", //"Result", //"Samples", //"Vision", }; /// /// 初始化文件夹 /// /// private static void InitFolder(string path) { Folders.ForEach(folder => { Directory.CreateDirectory(Path.Combine(path, folder)); }); } /// /// 解压缩Sample数据 /// /// private static void Extract(string path) { // 7z.exe x FN_Inference.7z -pxkrs0425 -o"J:\test data" var currentDir = Environment.CurrentDirectory; var _7z = Path.Combine(currentDir, "7z.exe"); var sampleFile = Path.Combine(currentDir, "data", "Sample.7z"); ProcessStartInfo psi = new ProcessStartInfo(_7z); psi.UseShellExecute = false; psi.CreateNoWindow = true; psi.Arguments = $"x {sampleFile} -pxkrs0425 -o\"{path}\""; System.Diagnostics.Process.Start(psi); } private static void GenerateConfig(string basePath) { // 初始化配置文件 Assembly assem = Assembly.GetEntryAssembly(); ResourceManager rm = new ResourceManager("BRS.UI.Main.Properties.Resources", assem); string defaultConfigStr = rm.GetString("DefaultConfigStr"); //资源文件名称不带扩展名 object defaultConfig = rm.GetObject("DefaultConfig"); // 离线图片目录 string strOfflineImgDir = Path.Combine(basePath, "SampleImages").Replace("\\", "\\\\"); defaultConfigStr = defaultConfigStr.Replace("%SAMPLE_OFFLINE_IMAGE_DIR%", strOfflineImgDir); // 模型 string strModelPath = Path.Combine(basePath, "Models", "FN_Model.onnx").Replace("\\", "\\\\"); defaultConfigStr = defaultConfigStr.Replace("%SAMPLE_MODEL_PATH%", strModelPath); //标签 string strLabelPath = Path.Combine(basePath, "Models", "FN_Class.txt").Replace("\\", "\\\\"); defaultConfigStr = defaultConfigStr.Replace("%SAMPLE_LABEL_PATH%", strLabelPath); // 图片保存路径 string strImgSaveDir = Path.Combine(basePath, "Images").Replace("\\", "\\\\"); defaultConfigStr = defaultConfigStr.Replace("%SAMPLE_IMAGE_SAVE_DIR%", strImgSaveDir); // 日志 string strLogPath = Path.Combine(basePath, "Logs").Replace("\\", "\\\\"); defaultConfigStr = defaultConfigStr.Replace("%SAMPLE_LOG_PATH%", strLogPath); // 配置文件保存路径 string strConfigPath = Path.Combine(basePath, "Configs", "Config.json"); using (StreamWriter writer = new StreamWriter(strConfigPath, false, Encoding.UTF8)) { writer.WriteLine(defaultConfigStr); writer.Flush(); } } /// /// 初始化配置数据 /// public static void Init() { bool settingChecked = false; // 配置文件不存在 while (!settingChecked) { if (settingChecked) { Environment.Exit(1); } // 设置目录 string myDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var retPath = Path.Combine(myDoc, "A020"); // var retPath = Path.Combine(dialog.SelectedPath, "Configs"); // 将配置写入文件 string defaultSetting = "{\"ProcessCodes\":[],\"ProductionCodes\":[\"Default\"],\"DefaultProcess\":\"A020\",\"DefaultProduction\":\"\",\"ConfigPath\":\"" + Path.Combine(retPath, "Configs").Replace("\\", "\\\\") + "\",\"Description\":\"振动盘供料缺陷检测系统\",\"IconPath\":null,\"CurrLayout\":\"Default\",\"IsMinimumWhenClose\":false}"; SettingHelper.InitWithContent(defaultSetting); settingChecked = true; // 创建文件夹 InitFolder(retPath); // 解压缩示例数据 // Extract(retPath); // 生成配置文件 GenerateConfig(retPath); } } ///// ///// 初始化配置数据 ///// //public static void Init() //{ // bool settingChecked = false; // // 配置文件不存在 // while (!settingChecked) // { // if (settingChecked) // { // Environment.Exit(1); // } // // 设置目录 // MessageBox.Show("首次使用软件,请选择一个空文件夹作为数据目录,路径中请勿包含中文", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // bool dirOk = false; // FolderBrowserDialog dialog = new FolderBrowserDialog(); // dialog.ShowNewFolderButton = true; // dialog.Description = "请选择数据目录(不允许中文路径)"; // while (!dirOk) // 检查是否选择好了目录 // { // if (dialog.ShowDialog() == DialogResult.OK) // { // bool haveChinese = dialog.SelectedPath.ToCharArray().Any(c => c > 0xff); // if (haveChinese) // { // MessageBox.Show("路径中包含中文,请重新选择", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); // continue; // } // var subEntities = Directory.GetFileSystemEntries(dialog.SelectedPath).Length; // if (subEntities > 0) // { // MessageBox.Show("目录非空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); // continue; // } // dirOk = true; // } // else // { // MessageBox.Show("请选择数据目录", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // } // } // var retPath = dialog.SelectedPath; //Path.Combine(dialog.SelectedPath, "DefectDetectionData"); // // var retPath = Path.Combine(dialog.SelectedPath, "Configs"); // // 将配置写入文件 // string defaultSetting = "{\"ProcessCodes\":[],\"ProductionCodes\":[\"Default\"],\"DefaultProcess\":\"A020\",\"DefaultProduction\":\"\",\"ConfigPath\":\"" // + Path.Combine(dialog.SelectedPath, "Configs").Replace("\\", "\\\\") // + "\",\"Description\":\"振动盘供料缺陷检测系统\",\"IconPath\":null,\"CurrLayout\":\"Default\",\"IsMinimumWhenClose\":false}"; // SettingHelper.InitWithContent(defaultSetting); // settingChecked = true; // // 创建文件夹 // InitFolder(retPath); // // 解压缩示例数据 // Extract(retPath); // // 生成配置文件 // GenerateConfig(retPath); // } //} } }