革博士程序V1仓库
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

983 строки
37 KiB

  1. using MaiMuControl.SysStatusMgr.UserMgr;
  2. using Newtonsoft.Json.Linq;
  3. using SqlSugar;
  4. using System;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13. using ToolKits.Ini;
  14. using ToolKits.mAPI;
  15. namespace GeBoShi.SysCtrl
  16. {
  17. /// <summary>
  18. /// 设备参数
  19. /// </summary>
  20. public class ConfMgr
  21. {
  22. #region 实例化
  23. /// <summary>
  24. /// 实例
  25. /// </summary>
  26. private static ConfMgr _instance;
  27. private static readonly object _lock = new object();
  28. public static ConfMgr Instance
  29. {
  30. get
  31. {
  32. if (_instance == null)
  33. {
  34. lock (_lock)
  35. {
  36. if (_instance == null)
  37. {
  38. _instance = new ConfMgr();
  39. }
  40. }
  41. }
  42. return _instance;
  43. }
  44. }
  45. #endregion
  46. #region 私有字段
  47. private readonly string _rootPath;
  48. private readonly string _configFile;
  49. private readonly string _projectDir;
  50. #endregion
  51. private ConfMgr()
  52. {
  53. _rootPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles");
  54. _configFile = Path.Combine(_rootPath, "SysParamsConfig.ini");
  55. _devConfigPath = Path.Combine(_rootPath, "DevParamsConfig.ini");
  56. _projectDir = Path.Combine(_rootPath, "Project");
  57. _specificationPath = Path.Combine(_rootPath, "革博士软件操作说明.docx");
  58. DBConStr = "server = localhost; Database = LeatherDB; Uid = root; Pwd = " + ConteolUserDB.GetSqlDBCode() + "; AllowLoadLocalInfile = true;";
  59. }
  60. #region 公开字段
  61. //DB
  62. //有些服务器防火墙有问题需要加上 min pool size=1 避免认为是恶意请求
  63. //如果用到bulkCopy需要加: AllowLoadLocalInfile=true
  64. public string DBConStr = "server=localhost;Database=LeatherDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true";
  65. /// <summary>
  66. /// 系统配置参数
  67. /// </summary>
  68. public SysConfigParams SysConfigParams { get; set; }
  69. private string _devConfigPath;
  70. /// <summary>
  71. /// 获取驱动配制文件路径
  72. /// </summary>
  73. public string DevConfigPath { get { return _devConfigPath; } }
  74. //public string ProjectDir { get { return _projectDir; } }
  75. public string ProjectDir { get { return SysConfigParams.ProductPath; } }
  76. /// <summary>
  77. /// 配置文件根路径
  78. /// </summary>
  79. public string ConfigDir { get { return _rootPath; } }
  80. /// <summary>
  81. /// 说明书路径
  82. /// </summary>
  83. public string SpecificationPath { get { return _specificationPath; } }
  84. private string _specificationPath;
  85. #endregion
  86. #region 公开文件操作
  87. #region 系统配置参数
  88. /// <summary>
  89. /// 写入ini
  90. /// </summary>
  91. /// <param name="SocketParams"></param>
  92. public void WriteSysConfParams(SysConfigParams SysParams)
  93. {
  94. //XmlHelper.Serialize<SysConfParams>(_configFile, sysConfParams);
  95. IniHelper iniHelper = new IniHelper(_configFile);
  96. //iniHelper.WriteBool("SaveAllImg", "SaveAllImg", SysParams.SaveAllImg);
  97. iniHelper.WriteString("DefectSrcImag", "SavePath", SysParams.DefectSrcImag.SavePath);
  98. iniHelper.WriteBool("DefectSrcImag", "AutoSave", SysParams.DefectSrcImag.AutoSave);
  99. iniHelper.WriteBool("DefectSrcImag", "AutoDelete", SysParams.DefectSrcImag.AutoDelete);
  100. iniHelper.WriteDouble("DefectSrcImag", "AutoDeleteDays", SysParams.DefectSrcImag.AutoDeleteDays);
  101. iniHelper.WriteString("DefectSmallImag", "SavePath", SysParams.DefectSmallImag.SavePath);
  102. iniHelper.WriteBool("DefectSmallImag", "AutoSave", SysParams.DefectSmallImag.AutoSave);
  103. iniHelper.WriteBool("DefectSmallImag", "AutoDelete", SysParams.DefectSmallImag.AutoDelete);
  104. iniHelper.WriteDouble("DefectSmallImag", "AutoDeleteDays", SysParams.DefectSmallImag.AutoDeleteDays);
  105. iniHelper.WriteString("DefectSplicImag", "SavePath", SysParams.DefectSplicImag.SavePath);
  106. iniHelper.WriteBool("DefectSplicImag", "AutoSave", SysParams.DefectSplicImag.AutoSave);
  107. iniHelper.WriteBool("DefectSplicImag", "AutoDelete", SysParams.DefectSplicImag.AutoDelete);
  108. iniHelper.WriteDouble("DefectSplicImag", "AutoDeleteDays", SysParams.DefectSplicImag.AutoDeleteDays);
  109. iniHelper.WriteString("Log", "SavePath", SysParams.LogPath);
  110. iniHelper.WriteBool("Log", "AutoDelete", SysParams.AutoDeleteLog);
  111. iniHelper.WriteDouble("Log", "AutoDeleteDays", SysParams.AutoDeleteLogData);
  112. iniHelper.WriteBool("SysFunction", "OpenBuzzer", SysParams.OpenBuzzer);
  113. iniHelper.WriteBool("SysFunction", "OpenDoor", SysParams.OpenDoor);
  114. iniHelper.WriteBool("SysFunction", "OpenIO", SysParams.OpenIO);
  115. iniHelper.WriteBool("SysFunction", "OpenPLC", SysParams.OpenPLC);
  116. iniHelper.WriteString("Dev", "LightCom", SysParams.LightCom);
  117. iniHelper.WriteInteger("Dev", "LightComBaud", SysParams.LightComBaud);
  118. iniHelper.WriteString("Dev", "IODevName", SysParams.IODevName);
  119. iniHelper.WriteString("Dev", "IOCfgPath", SysParams.IOCfgPath);
  120. iniHelper.WriteString("Dev", "PLC_IP", SysParams.PLC_IP);
  121. iniHelper.WriteInteger("Dev", "PLC_Rack", SysParams.PLC_Rack);
  122. iniHelper.WriteInteger("Dev", "PLC_Solt", SysParams.PLC_Solt);
  123. iniHelper.WriteString("Dev", "CamPath_1", SysParams.CamPath_1);
  124. iniHelper.WriteInteger("Dev", "CamDev_1", SysParams.CamDev_1);
  125. iniHelper.WriteInteger("Dev", "CamIndex_1", SysParams.CamIndex_1);
  126. iniHelper.WriteString("Dev", "CamPath_2", SysParams.CamPath_2);
  127. iniHelper.WriteInteger("Dev", "CamDev_2", SysParams.CamDev_2);
  128. iniHelper.WriteInteger("Dev", "CamIndex_2", SysParams.CamIndex_2);
  129. iniHelper.WriteString("Sys", "AIModelPath", SysParams.AIModelPath);
  130. iniHelper.WriteString("Sys", "ProductPath", SysParams.ProductPath);
  131. iniHelper.WriteBool("ShowMainWin", "ShowResetBtn", SysParams.ShowResetBtn);
  132. iniHelper.WriteBool("ShowMainWin", "ShowBuzz", SysParams.ShowBuzz);
  133. iniHelper.WriteBool("ShowMainWin", "ShowDoorAlm", SysParams.ShowDoorAlm);
  134. iniHelper.WriteBool("CloudAndMES", "OpenCloud", SysParams.OpenCloud);
  135. iniHelper.WriteString("CloudAndMES", "CloudThisName", SysParams.CloudThisName);
  136. iniHelper.WriteString("CloudAndMES", "CloudServerIP", SysParams.CloudServerIP);
  137. iniHelper.WriteInteger("CloudAndMES", "CloudServerPort", SysParams.CloudServerPort);
  138. iniHelper.WriteString("CloudAndMES", "CloudUser", SysParams.CloudUser);
  139. iniHelper.WriteString("CloudAndMES", "CloudPassword", SysParams.CloudPassword);
  140. iniHelper.WriteBool("CloudAndMES", "OpenPdtServer", SysParams.OpenPdtServer);
  141. iniHelper.WriteString("CloudAndMES", "PdtServerIP", SysParams.PdtServerIP);
  142. iniHelper.WriteInteger("CloudAndMES", "PdtServerPort", SysParams.PdtServerPort);
  143. iniHelper.WriteBool("CloudAndMES", "IsPdtServer", SysParams.IsPdtServer);
  144. iniHelper.WriteBool("LabelPrint", "EnableLabelPrint", SysParams.EnableLabelPrint);
  145. iniHelper.WriteString("LabelPrint", "LabelPrinterName", SysParams.LabelPrinterName);
  146. iniHelper.WriteBool("ExcelPrint", "EnableExcelPrint", SysParams.EnableExcelPrint);
  147. iniHelper.WriteString("ExcelPrint", "ExcelPrinterName", SysParams.ExcelPrinterName);
  148. iniHelper.WriteString("ERP", "ErpDBConStr", SysParams.ErpDBConStr);
  149. iniHelper.WriteString("ERP", "ErpSql", SysParams.ErpSql);
  150. iniHelper.WriteString("Customer", "CustomerName", SysParams.CustomerName);
  151. iniHelper.WriteBool("FLIP", "Cam1_flipX", SysParams.Cam1_flipX);
  152. iniHelper.WriteBool("FLIP", "Cam1_flipY", SysParams.Cam1_flipY);
  153. iniHelper.WriteBool("FLIP", "Cam2_flipX", SysParams.Cam2_flipX);
  154. iniHelper.WriteBool("FLIP", "Cam2_flipY", SysParams.Cam2_flipY);
  155. iniHelper.WriteInteger("CMPX", "Cm2px_x", SysParams.Cm2px_x);
  156. iniHelper.WriteInteger("CMPX", "Cm2px_y", SysParams.Cm2px_y);
  157. iniHelper.WriteInteger("CMPX", "MidCoin", SysParams.MidCoin);
  158. iniHelper.WriteInteger("CMPX", "HolePx", SysParams.HolePx);
  159. iniHelper.WriteInteger("CMPX", "LCrop", SysParams.LCrop);
  160. iniHelper.WriteInteger("CMPX", "RCrop", SysParams.RCrop);
  161. iniHelper.WriteInteger("CMPX", "Expand_pixel", SysParams.Expand_pixel);
  162. SysConfigParams = SysParams;
  163. }
  164. /// <summary>
  165. /// 读取ini
  166. /// </summary>
  167. /// <returns></returns>
  168. public SysConfigParams ReadSysConfParams()
  169. {
  170. //return XmlHelper.Deserialize<SysConfParams>(_configFile);
  171. SysConfigParams sysParams = new SysConfigParams();
  172. IniHelper iniHelper = new IniHelper(_configFile);
  173. string sValue = "";
  174. int iValue = 0;
  175. double dValue = 0;
  176. bool bValue = false;
  177. //iniHelper.ReadBool("SaveAllImg", "SaveAllImg", out bValue);
  178. //sysParams.SaveAllImg = bValue;
  179. iniHelper.ReadBool("SysFunction", "OpenBuzzer", out bValue);
  180. sysParams.OpenBuzzer = bValue;
  181. iniHelper.ReadBool("SysFunction", "OpenDoor", out bValue);
  182. sysParams.OpenDoor = bValue;
  183. iniHelper.ReadBool("SysFunction", "OpenIO", out bValue);
  184. sysParams.OpenIO = bValue;
  185. iniHelper.ReadBool("SysFunction", "OpenPLC", out bValue);
  186. sysParams.OpenPLC = bValue;
  187. iniHelper.ReadString("Dev", "LightCom", out sValue);
  188. sysParams.LightCom = sValue.Replace("\0", "");
  189. iniHelper.ReadInteger("Dev", "LightComBaud", out iValue);
  190. sysParams.LightComBaud = iValue;
  191. iniHelper.ReadString("Dev", "IODevName", out sValue);
  192. sysParams.IODevName = sValue.Replace("\0", "");
  193. iniHelper.ReadString("Dev", "IOCfgPath", out sValue);
  194. sysParams.IOCfgPath = sValue.Replace("\0", "");
  195. iniHelper.ReadString("Dev", "PLC_IP", out sValue);
  196. sysParams.PLC_IP = sValue.Replace("\0", "");
  197. iniHelper.ReadInteger("Dev", "PLC_Rack", out iValue);
  198. sysParams.PLC_Rack = iValue;
  199. iniHelper.ReadInteger("Dev", "PLC_Solt", out iValue);
  200. sysParams.PLC_Solt = iValue;
  201. iniHelper.ReadString("Dev", "CamPath_1", out sValue);
  202. sysParams.CamPath_1 = sValue.Replace("\0", "");
  203. iniHelper.ReadInteger("Dev", "CamDev_1", out iValue);
  204. sysParams.CamDev_1 = iValue;
  205. iniHelper.ReadInteger("Dev", "CamIndex_1", out iValue);
  206. sysParams.CamIndex_1 = iValue;
  207. iniHelper.ReadString("Dev", "CamPath_2", out sValue);
  208. sysParams.CamPath_2 = sValue.Replace("\0", "");
  209. iniHelper.ReadInteger("Dev", "CamDev_2", out iValue);
  210. sysParams.CamDev_2 = iValue;
  211. iniHelper.ReadInteger("Dev", "CamIndex_2", out iValue);
  212. sysParams.CamIndex_2 = iValue;
  213. iniHelper.ReadBool("CloudAndMES", "OpenCloud", out bValue);
  214. sysParams.OpenCloud = bValue;
  215. iniHelper.ReadString("CloudAndMES", "CloudThisName", out sValue);
  216. sysParams.CloudThisName = sValue.Replace("\0", string.Empty);
  217. iniHelper.ReadString("CloudAndMES", "CloudServerIP", out sValue);
  218. sysParams.CloudServerIP = sValue;
  219. iniHelper.ReadInteger("CloudAndMES", "CloudServerPort", out iValue);
  220. sysParams.CloudServerPort = iValue;
  221. iniHelper.ReadString("CloudAndMES", "CloudUser", out sValue);
  222. sysParams.CloudUser = sValue;
  223. iniHelper.ReadString("CloudAndMES", "CloudPassword", out sValue);
  224. sysParams.CloudPassword = sValue;
  225. iniHelper.ReadBool("CloudAndMES", "OpenPdtServer", out bValue);
  226. sysParams.OpenPdtServer = bValue;
  227. iniHelper.ReadString("CloudAndMES", "PdtServerIP", out sValue);
  228. sysParams.PdtServerIP = sValue;
  229. iniHelper.ReadInteger("CloudAndMES", "PdtServerPort", out iValue);
  230. sysParams.PdtServerPort = iValue;
  231. iniHelper.ReadBool("CloudAndMES", "IsPdtServer", out bValue);
  232. sysParams.IsPdtServer = bValue;
  233. iniHelper.ReadString("DefectSrcImag", "SavePath", out sValue);
  234. sysParams.DefectSrcImag.SavePath = sValue.Replace("\0", "");
  235. iniHelper.ReadBool("DefectSrcImag", "AutoSave", out bValue);
  236. sysParams.DefectSrcImag.AutoSave = bValue;
  237. iniHelper.ReadBool("DefectSrcImag", "AutoDelete", out bValue);
  238. sysParams.DefectSrcImag.AutoDelete = bValue;
  239. iniHelper.ReadDouble("DefectSrcImag", "AutoDeleteDays", out dValue);
  240. sysParams.DefectSrcImag.AutoDeleteDays = dValue;
  241. iniHelper.ReadString("DefectSmallImag", "SavePath", out sValue);
  242. sysParams.DefectSmallImag.SavePath = sValue.Replace("\0", "");
  243. iniHelper.ReadBool("DefectSmallImag", "AutoSave", out bValue);
  244. sysParams.DefectSmallImag.AutoSave = bValue;
  245. iniHelper.ReadBool("DefectSmallImag", "AutoDelete", out bValue);
  246. sysParams.DefectSmallImag.AutoDelete = bValue;
  247. iniHelper.ReadDouble("DefectSmallImag", "AutoDeleteDays", out dValue);
  248. sysParams.DefectSmallImag.AutoDeleteDays = dValue;
  249. iniHelper.ReadString("DefectSplicImag", "SavePath", out sValue);
  250. sysParams.DefectSplicImag.SavePath = sValue.Replace("\0", "");
  251. iniHelper.ReadBool("DefectSplicImag", "AutoSave", out bValue);
  252. sysParams.DefectSplicImag.AutoSave = bValue;
  253. iniHelper.ReadBool("DefectSplicImag", "AutoDelete", out bValue);
  254. sysParams.DefectSplicImag.AutoDelete = bValue;
  255. iniHelper.ReadDouble("DefectSplicImag", "AutoDeleteDays", out dValue);
  256. sysParams.DefectSplicImag.AutoDeleteDays = dValue;
  257. iniHelper.ReadString("Sys", "AIModelPath", out sValue);
  258. sysParams.AIModelPath = sValue.Replace("\0", "");
  259. iniHelper.ReadString("Sys", "ProductPath", out sValue);
  260. sysParams.ProductPath = sValue.Replace("\0", "");
  261. iniHelper.ReadString("Log", "SavePath", out sValue);
  262. sysParams.LogPath = sValue.Replace("\0", "");
  263. iniHelper.ReadBool("Log", "AutoDelete", out bValue);
  264. sysParams.AutoDeleteLog = bValue;
  265. iniHelper.ReadDouble("Log", "AutoDeleteDays", out dValue);
  266. sysParams.AutoDeleteLogData = dValue;
  267. iniHelper.ReadBool("ShowMainWin", "ShowResetBtn", out bValue);
  268. sysParams.ShowResetBtn = bValue;
  269. iniHelper.ReadBool("ShowMainWin", "ShowBuzz", out bValue);
  270. sysParams.ShowBuzz = bValue;
  271. iniHelper.ReadBool("ShowMainWin", "ShowDoorAlm", out bValue);
  272. sysParams.ShowDoorAlm = bValue;
  273. iniHelper.ReadBool("FLIP", "Cam1_flipX", out bValue);
  274. sysParams.Cam1_flipX = bValue;
  275. iniHelper.ReadBool("FLIP", "Cam1_flipY", out bValue);
  276. sysParams.Cam1_flipY = bValue;
  277. iniHelper.ReadBool("FLIP", "Cam2_flipX", out bValue);
  278. sysParams.Cam2_flipX = bValue;
  279. iniHelper.ReadBool("FLIP", "Cam2_flipY", out bValue);
  280. sysParams.Cam2_flipY = bValue;
  281. iniHelper.ReadInteger("CMPX", "Cm2px_x", out iValue);
  282. sysParams.Cm2px_x = iValue;
  283. iniHelper.ReadInteger("CMPX", "Cm2px_y", out iValue);
  284. sysParams.Cm2px_y = iValue;
  285. iniHelper.ReadInteger("CMPX", "MidCoin", out iValue);
  286. sysParams.MidCoin = iValue;
  287. iniHelper.ReadInteger("CMPX", "HolePx", out iValue);
  288. sysParams.HolePx = iValue;
  289. iniHelper.ReadInteger("CMPX", "LCrop", out iValue);
  290. sysParams.LCrop = iValue;
  291. iniHelper.ReadInteger("CMPX", "RCrop", out iValue);
  292. sysParams.RCrop = iValue;
  293. iniHelper.ReadInteger("CMPX", "Expand_pixel", out iValue);
  294. sysParams.Expand_pixel = iValue;
  295. iniHelper.ReadBool("LabelPrint", "EnableLabelPrint", out bValue);
  296. sysParams.EnableLabelPrint = bValue;
  297. iniHelper.ReadString("LabelPrint", "LabelPrinterName", out sValue);
  298. sysParams.LabelPrinterName = sValue;
  299. iniHelper.ReadBool("ExcelPrint", "EnableExcelPrint", out bValue);
  300. sysParams.EnableExcelPrint = bValue;
  301. iniHelper.ReadString("ExcelPrint", "ExcelPrinterName", out sValue);
  302. sysParams.ExcelPrinterName = sValue;
  303. iniHelper.ReadString("ERP", "ErpDBConStr", out sValue);
  304. sysParams.ErpDBConStr = sValue;
  305. iniHelper.ReadString("ERP", "ErpSql", out sValue);
  306. sysParams.ErpSql = sValue;
  307. iniHelper.ReadString("Customer", "CustomerName", out sValue);
  308. sysParams.CustomerName = sValue;
  309. iniHelper.ReadString("Material", "SuedeList", out sValue);
  310. if (!string.IsNullOrWhiteSpace(sValue))
  311. sysParams.SuedeList = sValue.Split(new char[] { ',', ';' });
  312. SysConfigParams = sysParams;
  313. return sysParams;
  314. }
  315. /// <summary>
  316. /// 写入系统默认配置
  317. /// </summary>
  318. public void WriteDefaultSystemConfig()
  319. {
  320. SysConfigParams = new SysConfigParams();
  321. WriteSysConfParams(SysConfigParams);
  322. }
  323. /// <summary>
  324. /// 加载系统配置
  325. /// </summary>
  326. /// <returns></returns>
  327. public bool LoadSystemConfig()
  328. {
  329. bool ret = false;
  330. if (!Directory.Exists(_rootPath))
  331. {
  332. Directory.CreateDirectory(_rootPath);
  333. }
  334. if (!Directory.Exists(_projectDir))
  335. {
  336. Directory.CreateDirectory(_projectDir);
  337. }
  338. if (File.Exists(_configFile))
  339. {
  340. SysConfigParams = ReadSysConfParams();
  341. if (null != SysConfigParams)
  342. {
  343. ret = true;
  344. }
  345. }
  346. else
  347. {
  348. // write default value
  349. WriteDefaultSystemConfig();
  350. ret = true;
  351. }
  352. return ret;
  353. }
  354. #endregion
  355. #region 文件选择
  356. /// <summary>
  357. /// 选择目录
  358. /// </summary>
  359. /// <returns></returns>
  360. public static string SelectFolder(string defaultPath = "")
  361. {
  362. FolderBrowserDialog dlg = new FolderBrowserDialog();
  363. dlg.SelectedPath = (defaultPath != "" ? defaultPath : Path.GetFullPath("."));
  364. if (dlg.ShowDialog() == DialogResult.OK)
  365. return dlg.SelectedPath;
  366. return "";
  367. }
  368. /// <summary>
  369. /// 选择文件
  370. /// </summary>
  371. /// <param name="filter">如 图像文件|*.jpg|图像文件|*.png|所有文件|*.*</param>
  372. /// <returns></returns>
  373. public static string SelectFile(string filter = "所有文件|*.*", string defaultPath = "")
  374. {
  375. OpenFileDialog fie = new OpenFileDialog();
  376. fie.Title = "选择文件";
  377. //fie.InitialDirectory = (defaultPath != "" ? defaultPath : Path.GetFullPath("."));
  378. fie.Filter = filter; //设置文件类型
  379. if (fie.ShowDialog() == DialogResult.OK)
  380. return fie.FileName;
  381. return "";
  382. }
  383. /// <summary>
  384. /// 删除指定目录下文件
  385. /// </summary>
  386. /// <param name="defaultPath"></param>
  387. /// <param name="fileExtend"></param>
  388. /// <returns></returns>
  389. public static bool DelFilesInFolder(string FolderPath, string fileExtend = "*")
  390. {
  391. if (!Directory.Exists(FolderPath))
  392. return false;
  393. string[] files = Directory.GetFiles(FolderPath, fileExtend, SearchOption.TopDirectoryOnly);
  394. foreach (string file in files)
  395. API.DeleteFile(file);
  396. return true;
  397. }
  398. /// <summary>
  399. /// 另存为
  400. /// </summary>
  401. /// <param name="defaultFileName">默认文件名</param>
  402. /// <param name="filter">如 图像文件|*.jpg|图像文件|*.png|所有文件|*.*</param>
  403. /// <returns></returns>
  404. public static string SaveAsFile(string defaultFileName, string filter = "所有文件|*.*")
  405. {
  406. SaveFileDialog s = new SaveFileDialog();
  407. s.Title = "保存文件";
  408. s.Filter = filter; //"图像文件|*.jpg|图像文件|*.png|所有文件|*.*";
  409. //s.DefaultExt = "图像文件|*.jpg"; //默认扩展名
  410. //s.InitialDirectory = @"C:\Users\Administrator\Desktop"; //保存的初始目录
  411. s.FileName = defaultFileName;//默认文件名
  412. if (s.ShowDialog() == DialogResult.OK)
  413. return s.FileName;
  414. return "";
  415. }
  416. #endregion
  417. #region json操作
  418. //public static void addKey(JObject obj, string key, JToken value)
  419. //{
  420. // if (obj.ContainsKey(key))
  421. // obj[key] = value;
  422. // else
  423. // obj.Add(key, value);
  424. //}
  425. #endregion
  426. #region enum名称
  427. public static ArrayList GetArrayList<T>()
  428. {
  429. ArrayList list = new ArrayList();
  430. Type type = typeof(T);
  431. //list.Add(new DictionaryEntry("start", "启动按钮"));
  432. foreach (int value in Enum.GetValues(type))
  433. {
  434. string strName = Enum.GetName(type, value);//获取名称
  435. list.Add(new DictionaryEntry(value, strName));
  436. }
  437. return list;
  438. }
  439. #endregion
  440. #region 生产数据记录
  441. public bool SetDailyOutputAdd(out int tDailyOutput)
  442. {
  443. bool ret = true;
  444. try
  445. {
  446. //读取数据
  447. string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
  448. IniHelper iniHelper = new IniHelper(tempFile);
  449. int iValue = 0;
  450. iniHelper.ReadInteger("TempData", "DailyOutput", out iValue);
  451. tDailyOutput = iValue;
  452. iniHelper.ReadInteger("TempData", "Date", out iValue);
  453. int dateNum = iValue;
  454. int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
  455. if (dateNum == nowDateNum)
  456. {
  457. //同一天,生产数量+1
  458. tDailyOutput++;
  459. }
  460. else if (dateNum < nowDateNum)
  461. {
  462. //昨天数据,为1
  463. tDailyOutput = 1;
  464. }
  465. //重新记录
  466. iniHelper.WriteInteger("TempData", "DailyOutput", tDailyOutput);
  467. iniHelper.WriteInteger("TempData", "Date", nowDateNum);
  468. }
  469. catch (Exception ex)
  470. {
  471. tDailyOutput = 0;
  472. ret = false;
  473. string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
  474. IniHelper iniHelper = new IniHelper(tempFile);
  475. int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
  476. //重新记录
  477. iniHelper.WriteInteger("TempData", "DailyOutput", tDailyOutput);
  478. iniHelper.WriteInteger("TempData", "Date", nowDateNum);
  479. }
  480. return ret;
  481. }
  482. public bool GetDailyOutput(out int tDailyOutput)
  483. {
  484. bool ret = true;
  485. try
  486. {
  487. //读取数据
  488. string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
  489. IniHelper iniHelper = new IniHelper(tempFile);
  490. int iValue = 0;
  491. iniHelper.ReadInteger("TempData", "DailyOutput", out iValue);
  492. tDailyOutput = iValue;
  493. iniHelper.ReadInteger("TempData", "Date", out iValue);
  494. int dateNum = iValue;
  495. int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
  496. if (dateNum == nowDateNum)
  497. {
  498. //同一天,生产数量+1
  499. //tDailyOutput++;
  500. }
  501. else if (dateNum < nowDateNum)
  502. {
  503. //昨天数据,为1
  504. tDailyOutput = 0;
  505. }
  506. }
  507. catch (Exception ex)
  508. {
  509. tDailyOutput = 0;
  510. ret = false;
  511. }
  512. return ret;
  513. }
  514. #endregion
  515. #region ERP数据库
  516. private SqlSugarClient db;
  517. public SqlSugarClient getErpDBCon(SqlSugar.DbType dbType = SqlSugar.DbType.SqlServer)
  518. {
  519. if (string.IsNullOrEmpty(SysConfigParams.ErpDBConStr))
  520. return null;
  521. if (db != null) return db;
  522. db = new SqlSugarClient(new ConnectionConfig()
  523. {
  524. ConnectionString = SysConfigParams.ErpDBConStr,
  525. DbType = dbType,
  526. IsAutoCloseConnection = true
  527. },
  528. db =>
  529. {
  530. db.Aop.OnLogExecuting = (sql, pars) =>
  531. {
  532. Console.WriteLine(sql);//输出sql,查看执行sql 性能无影响
  533. //获取原生SQL推荐 5.1.4.63 性能OK
  534. //UtilMethods.GetNativeSql(sql,pars)
  535. //获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用
  536. //UtilMethods.GetSqlString(DbType.SqlServer,sql,pars)
  537. };
  538. });
  539. return db;
  540. }
  541. public DataTable execSql(string sql, List<SugarParameter> parameters, SqlSugar.DbType dbType = SqlSugar.DbType.SqlServer)
  542. {
  543. //查询表的所有
  544. var mydb = getErpDBCon(dbType);
  545. if (mydb == null) return null;
  546. if (!mydb.Ado.IsValidConnection())
  547. mydb.Ado.Open();
  548. return mydb.Ado.GetDataTable(sql, parameters);
  549. }
  550. #endregion
  551. #endregion
  552. }
  553. #region 参数类型
  554. /// <summary>
  555. /// 图片保存参数
  556. /// </summary>
  557. [Serializable]
  558. public class ImageSaveParam
  559. {
  560. /// <summary>
  561. /// 保存路径
  562. /// </summary>
  563. public string SavePath { get; set; }
  564. /// <summary>
  565. /// 自动保存
  566. /// </summary>
  567. public bool AutoSave { get; set; }
  568. /// <summary>
  569. /// 自动删除
  570. /// </summary>
  571. public bool AutoDelete { get; set; }
  572. /// <summary>
  573. /// 自动删除日期
  574. /// </summary>
  575. public double AutoDeleteDays { get; set; }
  576. public ImageSaveParam()
  577. {
  578. SavePath = "D:\\AllImageSave";
  579. AutoSave = true;
  580. AutoDelete = true;
  581. AutoDeleteDays = 3;
  582. }
  583. public ImageSaveParam(string path)
  584. {
  585. SavePath = path;
  586. AutoSave = true;
  587. AutoDelete = true;
  588. AutoDeleteDays = 3;
  589. }
  590. }
  591. [Serializable]
  592. public class SysConfigParams
  593. {
  594. #region 缺陷图
  595. /// <summary>
  596. /// 缺陷原大图
  597. /// </summary>
  598. public ImageSaveParam DefectSrcImag { get; set; }
  599. /// <summary>
  600. /// 缺陷合并图
  601. /// </summary>
  602. public ImageSaveParam DefectSplicImag { get; set; }
  603. /// <summary>
  604. /// 缺陷小图
  605. /// </summary>
  606. public ImageSaveParam DefectSmallImag { get; set; }
  607. #endregion
  608. #region 功能
  609. /// <summary>
  610. /// 开启蜂鸣器
  611. /// </summary>
  612. public bool OpenBuzzer { get; set; }
  613. /// <summary>
  614. /// 开启门磁
  615. /// </summary>
  616. public bool OpenDoor { get; set; }
  617. /// <summary>
  618. /// 开启IO
  619. /// </summary>
  620. public bool OpenIO { get; set; }
  621. /// <summary>
  622. /// 开启PLC
  623. /// </summary>
  624. public bool OpenPLC { get; set; }
  625. #endregion
  626. #region 硬件传感器通信
  627. /// <summary>
  628. /// 光源串口
  629. /// </summary>
  630. //public LightParams LightCfg { get; set; }
  631. public string LightCom { get; set; }
  632. /// <summary>
  633. /// 光源波特率
  634. /// </summary>
  635. public int LightComBaud { get; set; }
  636. #endregion
  637. #region IO/电机/相机
  638. /// <summary>
  639. /// 西门子PLC IP
  640. /// </summary>
  641. public string PLC_IP { get; set; }
  642. /// <summary>
  643. /// 西门子PLC 端口
  644. /// </summary>
  645. public int PLC_Rack { get; set; }
  646. /// <summary>
  647. /// 西门子PLC 端口
  648. /// </summary>
  649. public int PLC_Solt { get; set; }
  650. /// <summary>
  651. /// IO驱动名称
  652. /// </summary>
  653. //public IOParams IOCfg { get; set; }
  654. public string IODevName { get; set; }
  655. /// <summary>
  656. /// IO配置文件路径
  657. /// </summary>
  658. public string IOCfgPath { get; set; }
  659. /// <summary>
  660. /// 相机序号
  661. /// </summary>
  662. public int CamIndex_1 { get; set; }
  663. /// <summary>
  664. /// 相机板卡序号
  665. /// </summary>
  666. public int CamDev_1 { get; set; }
  667. /// <summary>
  668. /// 相机配置文件
  669. /// </summary>
  670. public string CamPath_1 { get; set; }
  671. /// <summary>
  672. /// 相机序号
  673. /// </summary>
  674. public int CamIndex_2 { get; set; }
  675. /// <summary>
  676. /// 相机板卡序号
  677. /// </summary>
  678. public int CamDev_2 { get; set; }
  679. /// <summary>
  680. /// 相机配置文件
  681. /// </summary>
  682. public string CamPath_2 { get; set; }
  683. #endregion
  684. #region 系统
  685. public string AIModelPath { get; set; }
  686. public string ProductPath { get; set; }
  687. public string LogPath { get; set; }
  688. public bool AutoDeleteLog { get; set; }
  689. public double AutoDeleteLogData { get; set; }
  690. /// <summary>
  691. /// 调试:主界面显示复位按钮
  692. /// </summary>
  693. public bool ShowResetBtn { get; set; }
  694. /// <summary>
  695. /// 调试:主界面显示蜂鸣器控制
  696. /// </summary>
  697. public bool ShowBuzz { get; set; }
  698. /// <summary>
  699. /// 调试:主界面显示门磁报警控制
  700. /// </summary>
  701. public bool ShowDoorAlm { get; set; }
  702. /// <summary>
  703. /// 1cm X方向像素
  704. /// </summary>
  705. public int Cm2px_x = 1;
  706. /// <summary>
  707. /// 1cm Y方向像素
  708. /// </summary>
  709. public int Cm2px_y = 1;
  710. /// <summary>
  711. /// 对比度范围阔算
  712. /// </summary>
  713. public int Expand_pixel = 50;
  714. /// <summary>
  715. /// 中间重合像素
  716. /// </summary>
  717. public int MidCoin = 100;
  718. /// <summary>
  719. /// 孔位
  720. /// </summary>
  721. public int HolePx = 100;
  722. /// <summary>
  723. /// 左侧裁剪
  724. /// </summary>
  725. public int LCrop = 0;
  726. /// <summary>
  727. /// 右侧裁剪
  728. /// </summary>
  729. public int RCrop = 0;
  730. /// <summary>
  731. /// 相机1X翻转
  732. /// </summary>
  733. public bool Cam1_flipX { get; set; }
  734. /// <summary>
  735. /// 相机1Y翻转
  736. /// </summary>
  737. public bool Cam1_flipY { get; set; }
  738. /// <summary>
  739. /// 相机2X翻转
  740. /// </summary>
  741. public bool Cam2_flipX { get; set; }
  742. /// <summary>
  743. /// 相机2Y翻转
  744. /// </summary>
  745. public bool Cam2_flipY { get; set; }
  746. #endregion
  747. #region Http/MES
  748. #endregion
  749. #region MQTT本地云/产品服务器
  750. /// <summary>
  751. /// 开启局域网云端
  752. /// </summary>
  753. public bool OpenCloud { get; set; }
  754. public string CloudThisName { get; set; }
  755. public string CloudServerIP { get; set; }
  756. public int CloudServerPort { get; set; }
  757. public string CloudUser { get; set; }
  758. public string CloudPassword { get; set; }
  759. /// <summary>
  760. /// 开启产品转发
  761. /// </summary>
  762. public bool OpenPdtServer { get; set; }
  763. public string PdtServerIP { get; set; }
  764. public int PdtServerPort { get; set; }
  765. /// <summary>
  766. /// 是否作为服务器还是客户端
  767. /// </summary>
  768. public bool IsPdtServer { get; set; }
  769. #endregion
  770. #region BarTender
  771. /// <summary>
  772. /// 开启标签打印
  773. /// </summary>
  774. public bool EnableLabelPrint { get; set; }
  775. /// <summary>
  776. /// 打印机名称
  777. /// </summary>
  778. public string LabelPrinterName { get; set; }
  779. #endregion
  780. #region Excel
  781. /// <summary>
  782. /// 开启Excel打印
  783. /// </summary>
  784. public bool EnableExcelPrint { get; set; }
  785. /// <summary>
  786. /// 打印机名称
  787. /// </summary>
  788. public string ExcelPrinterName { get; set; }
  789. #endregion
  790. #region ERP
  791. /// <summary>
  792. /// 禾欣ERP数据库
  793. /// </summary>
  794. public string ErpDBConStr { get; set; }
  795. /// <summary>
  796. /// 禾欣ERP数据读取
  797. /// </summary>
  798. public string ErpSql { get; set; }
  799. #endregion
  800. #region 客户
  801. /// <summary>
  802. /// 客户名
  803. /// </summary>
  804. public string CustomerName { get; set; }
  805. #endregion
  806. #region 材质配合禾欣
  807. //材质Material
  808. public string[] SuedeList = new string[0];
  809. #endregion
  810. public SysConfigParams()
  811. {
  812. DefectSrcImag = new ImageSaveParam("D:\\Image\\DefectSrcImag");
  813. DefectSmallImag = new ImageSaveParam("D:\\Image\\DefectSmallImag");
  814. DefectSplicImag = new ImageSaveParam("D:\\Image\\DefectSplicImag");
  815. OpenBuzzer = true;
  816. OpenDoor = true;
  817. OpenIO = true;
  818. OpenPLC = true;
  819. IODevName = "";
  820. IOCfgPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\IOCard_default.xml"); ;
  821. LightCom = "";
  822. LightComBaud = 9600;
  823. PLC_IP = "192.168.0.1";
  824. PLC_Rack = 0;
  825. PLC_Solt = 1;
  826. CamIndex_1 = 0;
  827. CamIndex_2 = 0;
  828. CamDev_1 = 0;
  829. CamDev_2 = 1;
  830. CamPath_1 = "";
  831. CamPath_2 = "";
  832. AIModelPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\Models");
  833. ProductPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\Project");
  834. LogPath = Path.Combine(Directory.GetCurrentDirectory(), "LogFiles");
  835. AutoDeleteLog = false;
  836. AutoDeleteLogData = 0;
  837. ShowResetBtn = true;
  838. ShowBuzz = false;
  839. ShowDoorAlm = false;
  840. EnableLabelPrint = false;
  841. LabelPrinterName = "";
  842. EnableExcelPrint = false;
  843. ExcelPrinterName = "";
  844. OpenCloud = false;
  845. CloudThisName = "Test";
  846. CloudServerIP = "127.0.0.1";
  847. CloudServerPort = 1883;
  848. CloudUser = "";
  849. CloudPassword = "";
  850. OpenPdtServer = false;
  851. PdtServerIP = "127.0.0.1";
  852. PdtServerPort = 10573;
  853. IsPdtServer = true;
  854. ErpDBConStr = "";
  855. ErpSql = "";
  856. CustomerName = "";
  857. Cam1_flipX = false;
  858. Cam1_flipY = false;
  859. Cam2_flipX = false;
  860. Cam2_flipY = false;
  861. }
  862. }
  863. #endregion
  864. }