banboshi_V1/halftoneproject-master/Code/Config.cs

498 lines
25 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json.Linq;
using ProductionControl.Utils;
namespace ProductionControl
{
public class Config
{
public static Models.User loginUser;
public static bool HeightDevIOState;
public static Dictionary<string, string> dicDevType = new Dictionary<string, string>();
//
public static string appBasePath = "";
public static string CustomerVer = "A";
//跳过检测设备
public static bool SkipAxis0, SkipAxis1, SkipAxis2, SkipAxis3;
public static bool SkipTension, SkipHeight, SkipLight, SkipScannerGL, SkipScannerCC, SkipSmallAxis;
//启用功能 2023-1023
public static bool OpenMarkErrorStop;
//启用缺陷分布功能
public static bool OpenFlawDistribution;
//启用X轴校准 2023-12-20
public static bool OpenAxisXCalibration;
//DEV
public static int[] Axis_PulseOutMode=new int[4];
public static int[] Axis_MM2PulseNum = new int[4] { 5000, 5000, 5000, 1000};//1mm对应脉冲数
public static int[] Axis_HomeMode = new int[4];
public static int[] Axis_HomeDir = new int[4];//回Home方向
//回HOME速度
public static JArray Axis_HomeVelLow = new JArray();
public static JArray Axis_HomeVelHigh = new JArray();
public static JArray Axis_HomeAcc = new JArray();
public static JArray Axis_HomeDec = new JArray();
public static string IOCard_DeviceNum = "PCI-1730,BID#0";
public static LightDevNameEnum Light_Name= LightDevNameEnum.;
public static int Light_PortNum = 1;//COM端口号
public static int Tension_PortNum = 7;//COM端口号
public static double Tension_Offset = 0;//张力偏移值
public static string SmallAxis_ComName = "COM2";//COM端口号
public static string HeightDev_IP = "192.168.3.35";
public static int HeightDev_Port = 64000;
public static decimal HeightDev_SafeValue = 0;//厚度传感器安全值(axis移动前的前提条件)
public static string Scanner_GENTL_CTI = "ScannerRuntime\\Win64_x64\\MvFGProducerCXP.cti";//板卡相机
//public static string Scanner_GENTL_CTI = "ScannerRuntime\\Win64_x64\\MvFGProducerCML.cti";//GE相机
public static string SizeEnginePath;
public static string SizeBmp_SavePath, SizeBmp_Compare_SavePath, SizeBmp_Zoom_Image_SavePath;
public static double SizeBmp_SavePath_AutoClear = -1, SizeBmp_Compare_SavePath_AutoClear = -1, SizeBmp_Zoom_Image_SavePath_AutoClear = -1;
//缺陷配置
public static Size Defect_CutSize, Defect_ReSize;
public static float Defect_Thresholds;
public static string Defect_SavePath, Defect_Compress_SavePath, Defect_Small_SavePath, Defect_SrcSmall_SavePath;
public static double Defect_SavePath_AutoClear =-1,Defect_Compress_SavePath_AutoClear=-1,Defect_Small_SavePath_AutoClear=-1, Defect_SrcSmall_SavePath_AutoClear = -1;
public static double Defect_SrcSmall_Thres;
public static bool SaveAllDefectImg, MakeTag;
public static double PT_Offset = 0;//PT偏移值
public static double LineWidth_Offset = 0;//线宽偏移值
//尺寸配置
//public static string Size_LoadPath, Size_FileName;
//
public static Dictionary<CMDName, JObject> CMDProcess;
//DB
//有些服务器防火墙有问题需要加上 min pool size=1 避免认为是恶意请求
//如果用到bulkCopy需要加 AllowLoadLocalInfile=true
//public static string dbMysqlCon = "server=localhost;Database=ProductionDB;Uid=root;Pwd=123456;";
public static string DBConStr = "server=localhost;Database=ProductionDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true";
//LOG
public static string LogPath;
//WEBService
public static string LocalIp="";
public static int LocalHttpPort=18082, LocalSocketPort;
public static int timeout_http_wait = -1;//webapi超时限制,-1为无限制一直等待
//==========位置 初始位 上料位 下料位(下料位不存在时使用上料位)
public static JObject joPTSetting = new JObject()
{
{ "initPT", null },
{ "upPT", null},
{ "downPT", null}
};
//=========全局按钮
//public static JObject joGButtonSetting = new JObject() {
// { "start", null },
// { "pause", null},
// { "reset", null},
// { "warning", null},
// { "iodefault", null}
//};
public static void DelectPictureFile()
{
//删除文件
Task.Factory.StartNew(() =>
{
// CreateSysFolder();
//
//DeleteFiles(appBasePath + "\\temp\\");
//
if (Defect_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_SavePath, Defect_SavePath_AutoClear, true);
if (Defect_Compress_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_Compress_SavePath, Defect_Compress_SavePath_AutoClear, true);
if (Defect_Small_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_Small_SavePath, Defect_Small_SavePath_AutoClear, true);
if (Defect_SrcSmall_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_SrcSmall_SavePath, Defect_SrcSmall_SavePath_AutoClear, true);
//
if (SizeBmp_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_SavePath, SizeBmp_SavePath_AutoClear, true);
if (SizeBmp_Compare_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_Compare_SavePath, SizeBmp_Compare_SavePath_AutoClear, true);
if (SizeBmp_Zoom_Image_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_Zoom_Image_SavePath, SizeBmp_Zoom_Image_SavePath_AutoClear, true);
});
}
public static void LoadAllConfig()
{
if (string.IsNullOrWhiteSpace(appBasePath))
appBasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
//删除文件
Task.Factory.StartNew(() =>
{
CreateSysFolder();
//
DeleteFiles(appBasePath+"\\temp\\");
//
if (Defect_SavePath_AutoClear>=0)
DeleteFiles(Config.Defect_SavePath, Defect_SavePath_AutoClear,true);
if (Defect_Compress_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_Compress_SavePath, Defect_Compress_SavePath_AutoClear, true);
if (Defect_Small_SavePath_AutoClear>=0)
DeleteFiles(Config.Defect_Small_SavePath, Defect_Small_SavePath_AutoClear, true);
if (Defect_SrcSmall_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_SrcSmall_SavePath, Defect_SrcSmall_SavePath_AutoClear, true);
//
if (SizeBmp_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_SavePath, SizeBmp_SavePath_AutoClear, true);
if (SizeBmp_Compare_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_Compare_SavePath, SizeBmp_Compare_SavePath_AutoClear, true);
if (SizeBmp_Zoom_Image_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_Zoom_Image_SavePath, SizeBmp_Zoom_Image_SavePath_AutoClear, true);
});
InitDevDic();
LoadSysConfig();
LoadPTConfig();
//
string lsCmdPath = appBasePath + "\\CMDProcess\\";
if(!Directory.Exists(lsCmdPath))
Directory.CreateDirectory(lsCmdPath);
string fileName;
CMDProcess = new Dictionary<CMDName, JObject>();
foreach (int item in Enum.GetValues(typeof(CMDName)))//item为key值
{
//string name = Enum.GetName(typeof(CMDName), item);//获取名称
fileName = lsCmdPath + item + ".json";
if (File.Exists(fileName))
CMDProcess.Add((CMDName)item, JObject.Parse(File.ReadAllText(fileName)));
//else
// CMDProcess.Add((CMDName)item, null);
}
}
public static void LoadSysConfig()
{
if (string.IsNullOrWhiteSpace(appBasePath))
appBasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string configPath = appBasePath + "\\SysConfig.ini";
string lsTmp = "";
CustomerVer = Util.ReadIniValue(configPath, "VER", "CustomerVer");
if (string.IsNullOrWhiteSpace(CustomerVer))
CustomerVer = "A";
//Skip
SkipAxis0 = Util.ReadIniValue(configPath, "SKIP", "SkipAxis0") =="1";
SkipAxis1 = Util.ReadIniValue(configPath, "SKIP", "SkipAxis1") == "1";
SkipAxis2 = Util.ReadIniValue(configPath, "SKIP", "SkipAxis2") == "1";
SkipAxis3 = Util.ReadIniValue(configPath, "SKIP", "SkipAxis3") == "1";
SkipTension = Util.ReadIniValue(configPath, "SKIP", "SkipTension") == "1";
SkipHeight = Util.ReadIniValue(configPath, "SKIP", "SkipHeight") == "1";
SkipLight = Util.ReadIniValue(configPath, "SKIP", "SkipLight") == "1";
SkipScannerGL = Util.ReadIniValue(configPath, "SKIP", "SkipScannerGL") == "1";
SkipScannerCC = Util.ReadIniValue(configPath, "SKIP", "SkipScannerCC") == "1";
SkipSmallAxis = Util.ReadIniValue(configPath, "SKIP", "SkipSmallAxis") == "1";
OpenMarkErrorStop = Util.ReadIniValue(configPath, "SKIP", "MarkErrorStop") == "1";
OpenFlawDistribution = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1";
OpenAxisXCalibration = Util.ReadIniValue(configPath, "SKIP", "OpenAxisXCalibration") == "1";
//DEV
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[0] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis1_PulseOutMode");
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[1] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis2_PulseOutMode");
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[2] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis3_PulseOutMode");
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[3] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_HomeMode");
if (Util.IsNumber(lsTmp)) Config.Axis_HomeMode[0] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis1_HomeMode");
if (Util.IsNumber(lsTmp)) Config.Axis_HomeMode[1] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis2_HomeMode");
if (Util.IsNumber(lsTmp)) Config.Axis_HomeMode[2] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis3_HomeMode");
if (Util.IsNumber(lsTmp)) Config.Axis_HomeMode[3] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_HomeDir");
if (Util.IsNumber(lsTmp)) Config.Axis_HomeDir[0] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis1_HomeDir");
if (Util.IsNumber(lsTmp)) Config.Axis_HomeDir[1] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis2_HomeDir");
if (Util.IsNumber(lsTmp)) Config.Axis_HomeDir[2] = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis3_HomeDir");
if (Util.IsNumber(lsTmp)) Config.Axis_HomeDir[3] = Convert.ToInt32(lsTmp);
//
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeVelLow");
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_HomeVelLow = JArray.Parse(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeVelHigh");
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_HomeVelHigh = JArray.Parse(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeAcc");
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_HomeAcc = JArray.Parse(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeDec");
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_HomeDec = JArray.Parse(lsTmp);
//
lsTmp = Util.ReadIniValue(configPath, "DEV", "Light_Name");
if (Util.IsNumber(lsTmp)) Config.Light_Name = (LightDevNameEnum)Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Light_PortNum");
if (Util.IsNumber(lsTmp)) Config.Light_PortNum = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Tension_PortNum");
if (Util.IsNumber(lsTmp)) Config.Tension_PortNum = Convert.ToInt32(lsTmp);
Config.SmallAxis_ComName = Util.ReadIniValue(configPath, "DEV", "SmallAxis_ComName");
lsTmp = Util.ReadIniValue(configPath, "DEV", "Tension_Offset");
if (string.IsNullOrEmpty(lsTmp))
Config.Tension_Offset = 0;
else
Config.Tension_Offset = double.Parse(lsTmp);
HeightDev_IP = Util.ReadIniValue(configPath, "DEV", "HeightDev_IP");
lsTmp = Util.ReadIniValue(configPath, "DEV", "HeightDev_Port");
if (Util.IsNumber(lsTmp)) Config.HeightDev_Port = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "HeightDev_SafeValue");
if (Util.IsNumber(lsTmp)) Config.HeightDev_SafeValue = Convert.ToDecimal(lsTmp);
IOCard_DeviceNum = Util.ReadIniValue(configPath, "DEV", "IOCard_DeviceNum");
Defect_SavePath = Util.ReadIniValue(configPath, "DEV", "Defect_SavePath");
lsTmp = Util.ReadIniValue(configPath, "DEV", "Defect_SavePath_AutoClear");
if (Util.IsDecimal(lsTmp)) Defect_SavePath_AutoClear = Convert.ToDouble(lsTmp);
Defect_Compress_SavePath = Util.ReadIniValue(configPath, "DEV", "Defect_Compress_SavePath");
lsTmp = Util.ReadIniValue(configPath, "DEV", "Defect_Compress_SavePath_AutoClear");
if (Util.IsDecimal(lsTmp)) Defect_Compress_SavePath_AutoClear = Convert.ToDouble(lsTmp);
Defect_Small_SavePath = Util.ReadIniValue(configPath, "DEV", "Defect_Small_SavePath");
lsTmp = Util.ReadIniValue(configPath, "DEV", "Defect_Small_SavePath_AutoClear");
if (Util.IsDecimal(lsTmp)) Defect_Small_SavePath_AutoClear = Convert.ToDouble(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "SaveAllDefectImg");
SaveAllDefectImg = (lsTmp == "1");
MakeTag = Util.ReadIniValue(configPath, "DEV", "MakeTag") == "1";
SizeEnginePath = Util.ReadIniValue(configPath, "DEV", "SizeEnginePath");
//////////////////////////////////////////////////////////////
///原始缺陷小图
Defect_SrcSmall_SavePath = Util.ReadIniValue(configPath, "DEV", "Defect_SrcSmall_SavePath");
lsTmp = Util.ReadIniValue(configPath, "DEV", "Defect_SrcSmall_SavePath_AutoClear");
if (Util.IsDecimal(lsTmp)) Defect_SrcSmall_SavePath_AutoClear = Convert.ToDouble(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "Defect_SrcSmall_Thres");
if (Util.IsDecimal(lsTmp)) Defect_SrcSmall_Thres = Convert.ToDouble(lsTmp);
//////////////////////////////////////////////////////////////
SizeBmp_SavePath = Util.ReadIniValue(configPath, "DEV", "SizeBmp_SavePath");
lsTmp = Util.ReadIniValue(configPath, "DEV", "SizeBmp_SavePath_AutoClear");
if (Util.IsDecimal(lsTmp)) SizeBmp_SavePath_AutoClear = Convert.ToDouble(lsTmp);
SizeBmp_Compare_SavePath = Util.ReadIniValue(configPath, "DEV", "SizeBmp_Compare_SavePath");
lsTmp = Util.ReadIniValue(configPath, "DEV", "SizeBmp_Compare_SavePath_AutoClear");
if (Util.IsDecimal(lsTmp)) SizeBmp_Compare_SavePath_AutoClear = Convert.ToDouble(lsTmp);
SizeBmp_Zoom_Image_SavePath = Util.ReadIniValue(configPath, "DEV", "SizeBmp_Zoom_Image_SavePath");
lsTmp = Util.ReadIniValue(configPath, "DEV", "SizeBmp_Zoom_Image_SavePath_AutoClear");
if (Util.IsDecimal(lsTmp)) SizeBmp_Zoom_Image_SavePath_AutoClear = Convert.ToDouble(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "PT_Offset");
if (string.IsNullOrEmpty(lsTmp))
Config.PT_Offset = 0;
else
Config.PT_Offset = double.Parse(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "DEV", "LineWidth_Offset");
if (string.IsNullOrEmpty(lsTmp))
Config.LineWidth_Offset = 0;
else
Config.LineWidth_Offset = double.Parse(lsTmp);
//DB
DBConStr = Util.ReadIniValue(configPath, "DB", "DBConStr");
//HTTP
LocalIp= Util.ReadIniValue(configPath, "HTTP", "LocalIp");
lsTmp = Util.ReadIniValue(configPath, "HTTP", "LocalHttpPort");
if (Util.IsNumber(lsTmp)) Config.LocalHttpPort = Convert.ToInt32(lsTmp);
lsTmp = Util.ReadIniValue(configPath, "HTTP", "LocalSocketPort");
if (Util.IsNumber(lsTmp)) Config.LocalSocketPort = Convert.ToInt32(lsTmp);
//LOG
LogPath = Util.ReadIniValue(configPath, "LOG", "LogPath");
//缺陷配置
Defect_CutSize = new Size(592, 532);
Defect_ReSize = new Size(224, 224);
Defect_Thresholds = 0.4f;
}
public static void LoadPTConfig()
{
if (string.IsNullOrWhiteSpace(appBasePath))
appBasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string configPath = appBasePath + "\\PTConfig.json";
string lsTmp = File.ReadAllText(configPath);
joPTSetting = JObject.Parse(lsTmp);
}
private static void InitDevDic()
{
//dicDevType.Add("CodeScanner", "扫码枪");//固定为必有开始
if(!dicDevType.ContainsKey("IOCard")) dicDevType.Add("IOCard", "I/O控制");
if (!dicDevType.ContainsKey("Tension")) dicDevType.Add("Tension", "张力测量");
if (!dicDevType.ContainsKey("Height")) dicDevType.Add("Height", "厚度测量");
if (!dicDevType.ContainsKey("Axis")) dicDevType.Add("Axis", "滑台电机");
if (!dicDevType.ContainsKey("AxisTag")) dicDevType.Add("AxisTag", "滑台&测量");
if (!dicDevType.ContainsKey("Light")) dicDevType.Add("Light", "光源");
if (!dicDevType.ContainsKey("Scanner_GENTL")) dicDevType.Add("Scanner_GENTL", "相机GENTL");
if (!dicDevType.ContainsKey("Scanner_CC")) dicDevType.Add("Scanner_CC", "相机CC");
if (!dicDevType.ContainsKey("SmallAxis")) dicDevType.Add("SmallAxis", "镜头电机");
if (!dicDevType.ContainsKey("Defect")) dicDevType.Add("Defect", "缺陷检测");
if (!dicDevType.ContainsKey("Size")) dicDevType.Add("Size", "尺寸测量");
if (!dicDevType.ContainsKey("For")) dicDevType.Add("For", "For循环");
if (!dicDevType.ContainsKey("If")) dicDevType.Add("If", "If条件");
}
private static void CreateSysFolder()
{
appBasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string dirPath = appBasePath + "\\Attachment\\";
if(!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath);
dirPath = appBasePath + "\\Temp\\";
if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath);
}
/// <summary>
///
/// </summary>
/// <param name="dirPath"></param>
/// <param name="days"></param>
/// <param name="delDir">把日期文件夹也按days进行删除格式:yyyyMMdd</param>
private static void DeleteFiles(string dirPath, double days = 0, bool delDir = false)
{
if (!Directory.Exists(dirPath)) return;
DateTime delDate = DateTime.Now.AddDays(-days);
API.OutputDebugString($"清除{delDate.ToString("yyyyMMdd")}前记录:{dirPath}。");
//删除dirPath中的过期文件
string[] files_list = Directory.GetFiles(dirPath);
if (days > 0)
files_list = files_list.Select(file => new FileInfo(file))
.Where(f => f.CreationTime <= delDate)
.Select(x => x.FullName)
.ToArray();
foreach (string file in files_list)
{
try
{
API.OutputDebugString($"清除文件:{file}...");
File.Delete(file);
}
catch (Exception ex)
{
API.OutputDebugString($"Ex1:{ex.Message}");
}
}
string[] dirsList = Directory.GetDirectories(dirPath, "20*");
foreach (string dir in dirsList)
{
string[] file_list = Directory.GetFiles(dir);
if (days > 0)
file_list = file_list.Select(file => new FileInfo(file))
.Where(f => f.CreationTime <= delDate)
.Select(x => x.FullName)
.ToArray();
foreach (string file in file_list)
{
try {
API.OutputDebugString($"清除文件:{file}...");
File.Delete(file);
} catch (Exception ex) {
API.OutputDebugString($"Ex1:{ex.Message}");
}
}
}
//
if (delDir)
{
int dateNum = 0;
if (days > 1)
dateNum = Convert.ToInt32(delDate.ToString("yyyyMMdd"));
else if (days > 0)
dateNum = Convert.ToInt32(delDate.ToString("yyyyMMdd")) - 1;
string floderName;
string[] dirList = Directory.GetDirectories(dirPath,"20*");
foreach (string dir in dirList)
{
floderName= dir.Trim('\\');
floderName = floderName.Substring(floderName.LastIndexOf('\\') + 1);
if (floderName.Length == 8 && Util.IsNumber(floderName) && Convert.ToInt32(floderName) <= dateNum)
{
try
{
API.OutputDebugString($"清除目录:{dir}...");
Directory.Delete(dir,true);
}
catch (Exception ex)
{
API.OutputDebugString($"Ex2:{ex.Message}");
}
}
}
}
}
public static long GetHardDiskSpace(string str_HardDiskName)
{
long result = 0L;
try
{
str_HardDiskName += ":\\";
DriveInfo[] drives = DriveInfo.GetDrives();
DriveInfo[] array = drives;
foreach (DriveInfo driveInfo in array)
{
if (driveInfo.Name == str_HardDiskName)
{
result = driveInfo.TotalFreeSpace / 1073741824;
}
}
}
catch {
result = 0;
}
return result;
}
public static bool CheckDisk(int max = 10)
{
string path = Config.Defect_SavePath;
string volume = path.Substring(0, path.IndexOf(':'));
long freespace = GetHardDiskSpace(volume);
if (freespace < max)
{
string tip = $"当前{volume}硬盘容量:{freespace}GB小于{max}GB。注意清理";
MessageBox.Show(tip, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
return true;
}
}
}