PieceWork.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Threading;
  7. using Curtain.Core;
  8. using Curtain.DataAccess;
  9. using Curtain.Framework.Json;
  10. using Curtain.Helpers;
  11. using Curtain.Log;
  12. using Curtain.Net.Sockets.PLC;
  13. using Curtain.Net.Sockets.PLC.Model;
  14. using Curtain.Net.Sockets.PLC.Model.Melsec;
  15. using Curtain.Net.Sockets.PLC.Model.Siemens;
  16. using PLC_S.Proxy;
  17. namespace PLC_S.ServerModel
  18. {
  19. /// <summary>
  20. /// 计件(中陶,机械臂施釉)
  21. /// </summary>
  22. public class PieceWork : SocketServer<SimpleSocketServerModel>, IShowFormLog, IWindowsServer
  23. {
  24. public Dictionary<string, PLC_S_PW> PLC_FLAGS = new Dictionary<string, PLC_S_PW>();
  25. public Dictionary<string, PLC_S_GC> PLC_FLAGS_GC = new Dictionary<string, PLC_S_GC>();
  26. public const string M_NAME = "PW";
  27. private readonly MES_S _mes_s = null;
  28. private readonly Logger logger = Logger.CreateLogger(M_NAME);
  29. private readonly LogInfo logger_t = new LogInfo();
  30. private readonly LogInfo logger_e = new LogInfo();
  31. private bool _S_STOP = false;
  32. public PieceWork()
  33. {
  34. logger.FileExistDays = 30;
  35. logger.FilePrefix = "";
  36. logger.FileSuffix = M_NAME;
  37. logger_t.LevelOneFile = true;
  38. logger.FileNameWithoutDate = true;
  39. logger_t.SubFolderFormat = "<name>";
  40. logger_t.FileExistDays = 30;
  41. logger_t.LevelOneFile = true;
  42. logger_e.FileExistDays = 0;
  43. this.Model.FormatType = CommandFormatType.StartStopChar;
  44. this.ServerStarting += ServerSocket_ServerStarting;
  45. this.ServerStarted += ServerSocket_ServerStarted;
  46. this.ServerStoping += ServerSocket_ServerStoping;
  47. this.ServerStoped += ServerSocket_ServerStoped;
  48. this.ServerMessage += ServerSocket_ServerMessage;
  49. this.Received += ServerSocket_Received;
  50. _mes_s = MES_S.Get();
  51. }
  52. #region Server
  53. public IFormLogShow FormLogShow
  54. {
  55. get;
  56. set;
  57. }
  58. private void ServerSocket_ServerStarting(object sender, CancelEventArgs e)
  59. {
  60. try
  61. {
  62. _S_STOP = false;
  63. logger.OutputTrace($"{M_NAME}_ServerStarting");
  64. }
  65. catch { }
  66. }
  67. private void ServerSocket_ServerStarted(object sender, EventArgs e)
  68. {
  69. try
  70. {
  71. _S_STOP = false;
  72. logger.OutputTrace($"{M_NAME}_ServerStarted");
  73. }
  74. catch { }
  75. }
  76. private void ServerSocket_ServerStoping(object sender, CancelEventArgs e)
  77. {
  78. try
  79. {
  80. _S_STOP = true;
  81. logger.OutputTrace($"{M_NAME}_ServerStoping");
  82. }
  83. catch { }
  84. }
  85. private void ServerSocket_ServerStoped(object sender, EventArgs e)
  86. {
  87. try
  88. {
  89. _S_STOP = true;
  90. logger.OutputTrace($"{M_NAME}_ServerStoped");
  91. }
  92. catch { }
  93. }
  94. private void ServerSocket_ServerMessage(object sender, ServerMessageEventArgs e)
  95. {
  96. try
  97. {
  98. _S_STOP = true;
  99. string message = e.ToString();
  100. string cip = e?.Client?.IP;
  101. if (e.Type == ServerMessageType.Debug)
  102. {
  103. Logger.Debug(message, $"{M_NAME}-T[{cip}]", logger_t);
  104. }
  105. if (e.Type == ServerMessageType.Error)
  106. {
  107. Logger.Error(e.Exception, message, $"{M_NAME}-E[{cip}]", logger_e);
  108. }
  109. if (e.Type == ServerMessageType.Trace)
  110. {
  111. Logger.Trace(message, $"{M_NAME}-T[{cip}]", logger_t);
  112. }
  113. if (e.Type == ServerMessageType.Warning)
  114. {
  115. Logger.Warn(message, $"{M_NAME}-E[{cip}]", logger_e);
  116. }
  117. FormLogShow?.ShowLog("ServerMessage=" + message);
  118. }
  119. catch { }
  120. }
  121. #endregion
  122. private string _RECEIVED_CODE = null;
  123. /// <summary>
  124. /// 返回产品型号
  125. /// </summary>
  126. /// <param name="sender"></param>
  127. /// <param name="e"></param>
  128. private void ServerSocket_Received(object sender, ReceiveSession e)
  129. {
  130. string receivedCode = Guid.NewGuid().ToString();
  131. _RECEIVED_CODE = receivedCode;
  132. _S_STOP = true;
  133. lock (this)
  134. {
  135. string cIP = e?.Client?.IP;
  136. string logKeyT = $"{M_NAME}-T[{cIP}]";
  137. string logKeyE = $"{M_NAME}-E[{cIP}]";
  138. if (_RECEIVED_CODE != receivedCode)
  139. {
  140. string outputMessage = $"[{e.Content}]不是当前请求,退出排队";
  141. Logger.Warn(outputMessage, logKeyT, logger_t);
  142. Logger.Warn(outputMessage, logKeyE, logger_e);
  143. FormLogShow?.ShowLog(outputMessage);
  144. return;
  145. }
  146. _S_STOP = false;
  147. PLC_S_PW plc_s = null;
  148. SocketClient<SiemensS7_1200Model> plc = null;
  149. try
  150. {
  151. string outputMessage = e.ToString();
  152. Logger.Trace(outputMessage, logKeyT, logger_t);
  153. FormLogShow?.ShowLog(outputMessage);
  154. if (string.IsNullOrWhiteSpace(e.Content))
  155. {
  156. outputMessage = "接收数据为空";
  157. Logger.Warn(outputMessage, logKeyT, logger_t);
  158. Logger.Warn(outputMessage, logKeyE, logger_e);
  159. FormLogShow?.ShowLog(outputMessage);
  160. return;
  161. }
  162. outputMessage = e.Content;
  163. Logger.Trace(outputMessage, logKeyT, logger_t);
  164. FormLogShow?.ShowLog(outputMessage);
  165. string flag = null;
  166. string[] c = e.Content.Split('#');
  167. if (c.Length > 0)
  168. {
  169. flag = c[0];
  170. }
  171. string barcode = null;
  172. if (c.Length > 1)
  173. {
  174. barcode = c[1];
  175. }
  176. plc_s = GetPLC_S_PW(flag, e, logKeyE);
  177. if (plc_s == null || plc_s.USER_CDOES == null)
  178. {
  179. outputMessage = $"[{e.Content}]设备代码[{flag}]未找到ini配置或有错误";
  180. Logger.Error(null, outputMessage, logKeyT, logger_t);
  181. Logger.Error(null, outputMessage, logKeyE, logger_e);
  182. FormLogShow?.ShowLog(outputMessage);
  183. return;
  184. }
  185. plc = new SocketClient<SiemensS7_1200Model>();
  186. plc.Connect(plc_s.IP, plc_s.Port);
  187. outputMessage = $"[{e.Content}]PLC_Connect=[{plc_s.IP}:{plc_s.Port}]";
  188. Logger.Trace(outputMessage, logKeyT, logger_t);
  189. FormLogShow?.ShowLog(outputMessage);
  190. if (string.IsNullOrWhiteSpace(flag))
  191. {
  192. outputMessage = $"[{e.Content}]接收设备代码为空";
  193. Logger.Warn(outputMessage, logKeyT, logger_t);
  194. Logger.Warn(outputMessage, logKeyE, logger_e);
  195. FormLogShow?.ShowLog(outputMessage);
  196. SendError(plc_s, e, logKeyT, logKeyE, plc);
  197. return;
  198. }
  199. if (string.IsNullOrWhiteSpace(barcode) || barcode == "0" || barcode.StartsWith("0"))
  200. {
  201. outputMessage = $"[{e.Content}]接收条码为空";
  202. Logger.Warn(outputMessage, logKeyT, logger_t);
  203. Logger.Warn(outputMessage, logKeyE, logger_e);
  204. FormLogShow?.ShowLog(outputMessage);
  205. SendError(plc_s, e, logKeyT, logKeyE, plc);
  206. return;
  207. }
  208. outputMessage = $"[{e.Content}]GET_产品型号";
  209. Logger.Trace(outputMessage, logKeyT, logger_t);
  210. FormLogShow?.ShowLog(outputMessage);
  211. DataRow codeRow = GetGoodsCode(barcode, e, logKeyE);
  212. if (codeRow == null)
  213. {
  214. outputMessage = $"[{e.Content}]此条码[{barcode}]不存在";
  215. Logger.Warn(outputMessage, logKeyT, logger_t);
  216. Logger.Warn(outputMessage, logKeyE, logger_e);
  217. FormLogShow?.ShowLog(outputMessage);
  218. SendError(plc_s, e, logKeyT, logKeyE, plc);
  219. return;
  220. }
  221. string code = codeRow["goodscode"].ToString();
  222. string intcode = codeRow["seatcovercode"].ToString();
  223. outputMessage = $"[{e.Content}]END_产品型号={code}[{intcode}]";
  224. Logger.Trace(outputMessage, logKeyT, logger_t);
  225. FormLogShow?.ShowLog(outputMessage);
  226. if (string.IsNullOrWhiteSpace(intcode))
  227. {
  228. outputMessage = $"[{e.Content}]此条码[{barcode}]未设置型号代码";
  229. Logger.Error(null, outputMessage, logKeyT, logger_t);
  230. Logger.Error(null, outputMessage, logKeyE, logger_e);
  231. FormLogShow?.ShowLog(outputMessage);
  232. SendError(plc_s, e, logKeyT, logKeyE, plc);
  233. return;
  234. }
  235. outputMessage = $"[{e.Content}]SET_GoodsCode=[{intcode}]{plc_s.Add_GoodsCode + plc_s.Add_GoodsCodeNum}";
  236. Logger.Trace(outputMessage, logKeyT, logger_t);
  237. FormLogShow?.ShowLog(outputMessage);
  238. plc.Write<short>(plc_s.Add_GoodsCode, plc_s.Add_GoodsCodeNum, (short)(intcode.ToInt32()));
  239. outputMessage = $"[{e.Content}]END_GoodsCode=[{intcode}]{plc_s.Add_GoodsCode + plc_s.Add_GoodsCodeNum}";
  240. Logger.Trace(outputMessage, logKeyT, logger_t);
  241. FormLogShow?.ShowLog(outputMessage);
  242. outputMessage = $"[{e.Content}]SET_FlagCode=[1]{plc_s.Add_FlagCode + plc_s.Add_FlagCodeNum}";
  243. Logger.Trace(outputMessage, logKeyT, logger_t);
  244. FormLogShow?.ShowLog(outputMessage);
  245. plc.Write<short>(plc_s.Add_FlagCode, plc_s.Add_FlagCodeNum, (short)1);
  246. outputMessage = $"[{e.Content}]END_FlagCode=[1]{plc_s.Add_FlagCode + plc_s.Add_FlagCodeNum}";
  247. Logger.Trace(outputMessage, logKeyT, logger_t);
  248. FormLogShow?.ShowLog(outputMessage);
  249. PLCResult<short> flag_result = null;
  250. while (true)
  251. {
  252. Thread.Sleep(plc_s.Thread_Sleep);
  253. outputMessage = $"[{e.Content}]GET_FlagCode=[ ]{plc_s.Add_FlagCode + plc_s.Add_FlagCodeNum}";
  254. Logger.Trace(outputMessage, logKeyT, logger_t);
  255. FormLogShow?.ShowLog(outputMessage);
  256. flag_result = plc.Read<short>(plc_s.Add_FlagCode, plc_s.Add_FlagCodeNum);
  257. outputMessage = $"[{e.Content}]END_FlagCode=[{flag_result.Data}]{plc_s.Add_FlagCode + plc_s.Add_FlagCodeNum}";
  258. Logger.Trace(outputMessage, logKeyT, logger_t);
  259. FormLogShow?.ShowLog(outputMessage);
  260. if (flag_result.Data == 1)
  261. {
  262. continue;
  263. }
  264. if (flag_result.Data == 2)
  265. {
  266. break;
  267. }
  268. if (_S_STOP)
  269. {
  270. outputMessage = $"[{e.Content}]STOP[S]";
  271. Logger.Trace(outputMessage, logKeyT, logger_t);
  272. FormLogShow?.ShowLog(outputMessage);
  273. SendError(plc_s, e, logKeyT, logKeyE, plc);
  274. return;
  275. }
  276. //if (flag_result.Data == 0)
  277. {
  278. outputMessage = $"[{e.Content}]STOP[{flag_result.Data}]";
  279. Logger.Trace(outputMessage, logKeyT, logger_t);
  280. FormLogShow?.ShowLog(outputMessage);
  281. SendError(plc_s, e, logKeyT, logKeyE, plc);
  282. return;
  283. }
  284. }
  285. outputMessage = $"[{e.Content}]GET_RoomCode=[ ]{plc_s.Add_RoomCode + plc_s.Add_RoomCodeNum}";
  286. Logger.Trace(outputMessage, logKeyT, logger_t);
  287. FormLogShow?.ShowLog(outputMessage);
  288. PLCResult<short> room_result = plc.Read<short>(plc_s.Add_RoomCode, plc_s.Add_RoomCodeNum);
  289. outputMessage = $"[{e.Content}]END_RoomCode=[{room_result.Data}]{plc_s.Add_RoomCode + plc_s.Add_RoomCodeNum}";
  290. Logger.Trace(outputMessage, logKeyT, logger_t);
  291. FormLogShow?.ShowLog(outputMessage);
  292. int room_num = room_result.Data;
  293. string roomcode = room_num.ToString();
  294. outputMessage = $"[{e.Content}]ADD_RoomCode=[{roomcode}]";
  295. Logger.Trace(outputMessage, logKeyT, logger_t);
  296. FormLogShow?.ShowLog(outputMessage);
  297. bool setRoom = SetGlazingRoom(barcode, roomcode, e, logKeyE);
  298. if (!setRoom)
  299. {
  300. outputMessage = $"[{barcode}][{roomcode}]设置施釉房号失败";
  301. Logger.Warn(outputMessage, logKeyT, logger_t);
  302. Logger.Warn(outputMessage, logKeyE, logger_e);
  303. FormLogShow?.ShowLog(outputMessage);
  304. SendError(plc_s, e, logKeyT, logKeyE, plc);
  305. //return;
  306. }
  307. outputMessage = $"[{e.Content}]usercode_s=[{plc_s.USER_CDOE}]";
  308. Logger.Trace(outputMessage, logKeyT, logger_t);
  309. FormLogShow?.ShowLog(outputMessage);
  310. string usercode = plc_s.USER_CDOES[room_num];
  311. outputMessage = $"[{e.Content}]usercode=[{usercode}]";
  312. Logger.Trace(outputMessage, logKeyT, logger_t);
  313. FormLogShow?.ShowLog(outputMessage);
  314. outputMessage = $"[{e.Content}]AddWorkPieceByStatus3=[P_ID:{plc_s.P_ID}][Code:{roomcode}]";
  315. Logger.Trace(outputMessage, logKeyT, logger_t);
  316. FormLogShow?.ShowLog(outputMessage);
  317. string result = SmartDeviceProxy.Instance.Invoke<string>(
  318. p => p.AddWorkPieceByStatus3(
  319. _mes_s.AccountCode,
  320. usercode,
  321. null,
  322. plc_s.P_ID,
  323. barcode,
  324. roomcode));
  325. //string result = "OK";
  326. // 返回状态(成功、失败)
  327. if (result == "OK")
  328. {
  329. outputMessage = $"[{e.Content}]result=[OK]";
  330. Logger.Trace(outputMessage, logKeyT, logger_t);
  331. FormLogShow?.ShowLog(outputMessage);
  332. return;
  333. }
  334. if (result == "EE")
  335. {
  336. outputMessage = $"[{e.Content}]result=[{result}]MES服务端异常(详情参见MES端日志)";
  337. }
  338. else if (result == "EU-01")
  339. {
  340. outputMessage = $"[{e.Content}]result=[{result}]无效的帐套或工号(详情参见MES端日志)";
  341. }
  342. else
  343. {
  344. outputMessage = $"[{e.Content}]result=[{result}]其他错误(详情参见MES端日志)";
  345. }
  346. Logger.Warn( outputMessage, logKeyT, logger_t);
  347. Logger.Warn( outputMessage, logKeyE, logger_e);
  348. FormLogShow?.ShowLog(outputMessage);
  349. SendError(plc_s, e, logKeyT, logKeyE, plc);
  350. }
  351. catch (Exception ex)
  352. {
  353. FormLogShow?.ShowLog($"[{e.Content}]ERROR={ex.Message}");
  354. if (plc_s != null)
  355. {
  356. Logger.Error(ex, $"[{e.Content}]ERROR", logKeyT, logger_t);
  357. Logger.Error(ex, $"[{e.Content}]ERROR", logKeyE, logger_e);
  358. SendError(plc_s, e, logKeyT, logKeyE, plc);
  359. }
  360. else
  361. {
  362. Logger.Error(ex, $"[{e.Content}]ERROR-NOFLAG", logKeyT, logger_t);
  363. Logger.Error(ex, $"[{e.Content}]ERROR-NOFLAG", logKeyE, logger_e);
  364. }
  365. }
  366. finally
  367. {
  368. try
  369. {
  370. string outputMessage = $"[{e.Content}]SET_FlagCode=[0]{plc_s.Add_FlagCode + plc_s.Add_FlagCodeNum}";
  371. Logger.Trace(outputMessage, logKeyT, logger_t);
  372. FormLogShow?.ShowLog(outputMessage);
  373. plc?.Write<short>(plc_s.Add_FlagCode, plc_s.Add_FlagCodeNum, (short)0);
  374. outputMessage = $"[{e.Content}]END_FlagCode=[0]{plc_s.Add_FlagCode + plc_s.Add_FlagCodeNum}";
  375. Logger.Trace(outputMessage, logKeyT, logger_t);
  376. FormLogShow?.ShowLog(outputMessage);
  377. }
  378. catch(Exception ex)
  379. {
  380. Logger.Error(ex, $"[{e.Content}]ERROR-FIN", logKeyT, logger_t);
  381. Logger.Error(ex, $"[{e.Content}]ERROR-FIN", logKeyE, logger_e);
  382. FormLogShow?.ShowLog($"[{e.Content}]ERROR-FIN={ex.Message}");
  383. }
  384. plc?.Disconnect();
  385. plc?.Close();
  386. e.ReturnMessage("0000");
  387. }
  388. }
  389. }
  390. private void SendError(PLC_S_PW plc_s, ReceiveSession e, string loggerNameT,
  391. string loggerNameE, SocketClient<SiemensS7_1200Model> plc)
  392. {
  393. try
  394. {
  395. //using (SocketClient<SiemensS7_1200Model> plc = new SocketClient<SiemensS7_1200Model>())
  396. {
  397. string outputMessage = $"[{e.Content}]SET_ErrorNum=[1]{plc_s.Add_Error + plc_s.Add_ErrorNum}";
  398. Logger.Trace(outputMessage, loggerNameT, logger_t);
  399. FormLogShow?.ShowLog(outputMessage);
  400. plc?.Write<short>(plc_s.Add_Error, plc_s.Add_ErrorNum, (short)1);
  401. outputMessage = $"[{e.Content}]END_ErrorNum=[1]{plc_s.Add_Error + plc_s.Add_ErrorNum}";
  402. Logger.Trace(outputMessage, loggerNameT, logger_t);
  403. FormLogShow?.ShowLog(outputMessage);
  404. }
  405. }
  406. catch (Exception ex)
  407. {
  408. Logger.Error(ex, $"[{e.Content}]ERROR-SendError", loggerNameT, logger_t);
  409. Logger.Error(ex, $"[{e.Content}]ERROR-SendError", loggerNameE, logger_e);
  410. FormLogShow?.ShowLog($"[{e.Content}]ERROR-SendError={ex.Message}");
  411. }
  412. }
  413. private DataRow GetGoodsCode(string barcode, ReceiveSession e, string loggerName)
  414. {
  415. IDataAccess dataAccess = null;
  416. try
  417. {
  418. dataAccess = PLC_S_DataAccess.GetDataAccess(e);
  419. string sqlString = "select g.goodscode, g.seatcovercode\n" +
  420. " from tp_pm_groutingdailydetail gdd\n" +
  421. " inner join tp_mst_goods g\n" +
  422. " on g.goodsid = gdd.goodsid\n" +
  423. " where gdd.barcode = :barcode";
  424. DataTable dataTable = dataAccess.ExecuteDatatable(sqlString, new CDAParameter(":barcode", barcode));
  425. if (dataTable.HasData())
  426. {
  427. return dataTable.Rows[0];
  428. }
  429. return null;
  430. }
  431. catch (Exception ex)
  432. {
  433. //Logger.Error(ex, $"[{e.Content}]ERROR-GetGoodsCode", loggerNameT, logger_t);
  434. Logger.Error(ex, $"[{e.Content}]ERROR-GetGoodsCode", loggerName, logger_e);
  435. FormLogShow?.ShowLog($"[{e.Content}]ERROR-GetGoodsCode={ex.Message}");
  436. return null;
  437. }
  438. finally
  439. {
  440. dataAccess?.Close();
  441. }
  442. }
  443. /// <summary>
  444. /// 记录喷釉房
  445. /// </summary>
  446. /// <param name="barcode"></param>
  447. /// <returns></returns>
  448. private bool SetGlazingRoom(string barcode, string roomcode, ReceiveSession e, string loggerName)
  449. {
  450. IDataAccess dataAccess = null;
  451. try
  452. {
  453. dataAccess = PLC_S_DataAccess.GetDataAccess(e);
  454. string sqlString = "update tp_pm_groutingdailydetail g set g.glazingroom = :roomcode where g.barcode=:barcode";
  455. int i = dataAccess.ExecuteNonQuery(sqlString,
  456. new CDAParameter[] { new CDAParameter(":roomcode", roomcode), new CDAParameter(":barcode", barcode) });
  457. return true;
  458. }
  459. catch (Exception ex)
  460. {
  461. //Logger.Error(ex, $"[{e.Content}]ERROR-SetGlazingRoom", loggerNameT, logger_t);
  462. Logger.Error(ex, $"[{e.Content}]ERROR-SetGlazingRoom", loggerName, logger_e);
  463. FormLogShow?.ShowLog($"[{e.Content}]ERROR-SetGlazingRoom={ex.Message}");
  464. return false;
  465. }
  466. finally
  467. {
  468. dataAccess?.Close();
  469. }
  470. }
  471. private PLC_S_GC GetPLC_S_GC(string flag, ReceiveSession e, string loggerName)
  472. {
  473. try
  474. {
  475. flag = "GC" + flag;
  476. if (PLC_FLAGS_GC.ContainsKey(flag))
  477. {
  478. return PLC_FLAGS_GC[flag];
  479. }
  480. else
  481. {
  482. PLC_S_GC plc_s = new PLC_S_GC();
  483. INIHelper ini = INIHelper.IniFile($@"PLC_S_INI\PLC_S_{M_NAME}.ini");
  484. plc_s.IP = ini.Read(flag, "IP");
  485. plc_s.Port = ini.Read(flag, "Port").ToInt32();
  486. plc_s.Add_Code = ini.Read(flag, "Add_Code");
  487. plc_s.Add_CodeNum = ini.Read(flag, "Add_CodeNum");
  488. plc_s.Add_BarCode = ini.Read(flag, "Add_BarCode");
  489. plc_s.Add_BarCodeNum = ini.Read(flag, "Add_BarCodeNum");
  490. plc_s.Add_Error = ini.Read(flag, "Add_Error");
  491. plc_s.Add_ErrorNum = ini.Read(flag, "Add_ErrorNum");
  492. PLC_FLAGS_GC.Add(flag, plc_s);
  493. return plc_s;
  494. }
  495. }
  496. catch (Exception ex)
  497. {
  498. //Logger.Error(ex, $"[{e.Content}]ERROR-GetPLC_S_GC", loggerNameT, logger_t);
  499. Logger.Error(ex, $"[{e.Content}]ERROR-GetPLC_S_GC", loggerName, logger_e);
  500. FormLogShow?.ShowLog($"[{e.Content}]ERROR-GetPLC_S_GC={ex.Message}");
  501. return null;
  502. }
  503. }
  504. private PLC_S_PW GetPLC_S_PW(string flag, ReceiveSession e, string loggerName)
  505. {
  506. try
  507. {
  508. flag = "PW" + flag;
  509. if (PLC_FLAGS.ContainsKey(flag))
  510. {
  511. return PLC_FLAGS[flag];
  512. }
  513. else
  514. {
  515. PLC_S_PW plc_s = new PLC_S_PW();
  516. INIHelper ini = INIHelper.IniFile($@"PLC_S_INI\PLC_S_{M_NAME}.ini");
  517. plc_s.P_ID = ini.Read(flag, "P_ID").ToInt32();
  518. plc_s.USER_CDOE = ini.Read(flag, "USER_CDOE");
  519. plc_s.USER_CDOES = plc_s.USER_CDOE?.Split(',');
  520. plc_s.USER_CDOE = JsonHelper.ToJson(plc_s.USER_CDOES);
  521. plc_s.IP = ini.Read(flag, "IP");
  522. plc_s.Port = ini.Read(flag, "Port").ToInt32();
  523. plc_s.Add_GoodsCode = ini.Read(flag, "Add_GoodsCode");
  524. plc_s.Add_GoodsCodeNum = ini.Read(flag, "Add_GoodsCodeNum");
  525. plc_s.Add_RoomCode = ini.Read(flag, "Add_RoomCode");
  526. plc_s.Add_RoomCodeNum = ini.Read(flag, "Add_RoomCodeNum");
  527. plc_s.Thread_Sleep = ini.Read(flag, "Thread_Sleep").ToInt32();
  528. if (plc_s.Thread_Sleep < 1000)
  529. {
  530. plc_s.Thread_Sleep = 1000;
  531. }
  532. plc_s.Add_FlagCode = ini.Read(flag, "Add_FlagCode");
  533. plc_s.Add_FlagCodeNum = ini.Read(flag, "Add_FlagCodeNum");
  534. plc_s.Add_Error = ini.Read(flag, "Add_Error");
  535. plc_s.Add_ErrorNum = ini.Read(flag, "Add_ErrorNum");
  536. PLC_FLAGS.Add(flag, plc_s);
  537. return plc_s;
  538. }
  539. }
  540. catch (Exception ex)
  541. {
  542. //Logger.Error(ex, $"[{e.Content}]ERROR-GetPLC_S_PW", loggerNameT, logger_t);
  543. Logger.Error(ex, $"[{e.Content}]ERROR-GetPLC_S_PW", loggerName, logger_e);
  544. FormLogShow?.ShowLog($"[{e.Content}]ERROR-GetPLC_S_PW={ex.Message}");
  545. return null;
  546. }
  547. }
  548. }
  549. }