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

1099 строки
42 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("CamImag", "SavePath", SysParams.CamImag.SavePath);
  110. iniHelper.WriteBool("CamImag", "AutoSave", SysParams.CamImag.AutoSave);
  111. iniHelper.WriteBool("CamImag", "AutoDelete", SysParams.CamImag.AutoDelete);
  112. iniHelper.WriteDouble("CamImag", "AutoDeleteDays", SysParams.CamImag.AutoDeleteDays);
  113. iniHelper.WriteString("Log", "SavePath", SysParams.LogPath);
  114. iniHelper.WriteBool("Log", "AutoDelete", SysParams.AutoDeleteLog);
  115. iniHelper.WriteDouble("Log", "AutoDeleteDays", SysParams.AutoDeleteLogData);
  116. iniHelper.WriteBool("SysFunction", "OpenBuzzer", SysParams.OpenBuzzer);
  117. iniHelper.WriteBool("SysFunction", "OpenDoor", SysParams.OpenDoor);
  118. iniHelper.WriteBool("SysFunction", "OpenIO", SysParams.OpenIO);
  119. iniHelper.WriteBool("SysFunction", "OpenPLC", SysParams.OpenPLC);
  120. iniHelper.WriteBool("SysFunction", "OpenLengthCount", SysParams.OpenLengthCount);
  121. iniHelper.WriteBool("SysFunction", "OpenAutoRun", SysParams.OpenAutoRun);
  122. iniHelper.WriteBool("SysFunction", "OpenLengthCountStop", SysParams.OpenLengthCountStop);
  123. iniHelper.WriteBool("SysFunction", "OpenAIEdge", SysParams.OpenAIEdge);
  124. iniHelper.WriteString("Dev", "LightCom", SysParams.LightCom);
  125. iniHelper.WriteInteger("Dev", "LightComBaud", SysParams.LightComBaud);
  126. iniHelper.WriteString("Dev", "LengthCounterCom", SysParams.LengthCounterCom);
  127. iniHelper.WriteInteger("Dev", "LengthCounterComBaud", SysParams.LengthCounterComBaud);
  128. iniHelper.WriteString("Dev", "IODevName", SysParams.IODevName);
  129. iniHelper.WriteString("Dev", "IOCfgPath", SysParams.IOCfgPath);
  130. iniHelper.WriteString("Dev", "PLC_IP", SysParams.PLC_IP);
  131. iniHelper.WriteInteger("Dev", "PLC_Rack", SysParams.PLC_Rack);
  132. iniHelper.WriteInteger("Dev", "PLC_Solt", SysParams.PLC_Solt);
  133. iniHelper.WriteString("Dev", "CamPath_1", SysParams.CamPath_1);
  134. iniHelper.WriteInteger("Dev", "CamDev_1", SysParams.CamDev_1);
  135. iniHelper.WriteInteger("Dev", "CamIndex_1", SysParams.CamIndex_1);
  136. iniHelper.WriteString("Dev", "CamPath_2", SysParams.CamPath_2);
  137. iniHelper.WriteInteger("Dev", "CamDev_2", SysParams.CamDev_2);
  138. iniHelper.WriteInteger("Dev", "CamIndex_2", SysParams.CamIndex_2);
  139. iniHelper.WriteString("Sys", "AIModelPath", SysParams.AIModelPath);
  140. iniHelper.WriteString("Sys", "ProductPath", SysParams.ProductPath);
  141. iniHelper.WriteBool("ShowMainWin", "ShowResetBtn", SysParams.ShowResetBtn);
  142. iniHelper.WriteBool("ShowMainWin", "ShowBuzz", SysParams.ShowBuzz);
  143. iniHelper.WriteBool("ShowMainWin", "ShowDoorAlm", SysParams.ShowDoorAlm);
  144. iniHelper.WriteBool("CloudAndMES", "OpenCloud", SysParams.OpenCloud);
  145. iniHelper.WriteString("CloudAndMES", "CloudThisName", SysParams.CloudThisName);
  146. iniHelper.WriteString("CloudAndMES", "CloudServerIP", SysParams.CloudServerIP);
  147. iniHelper.WriteInteger("CloudAndMES", "CloudServerPort", SysParams.CloudServerPort);
  148. iniHelper.WriteString("CloudAndMES", "CloudUser", SysParams.CloudUser);
  149. iniHelper.WriteString("CloudAndMES", "CloudPassword", SysParams.CloudPassword);
  150. iniHelper.WriteBool("CloudAndMES", "OpenPdtServer", SysParams.OpenPdtServer);
  151. iniHelper.WriteString("CloudAndMES", "PdtServerIP", SysParams.PdtServerIP);
  152. iniHelper.WriteInteger("CloudAndMES", "PdtServerPort", SysParams.PdtServerPort);
  153. iniHelper.WriteBool("CloudAndMES", "IsPdtServer", SysParams.IsPdtServer);
  154. iniHelper.WriteBool("LabelPrint", "EnableLabelPrint", SysParams.EnableLabelPrint);
  155. iniHelper.WriteString("LabelPrint", "LabelPrinterName", SysParams.LabelPrinterName);
  156. iniHelper.WriteBool("ExcelPrint", "EnableExcelPrint", SysParams.EnableExcelPrint);
  157. iniHelper.WriteString("ExcelPrint", "ExcelPrinterName", SysParams.ExcelPrinterName);
  158. iniHelper.WriteString("ERP", "ErpDBConStr", SysParams.ErpDBConStr);
  159. iniHelper.WriteString("ERP", "ErpSql", SysParams.ErpSql);
  160. iniHelper.WriteString("Customer", "CustomerName", SysParams.CustomerName);
  161. iniHelper.WriteBool("FLIP", "Cam1_flipX", SysParams.Cam1_flipX);
  162. iniHelper.WriteBool("FLIP", "Cam1_flipY", SysParams.Cam1_flipY);
  163. iniHelper.WriteBool("FLIP", "Cam2_flipX", SysParams.Cam2_flipX);
  164. iniHelper.WriteBool("FLIP", "Cam2_flipY", SysParams.Cam2_flipY);
  165. iniHelper.WriteInteger("CMPX", "Cm2px_x", SysParams.Cm2px_x);
  166. iniHelper.WriteInteger("CMPX", "Cm2px_y", SysParams.Cm2px_y);
  167. iniHelper.WriteInteger("CMPX", "MidCoin", SysParams.MidCoin);
  168. iniHelper.WriteInteger("CMPX", "HolePx", SysParams.HolePx);
  169. iniHelper.WriteInteger("CMPX", "LCrop", SysParams.LCrop);
  170. iniHelper.WriteInteger("CMPX", "RCrop", SysParams.RCrop);
  171. iniHelper.WriteInteger("CMPX", "Expand_pixel", SysParams.Expand_pixel);
  172. iniHelper.WriteInteger("CMPX", "Crop_offset", SysParams.Crop_offset);
  173. iniHelper.WriteDouble("StopDisOffset", "StopLookDis", SysParams.StopLookDis);
  174. iniHelper.WriteDouble("StopDisOffset", "StopDecTime", SysParams.StopDecTime);
  175. iniHelper.WriteBool("StopDisOffset", "HaveStopOffsetDis", SysParams.HaveStopOffsetDis);
  176. iniHelper.WriteString("StopDisOffset", "StopOffsetDisJson", SysParams.StopOffsetDisJson);
  177. iniHelper.WriteInteger("StopDisOffset", "StopImageCnt", SysParams.StopImageCnt);
  178. SysConfigParams = SysParams;
  179. }
  180. /// <summary>
  181. /// 读取ini
  182. /// </summary>
  183. /// <returns></returns>
  184. public SysConfigParams ReadSysConfParams()
  185. {
  186. //return XmlHelper.Deserialize<SysConfParams>(_configFile);
  187. SysConfigParams sysParams = new SysConfigParams();
  188. IniHelper iniHelper = new IniHelper(_configFile);
  189. string sValue = "";
  190. int iValue = 0;
  191. double dValue = 0;
  192. bool bValue = false;
  193. //iniHelper.ReadBool("SaveAllImg", "SaveAllImg", out bValue);
  194. //sysParams.SaveAllImg = bValue;
  195. iniHelper.ReadBool("SysFunction", "OpenBuzzer", out bValue);
  196. sysParams.OpenBuzzer = bValue;
  197. iniHelper.ReadBool("SysFunction", "OpenDoor", out bValue);
  198. sysParams.OpenDoor = bValue;
  199. iniHelper.ReadBool("SysFunction", "OpenIO", out bValue);
  200. sysParams.OpenIO = bValue;
  201. iniHelper.ReadBool("SysFunction", "OpenPLC", out bValue);
  202. sysParams.OpenPLC = bValue;
  203. iniHelper.ReadBool("SysFunction", "OpenLengthCount", out bValue);
  204. sysParams.OpenLengthCount = bValue;
  205. iniHelper.ReadBool("SysFunction", "OpenAutoRun", out bValue);
  206. sysParams.OpenAutoRun = bValue;
  207. iniHelper.ReadBool("SysFunction", "OpenLengthCountStop", out bValue);
  208. sysParams.OpenLengthCountStop = bValue;
  209. iniHelper.ReadBool("SysFunction", "OpenAIEdge", out bValue);
  210. sysParams.OpenAIEdge = bValue;
  211. iniHelper.ReadString("Dev", "LightCom", out sValue);
  212. sysParams.LightCom = sValue.Replace("\0", "");
  213. iniHelper.ReadInteger("Dev", "LightComBaud", out iValue);
  214. sysParams.LightComBaud = iValue;
  215. iniHelper.ReadString("Dev", "LengthCounterCom", out sValue);
  216. sysParams.LengthCounterCom = sValue.Replace("\0", "");
  217. iniHelper.ReadInteger("Dev", "LengthCounterComBaud", out iValue);
  218. sysParams.LengthCounterComBaud = iValue;
  219. iniHelper.ReadString("Dev", "IODevName", out sValue);
  220. sysParams.IODevName = sValue.Replace("\0", "");
  221. iniHelper.ReadString("Dev", "IOCfgPath", out sValue);
  222. sysParams.IOCfgPath = sValue.Replace("\0", "");
  223. iniHelper.ReadString("Dev", "PLC_IP", out sValue);
  224. sysParams.PLC_IP = sValue.Replace("\0", "");
  225. iniHelper.ReadInteger("Dev", "PLC_Rack", out iValue);
  226. sysParams.PLC_Rack = iValue;
  227. iniHelper.ReadInteger("Dev", "PLC_Solt", out iValue);
  228. sysParams.PLC_Solt = iValue;
  229. iniHelper.ReadString("Dev", "CamPath_1", out sValue);
  230. sysParams.CamPath_1 = sValue.Replace("\0", "");
  231. iniHelper.ReadInteger("Dev", "CamDev_1", out iValue);
  232. sysParams.CamDev_1 = iValue;
  233. iniHelper.ReadInteger("Dev", "CamIndex_1", out iValue);
  234. sysParams.CamIndex_1 = iValue;
  235. iniHelper.ReadString("Dev", "CamPath_2", out sValue);
  236. sysParams.CamPath_2 = sValue.Replace("\0", "");
  237. iniHelper.ReadInteger("Dev", "CamDev_2", out iValue);
  238. sysParams.CamDev_2 = iValue;
  239. iniHelper.ReadInteger("Dev", "CamIndex_2", out iValue);
  240. sysParams.CamIndex_2 = iValue;
  241. iniHelper.ReadBool("CloudAndMES", "OpenCloud", out bValue);
  242. sysParams.OpenCloud = bValue;
  243. iniHelper.ReadString("CloudAndMES", "CloudThisName", out sValue);
  244. sysParams.CloudThisName = sValue.Replace("\0", string.Empty);
  245. iniHelper.ReadString("CloudAndMES", "CloudServerIP", out sValue);
  246. sysParams.CloudServerIP = sValue;
  247. iniHelper.ReadInteger("CloudAndMES", "CloudServerPort", out iValue);
  248. sysParams.CloudServerPort = iValue;
  249. iniHelper.ReadString("CloudAndMES", "CloudUser", out sValue);
  250. sysParams.CloudUser = sValue;
  251. iniHelper.ReadString("CloudAndMES", "CloudPassword", out sValue);
  252. sysParams.CloudPassword = sValue;
  253. iniHelper.ReadBool("CloudAndMES", "OpenPdtServer", out bValue);
  254. sysParams.OpenPdtServer = bValue;
  255. iniHelper.ReadString("CloudAndMES", "PdtServerIP", out sValue);
  256. sysParams.PdtServerIP = sValue;
  257. iniHelper.ReadInteger("CloudAndMES", "PdtServerPort", out iValue);
  258. sysParams.PdtServerPort = iValue;
  259. iniHelper.ReadBool("CloudAndMES", "IsPdtServer", out bValue);
  260. sysParams.IsPdtServer = bValue;
  261. iniHelper.ReadString("DefectSrcImag", "SavePath", out sValue);
  262. sysParams.DefectSrcImag.SavePath = sValue.Replace("\0", "");
  263. iniHelper.ReadBool("DefectSrcImag", "AutoSave", out bValue);
  264. sysParams.DefectSrcImag.AutoSave = bValue;
  265. iniHelper.ReadBool("DefectSrcImag", "AutoDelete", out bValue);
  266. sysParams.DefectSrcImag.AutoDelete = bValue;
  267. iniHelper.ReadDouble("DefectSrcImag", "AutoDeleteDays", out dValue);
  268. sysParams.DefectSrcImag.AutoDeleteDays = dValue;
  269. iniHelper.ReadString("DefectSmallImag", "SavePath", out sValue);
  270. sysParams.DefectSmallImag.SavePath = sValue.Replace("\0", "");
  271. iniHelper.ReadBool("DefectSmallImag", "AutoSave", out bValue);
  272. sysParams.DefectSmallImag.AutoSave = bValue;
  273. iniHelper.ReadBool("DefectSmallImag", "AutoDelete", out bValue);
  274. sysParams.DefectSmallImag.AutoDelete = bValue;
  275. iniHelper.ReadDouble("DefectSmallImag", "AutoDeleteDays", out dValue);
  276. sysParams.DefectSmallImag.AutoDeleteDays = dValue;
  277. iniHelper.ReadString("DefectSplicImag", "SavePath", out sValue);
  278. sysParams.DefectSplicImag.SavePath = sValue.Replace("\0", "");
  279. iniHelper.ReadBool("DefectSplicImag", "AutoSave", out bValue);
  280. sysParams.DefectSplicImag.AutoSave = bValue;
  281. iniHelper.ReadBool("DefectSplicImag", "AutoDelete", out bValue);
  282. sysParams.DefectSplicImag.AutoDelete = bValue;
  283. iniHelper.ReadDouble("DefectSplicImag", "AutoDeleteDays", out dValue);
  284. sysParams.DefectSplicImag.AutoDeleteDays = dValue;
  285. iniHelper.ReadString("CamImag", "SavePath", out sValue);
  286. sysParams.CamImag.SavePath = sValue.Replace("\0", "");
  287. iniHelper.ReadBool("CamImag", "AutoSave", out bValue);
  288. sysParams.CamImag.AutoSave = bValue;
  289. iniHelper.ReadBool("CamImag", "AutoDelete", out bValue);
  290. sysParams.CamImag.AutoDelete = bValue;
  291. iniHelper.ReadDouble("CamImag", "AutoDeleteDays", out dValue);
  292. sysParams.CamImag.AutoDeleteDays = dValue;
  293. iniHelper.ReadString("Sys", "AIModelPath", out sValue);
  294. sysParams.AIModelPath = sValue.Replace("\0", "");
  295. iniHelper.ReadString("Sys", "ProductPath", out sValue);
  296. sysParams.ProductPath = sValue.Replace("\0", "");
  297. iniHelper.ReadString("Log", "SavePath", out sValue);
  298. sysParams.LogPath = sValue.Replace("\0", "");
  299. iniHelper.ReadBool("Log", "AutoDelete", out bValue);
  300. sysParams.AutoDeleteLog = bValue;
  301. iniHelper.ReadDouble("Log", "AutoDeleteDays", out dValue);
  302. sysParams.AutoDeleteLogData = dValue;
  303. iniHelper.ReadBool("ShowMainWin", "ShowResetBtn", out bValue);
  304. sysParams.ShowResetBtn = bValue;
  305. iniHelper.ReadBool("ShowMainWin", "ShowBuzz", out bValue);
  306. sysParams.ShowBuzz = bValue;
  307. iniHelper.ReadBool("ShowMainWin", "ShowDoorAlm", out bValue);
  308. sysParams.ShowDoorAlm = bValue;
  309. iniHelper.ReadBool("FLIP", "Cam1_flipX", out bValue);
  310. sysParams.Cam1_flipX = bValue;
  311. iniHelper.ReadBool("FLIP", "Cam1_flipY", out bValue);
  312. sysParams.Cam1_flipY = bValue;
  313. iniHelper.ReadBool("FLIP", "Cam2_flipX", out bValue);
  314. sysParams.Cam2_flipX = bValue;
  315. iniHelper.ReadBool("FLIP", "Cam2_flipY", out bValue);
  316. sysParams.Cam2_flipY = bValue;
  317. iniHelper.ReadInteger("CMPX", "Cm2px_x", out iValue);
  318. sysParams.Cm2px_x = iValue;
  319. iniHelper.ReadInteger("CMPX", "Cm2px_y", out iValue);
  320. sysParams.Cm2px_y = iValue;
  321. iniHelper.ReadInteger("CMPX", "MidCoin", out iValue);
  322. sysParams.MidCoin = iValue;
  323. iniHelper.ReadInteger("CMPX", "HolePx", out iValue);
  324. sysParams.HolePx = iValue;
  325. iniHelper.ReadInteger("CMPX", "LCrop", out iValue);
  326. sysParams.LCrop = iValue;
  327. iniHelper.ReadInteger("CMPX", "RCrop", out iValue);
  328. sysParams.RCrop = iValue;
  329. iniHelper.ReadInteger("CMPX", "Expand_pixel", out iValue);
  330. sysParams.Expand_pixel = iValue;
  331. iniHelper.ReadInteger("CMPX", "Crop_offset", out iValue);
  332. sysParams.Crop_offset = iValue;
  333. iniHelper.ReadBool("LabelPrint", "EnableLabelPrint", out bValue);
  334. sysParams.EnableLabelPrint = bValue;
  335. iniHelper.ReadString("LabelPrint", "LabelPrinterName", out sValue);
  336. sysParams.LabelPrinterName = sValue;
  337. iniHelper.ReadBool("ExcelPrint", "EnableExcelPrint", out bValue);
  338. sysParams.EnableExcelPrint = bValue;
  339. iniHelper.ReadString("ExcelPrint", "ExcelPrinterName", out sValue);
  340. sysParams.ExcelPrinterName = sValue;
  341. iniHelper.ReadString("ERP", "ErpDBConStr", out sValue);
  342. sysParams.ErpDBConStr = sValue;
  343. iniHelper.ReadString("ERP", "ErpSql", out sValue);
  344. sysParams.ErpSql = sValue;
  345. iniHelper.ReadString("Customer", "CustomerName", out sValue);
  346. sysParams.CustomerName = sValue;
  347. iniHelper.ReadString("Material", "SuedeList", out sValue);
  348. if (!string.IsNullOrWhiteSpace(sValue))
  349. sysParams.SuedeList = sValue.Split(new char[] { ',', ';' });
  350. iniHelper.ReadDouble("StopDisOffset", "StopLookDis", out dValue);
  351. sysParams.StopLookDis = dValue;
  352. iniHelper.ReadDouble("StopDisOffset", "StopDecTime", out dValue);
  353. sysParams.StopDecTime = dValue;
  354. iniHelper.ReadBool("StopDisOffset", "HaveStopOffsetDis", out bValue);
  355. sysParams.HaveStopOffsetDis = bValue;
  356. iniHelper.ReadString("StopDisOffset", "StopOffsetDisJson", out sValue);
  357. sysParams.StopOffsetDisJson = sValue;
  358. iniHelper.ReadInteger("StopDisOffset", "StopImageCnt", out iValue);
  359. sysParams.StopImageCnt = iValue;
  360. SysConfigParams = sysParams;
  361. return sysParams;
  362. }
  363. /// <summary>
  364. /// 写入系统默认配置
  365. /// </summary>
  366. public void WriteDefaultSystemConfig()
  367. {
  368. SysConfigParams = new SysConfigParams();
  369. WriteSysConfParams(SysConfigParams);
  370. }
  371. /// <summary>
  372. /// 加载系统配置
  373. /// </summary>
  374. /// <returns></returns>
  375. public bool LoadSystemConfig()
  376. {
  377. bool ret = false;
  378. if (!Directory.Exists(_rootPath))
  379. {
  380. Directory.CreateDirectory(_rootPath);
  381. }
  382. if (!Directory.Exists(_projectDir))
  383. {
  384. Directory.CreateDirectory(_projectDir);
  385. }
  386. if (File.Exists(_configFile))
  387. {
  388. SysConfigParams = ReadSysConfParams();
  389. if (null != SysConfigParams)
  390. {
  391. ret = true;
  392. }
  393. }
  394. else
  395. {
  396. // write default value
  397. WriteDefaultSystemConfig();
  398. ret = true;
  399. }
  400. return ret;
  401. }
  402. #endregion
  403. #region 文件选择
  404. /// <summary>
  405. /// 选择目录
  406. /// </summary>
  407. /// <returns></returns>
  408. public static string SelectFolder(string defaultPath = "")
  409. {
  410. FolderBrowserDialog dlg = new FolderBrowserDialog();
  411. dlg.SelectedPath = (defaultPath != "" ? defaultPath : Path.GetFullPath("."));
  412. if (dlg.ShowDialog() == DialogResult.OK)
  413. return dlg.SelectedPath;
  414. return "";
  415. }
  416. /// <summary>
  417. /// 选择文件
  418. /// </summary>
  419. /// <param name="filter">如 图像文件|*.jpg|图像文件|*.png|所有文件|*.*</param>
  420. /// <returns></returns>
  421. public static string SelectFile(string filter = "所有文件|*.*", string defaultPath = "")
  422. {
  423. OpenFileDialog fie = new OpenFileDialog();
  424. fie.Title = "选择文件";
  425. //fie.InitialDirectory = (defaultPath != "" ? defaultPath : Path.GetFullPath("."));
  426. fie.Filter = filter; //设置文件类型
  427. if (fie.ShowDialog() == DialogResult.OK)
  428. return fie.FileName;
  429. return "";
  430. }
  431. /// <summary>
  432. /// 删除指定目录下文件
  433. /// </summary>
  434. /// <param name="defaultPath"></param>
  435. /// <param name="fileExtend"></param>
  436. /// <returns></returns>
  437. public static bool DelFilesInFolder(string FolderPath, string fileExtend = "*")
  438. {
  439. if (!Directory.Exists(FolderPath))
  440. return false;
  441. string[] files = Directory.GetFiles(FolderPath, fileExtend, SearchOption.TopDirectoryOnly);
  442. foreach (string file in files)
  443. API.DeleteFile(file);
  444. return true;
  445. }
  446. /// <summary>
  447. /// 另存为
  448. /// </summary>
  449. /// <param name="defaultFileName">默认文件名</param>
  450. /// <param name="filter">如 图像文件|*.jpg|图像文件|*.png|所有文件|*.*</param>
  451. /// <returns></returns>
  452. public static string SaveAsFile(string defaultFileName, string filter = "所有文件|*.*")
  453. {
  454. SaveFileDialog s = new SaveFileDialog();
  455. s.Title = "保存文件";
  456. s.Filter = filter; //"图像文件|*.jpg|图像文件|*.png|所有文件|*.*";
  457. //s.DefaultExt = "图像文件|*.jpg"; //默认扩展名
  458. //s.InitialDirectory = @"C:\Users\Administrator\Desktop"; //保存的初始目录
  459. s.FileName = defaultFileName;//默认文件名
  460. if (s.ShowDialog() == DialogResult.OK)
  461. return s.FileName;
  462. return "";
  463. }
  464. #endregion
  465. #region json操作
  466. //public static void addKey(JObject obj, string key, JToken value)
  467. //{
  468. // if (obj.ContainsKey(key))
  469. // obj[key] = value;
  470. // else
  471. // obj.Add(key, value);
  472. //}
  473. #endregion
  474. #region enum名称
  475. public static ArrayList GetArrayList<T>()
  476. {
  477. ArrayList list = new ArrayList();
  478. Type type = typeof(T);
  479. //list.Add(new DictionaryEntry("start", "启动按钮"));
  480. foreach (int value in Enum.GetValues(type))
  481. {
  482. string strName = Enum.GetName(type, value);//获取名称
  483. list.Add(new DictionaryEntry(value, strName));
  484. }
  485. return list;
  486. }
  487. #endregion
  488. #region 生产数据记录
  489. public bool SetDailyOutputAdd(out int tDailyOutput)
  490. {
  491. bool ret = true;
  492. try
  493. {
  494. //读取数据
  495. string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
  496. IniHelper iniHelper = new IniHelper(tempFile);
  497. int iValue = 0;
  498. iniHelper.ReadInteger("TempData", "DailyOutput", out iValue);
  499. tDailyOutput = iValue;
  500. iniHelper.ReadInteger("TempData", "Date", out iValue);
  501. int dateNum = iValue;
  502. int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
  503. if (dateNum == nowDateNum)
  504. {
  505. //同一天,生产数量+1
  506. tDailyOutput++;
  507. }
  508. else if (dateNum < nowDateNum)
  509. {
  510. //昨天数据,为1
  511. tDailyOutput = 1;
  512. }
  513. //重新记录
  514. iniHelper.WriteInteger("TempData", "DailyOutput", tDailyOutput);
  515. iniHelper.WriteInteger("TempData", "Date", nowDateNum);
  516. }
  517. catch (Exception ex)
  518. {
  519. tDailyOutput = 0;
  520. ret = false;
  521. string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
  522. IniHelper iniHelper = new IniHelper(tempFile);
  523. int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
  524. //重新记录
  525. iniHelper.WriteInteger("TempData", "DailyOutput", tDailyOutput);
  526. iniHelper.WriteInteger("TempData", "Date", nowDateNum);
  527. }
  528. return ret;
  529. }
  530. public bool GetDailyOutput(out int tDailyOutput)
  531. {
  532. bool ret = true;
  533. try
  534. {
  535. //读取数据
  536. string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
  537. IniHelper iniHelper = new IniHelper(tempFile);
  538. int iValue = 0;
  539. iniHelper.ReadInteger("TempData", "DailyOutput", out iValue);
  540. tDailyOutput = iValue;
  541. iniHelper.ReadInteger("TempData", "Date", out iValue);
  542. int dateNum = iValue;
  543. int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
  544. if (dateNum == nowDateNum)
  545. {
  546. //同一天,生产数量+1
  547. //tDailyOutput++;
  548. }
  549. else if (dateNum < nowDateNum)
  550. {
  551. //昨天数据,为1
  552. tDailyOutput = 0;
  553. }
  554. }
  555. catch (Exception ex)
  556. {
  557. tDailyOutput = 0;
  558. ret = false;
  559. }
  560. return ret;
  561. }
  562. #endregion
  563. #region ERP数据库
  564. private SqlSugarClient db;
  565. public SqlSugarClient getErpDBCon(SqlSugar.DbType dbType = SqlSugar.DbType.SqlServer)
  566. {
  567. if (string.IsNullOrEmpty(SysConfigParams.ErpDBConStr))
  568. return null;
  569. if (db != null) return db;
  570. db = new SqlSugarClient(new ConnectionConfig()
  571. {
  572. ConnectionString = SysConfigParams.ErpDBConStr,
  573. DbType = dbType,
  574. IsAutoCloseConnection = true
  575. },
  576. db =>
  577. {
  578. db.Aop.OnLogExecuting = (sql, pars) =>
  579. {
  580. Console.WriteLine(sql);//输出sql,查看执行sql 性能无影响
  581. //获取原生SQL推荐 5.1.4.63 性能OK
  582. //UtilMethods.GetNativeSql(sql,pars)
  583. //获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用
  584. //UtilMethods.GetSqlString(DbType.SqlServer,sql,pars)
  585. };
  586. });
  587. return db;
  588. }
  589. public DataTable execSql(string sql, List<SugarParameter> parameters, SqlSugar.DbType dbType = SqlSugar.DbType.SqlServer)
  590. {
  591. //查询表的所有
  592. var mydb = getErpDBCon(dbType);
  593. if (mydb == null) return null;
  594. if (!mydb.Ado.IsValidConnection())
  595. mydb.Ado.Open();
  596. return mydb.Ado.GetDataTable(sql, parameters);
  597. }
  598. #endregion
  599. #endregion
  600. }
  601. #region 参数类型
  602. /// <summary>
  603. /// 图片保存参数
  604. /// </summary>
  605. [Serializable]
  606. public class ImageSaveParam
  607. {
  608. /// <summary>
  609. /// 保存路径
  610. /// </summary>
  611. public string SavePath { get; set; }
  612. /// <summary>
  613. /// 自动保存
  614. /// </summary>
  615. public bool AutoSave { get; set; }
  616. /// <summary>
  617. /// 自动删除
  618. /// </summary>
  619. public bool AutoDelete { get; set; }
  620. /// <summary>
  621. /// 自动删除日期
  622. /// </summary>
  623. public double AutoDeleteDays { get; set; }
  624. public ImageSaveParam()
  625. {
  626. SavePath = "D:\\AllImageSave";
  627. AutoSave = true;
  628. AutoDelete = true;
  629. AutoDeleteDays = 3;
  630. }
  631. public ImageSaveParam(string path)
  632. {
  633. SavePath = path;
  634. AutoSave = true;
  635. AutoDelete = true;
  636. AutoDeleteDays = 3;
  637. }
  638. }
  639. [Serializable]
  640. public class SysConfigParams
  641. {
  642. #region 缺陷图
  643. /// <summary>
  644. /// 缺陷原大图
  645. /// </summary>
  646. public ImageSaveParam DefectSrcImag { get; set; }
  647. /// <summary>
  648. /// 缺陷合并图
  649. /// </summary>
  650. public ImageSaveParam DefectSplicImag { get; set; }
  651. /// <summary>
  652. /// 缺陷小图
  653. /// </summary>
  654. public ImageSaveParam DefectSmallImag { get; set; }
  655. /// <summary>
  656. /// 相机图
  657. /// </summary>
  658. public ImageSaveParam CamImag { get; set; }
  659. #endregion
  660. #region 功能
  661. /// <summary>
  662. /// 开启蜂鸣器
  663. /// </summary>
  664. public bool OpenBuzzer { get; set; }
  665. /// <summary>
  666. /// 开启门磁
  667. /// </summary>
  668. public bool OpenDoor { get; set; }
  669. /// <summary>
  670. /// 开启IO
  671. /// </summary>
  672. public bool OpenIO { get; set; }
  673. /// <summary>
  674. /// 开启PLC
  675. /// </summary>
  676. public bool OpenPLC { get; set; }
  677. /// <summary>
  678. /// 开启计米器
  679. /// </summary>
  680. public bool OpenLengthCount { get; set; }
  681. /// <summary>
  682. /// 自动运行
  683. /// </summary>
  684. public bool OpenAutoRun { get; set; }
  685. /// <summary>
  686. /// 使用计米停车
  687. /// </summary>
  688. public bool OpenLengthCountStop { get; set; }
  689. /// <summary>
  690. /// AI识别边缘
  691. /// </summary>
  692. public bool OpenAIEdge { get; set; }
  693. #endregion
  694. #region 硬件传感器通信
  695. /// <summary>
  696. /// 光源串口
  697. /// </summary>
  698. //public LightParams LightCfg { get; set; }
  699. public string LightCom { get; set; }
  700. /// <summary>
  701. /// 光源波特率
  702. /// </summary>
  703. public int LightComBaud { get; set; }
  704. #endregion
  705. #region 计米器通信
  706. /// <summary>
  707. /// 光源串口
  708. /// </summary>
  709. //public LightParams LightCfg { get; set; }
  710. public string LengthCounterCom { get; set; }
  711. /// <summary>
  712. /// 光源波特率
  713. /// </summary>
  714. public int LengthCounterComBaud { get; set; }
  715. #endregion
  716. #region IO/电机/相机
  717. /// <summary>
  718. /// 西门子PLC IP
  719. /// </summary>
  720. public string PLC_IP { get; set; }
  721. /// <summary>
  722. /// 西门子PLC 端口
  723. /// </summary>
  724. public int PLC_Rack { get; set; }
  725. /// <summary>
  726. /// 西门子PLC 端口
  727. /// </summary>
  728. public int PLC_Solt { get; set; }
  729. /// <summary>
  730. /// IO驱动名称
  731. /// </summary>
  732. //public IOParams IOCfg { get; set; }
  733. public string IODevName { get; set; }
  734. /// <summary>
  735. /// IO配置文件路径
  736. /// </summary>
  737. public string IOCfgPath { get; set; }
  738. /// <summary>
  739. /// 相机序号
  740. /// </summary>
  741. public int CamIndex_1 { get; set; }
  742. /// <summary>
  743. /// 相机板卡序号
  744. /// </summary>
  745. public int CamDev_1 { get; set; }
  746. /// <summary>
  747. /// 相机配置文件
  748. /// </summary>
  749. public string CamPath_1 { get; set; }
  750. /// <summary>
  751. /// 相机序号
  752. /// </summary>
  753. public int CamIndex_2 { get; set; }
  754. /// <summary>
  755. /// 相机板卡序号
  756. /// </summary>
  757. public int CamDev_2 { get; set; }
  758. /// <summary>
  759. /// 相机配置文件
  760. /// </summary>
  761. public string CamPath_2 { get; set; }
  762. #endregion
  763. #region 系统
  764. public string AIModelPath { get; set; }
  765. public string ProductPath { get; set; }
  766. public string LogPath { get; set; }
  767. public bool AutoDeleteLog { get; set; }
  768. public double AutoDeleteLogData { get; set; }
  769. /// <summary>
  770. /// 调试:主界面显示复位按钮
  771. /// </summary>
  772. public bool ShowResetBtn { get; set; }
  773. /// <summary>
  774. /// 调试:主界面显示蜂鸣器控制
  775. /// </summary>
  776. public bool ShowBuzz { get; set; }
  777. /// <summary>
  778. /// 调试:主界面显示门磁报警控制
  779. /// </summary>
  780. public bool ShowDoorAlm { get; set; }
  781. /// <summary>
  782. /// 1cm X方向像素
  783. /// </summary>
  784. public int Cm2px_x = 1;
  785. /// <summary>
  786. /// 1cm Y方向像素
  787. /// </summary>
  788. public int Cm2px_y = 1;
  789. /// <summary>
  790. /// 对比度范围阔算
  791. /// </summary>
  792. public int Expand_pixel = 50;
  793. /// <summary>
  794. /// 中间重合像素
  795. /// </summary>
  796. public int MidCoin = 100;
  797. /// <summary>
  798. /// 孔位
  799. /// </summary>
  800. public int HolePx = 100;
  801. /// <summary>
  802. /// 左侧裁剪
  803. /// </summary>
  804. public int LCrop = 0;
  805. /// <summary>
  806. /// 右侧裁剪
  807. /// </summary>
  808. public int RCrop = 0;
  809. /// <summary>
  810. /// 裁剪偏差
  811. /// </summary>
  812. public int Crop_offset = 0;
  813. /// <summary>
  814. /// 相机1X翻转
  815. /// </summary>
  816. public bool Cam1_flipX { get; set; }
  817. /// <summary>
  818. /// 相机1Y翻转
  819. /// </summary>
  820. public bool Cam1_flipY { get; set; }
  821. /// <summary>
  822. /// 相机2X翻转
  823. /// </summary>
  824. public bool Cam2_flipX { get; set; }
  825. /// <summary>
  826. /// 相机2Y翻转
  827. /// </summary>
  828. public bool Cam2_flipY { get; set; }
  829. #endregion
  830. #region Http/MES
  831. #endregion
  832. #region MQTT本地云/产品服务器
  833. /// <summary>
  834. /// 开启局域网云端
  835. /// </summary>
  836. public bool OpenCloud { get; set; }
  837. public string CloudThisName { get; set; }
  838. public string CloudServerIP { get; set; }
  839. public int CloudServerPort { get; set; }
  840. public string CloudUser { get; set; }
  841. public string CloudPassword { get; set; }
  842. /// <summary>
  843. /// 开启产品转发
  844. /// </summary>
  845. public bool OpenPdtServer { get; set; }
  846. public string PdtServerIP { get; set; }
  847. public int PdtServerPort { get; set; }
  848. /// <summary>
  849. /// 是否作为服务器还是客户端
  850. /// </summary>
  851. public bool IsPdtServer { get; set; }
  852. #endregion
  853. #region BarTender
  854. /// <summary>
  855. /// 开启标签打印
  856. /// </summary>
  857. public bool EnableLabelPrint { get; set; }
  858. /// <summary>
  859. /// 打印机名称
  860. /// </summary>
  861. public string LabelPrinterName { get; set; }
  862. #endregion
  863. #region Excel
  864. /// <summary>
  865. /// 开启Excel打印
  866. /// </summary>
  867. public bool EnableExcelPrint { get; set; }
  868. /// <summary>
  869. /// 打印机名称
  870. /// </summary>
  871. public string ExcelPrinterName { get; set; }
  872. #endregion
  873. #region ERP
  874. /// <summary>
  875. /// 禾欣ERP数据库
  876. /// </summary>
  877. public string ErpDBConStr { get; set; }
  878. /// <summary>
  879. /// 禾欣ERP数据读取
  880. /// </summary>
  881. public string ErpSql { get; set; }
  882. #endregion
  883. #region 客户
  884. /// <summary>
  885. /// 客户名
  886. /// </summary>
  887. public string CustomerName { get; set; }
  888. #endregion
  889. #region 材质配合禾欣
  890. //材质Material
  891. public string[] SuedeList = new string[0];
  892. #endregion
  893. #region 二次判定停车
  894. /// <summary>
  895. /// 停车距离
  896. /// </summary>
  897. public double StopLookDis { get; set; }
  898. /// <summary>
  899. /// 停车减速时间
  900. /// </summary>
  901. public double StopDecTime { get; set; }
  902. /// <summary>
  903. /// 是否会有倒车和过冲
  904. /// </summary>
  905. public bool HaveStopOffsetDis { get; set; }
  906. /// <summary>
  907. /// 偏移补偿数据
  908. /// </summary>
  909. public string StopOffsetDisJson { get; set; }
  910. /// <summary>
  911. /// 不使用计米器时使用图片停车
  912. /// </summary>
  913. public int StopImageCnt { get; set; }
  914. #endregion
  915. public SysConfigParams()
  916. {
  917. DefectSrcImag = new ImageSaveParam("D:\\Image\\DefectSrcImag");
  918. DefectSmallImag = new ImageSaveParam("D:\\Image\\DefectSmallImag");
  919. DefectSplicImag = new ImageSaveParam("D:\\Image\\DefectSplicImag");
  920. CamImag = new ImageSaveParam("D:\\Image\\CamImag");
  921. OpenBuzzer = true;
  922. OpenDoor = true;
  923. OpenIO = true;
  924. OpenPLC = true;
  925. OpenLengthCount = true;
  926. OpenLengthCountStop = true;
  927. IODevName = "";
  928. IOCfgPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\IOCard_default.xml"); ;
  929. LightCom = "";
  930. LightComBaud = 9600;
  931. PLC_IP = "192.168.0.1";
  932. PLC_Rack = 0;
  933. PLC_Solt = 1;
  934. CamIndex_1 = 0;
  935. CamIndex_2 = 0;
  936. CamDev_1 = 0;
  937. CamDev_2 = 1;
  938. CamPath_1 = "";
  939. CamPath_2 = "";
  940. AIModelPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\Models");
  941. ProductPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\Project");
  942. LogPath = Path.Combine(Directory.GetCurrentDirectory(), "LogFiles");
  943. AutoDeleteLog = false;
  944. AutoDeleteLogData = 0;
  945. ShowResetBtn = true;
  946. ShowBuzz = false;
  947. ShowDoorAlm = false;
  948. EnableLabelPrint = false;
  949. LabelPrinterName = "";
  950. EnableExcelPrint = false;
  951. ExcelPrinterName = "";
  952. OpenCloud = false;
  953. CloudThisName = "Test";
  954. CloudServerIP = "127.0.0.1";
  955. CloudServerPort = 1883;
  956. CloudUser = "";
  957. CloudPassword = "";
  958. OpenPdtServer = false;
  959. PdtServerIP = "127.0.0.1";
  960. PdtServerPort = 10573;
  961. IsPdtServer = true;
  962. ErpDBConStr = "";
  963. ErpSql = "";
  964. CustomerName = "";
  965. Cam1_flipX = false;
  966. Cam1_flipY = false;
  967. Cam2_flipX = false;
  968. Cam2_flipY = false;
  969. StopLookDis = 3;
  970. StopDecTime = 1;
  971. HaveStopOffsetDis = false;
  972. StopImageCnt = 3;
  973. }
  974. }
  975. #endregion
  976. }