添加项目文件。
This commit is contained in:
237
src/BRS.UI.Main/SampleHelper.cs
Normal file
237
src/BRS.UI.Main/SampleHelper.cs
Normal file
@ -0,0 +1,237 @@
|
||||
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
|
||||
{
|
||||
/// <summary>
|
||||
/// 配置文件夹以及示例数据处理
|
||||
/// </summary>
|
||||
public static class SampleHelper
|
||||
{
|
||||
|
||||
private static readonly List<string> Folders = new List<string> {
|
||||
"Configs",
|
||||
//"DataBase",
|
||||
//"Images",
|
||||
"Logs",
|
||||
//"Models",
|
||||
//"Result",
|
||||
//"Samples",
|
||||
//"Vision",
|
||||
};
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 初始化文件夹
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
private static void InitFolder(string path)
|
||||
{
|
||||
Folders.ForEach(folder =>
|
||||
{
|
||||
Directory.CreateDirectory(Path.Combine(path, folder));
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解压缩Sample数据
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 初始化配置数据
|
||||
/// </summary>
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
///// <summary>
|
||||
///// 初始化配置数据
|
||||
///// </summary>
|
||||
//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);
|
||||
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user