498 lines
25 KiB
C#
498 lines
25 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|