您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

170 行
7.4 KiB

  1. using Newtonsoft.Json.Linq;
  2. using AssistClient.Device;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. using static AssistClient.Device.AxisDev;
  10. namespace AssistClient
  11. {
  12. public class DevContainer
  13. {
  14. public AxisDev devAxis;//=new AxisDev();
  15. public CodeScannerDev devCodeScanner;//= new CodeScannerDev();
  16. public IOCardDev devIOCard;//=new IOCardDev();
  17. public LightDev devLight;//=new LightDev();
  18. public ScannerDev devScannerCC;// = new ScannerDev(ScannerDev.ScannerType.CC);
  19. public SizeLib libSize;
  20. public ForLib libFor;
  21. public IFLib libIF;
  22. public Action<WarningEnum, string> WarningEvent;
  23. public Action<bool, string> StateChange;
  24. public Action<string, string> OutDebugEvent;
  25. public Action<int, AxisPosType, double> axisPosEvent;
  26. public bool state = false;
  27. private Thread t;
  28. private IntPtr preView1, preView2;
  29. public void start(IntPtr view1, IntPtr view2)
  30. {
  31. this.preView1 = view1;
  32. this.preView2 = view2;
  33. devCodeScanner = new CodeScannerDev();
  34. devCodeScanner.WarningEvent = WarningEvent;
  35. if (!devCodeScanner.start()) throw new Exception("扫码枪初始化失败!");
  36. t = new System.Threading.Thread(run);
  37. t.IsBackground = true;
  38. t.Start();
  39. }
  40. public void stop()
  41. {
  42. try
  43. {
  44. state = false;
  45. try { devAxis.stop(); } catch { }
  46. try { devIOCard.stop(); } catch { }
  47. try { devLight.stop(); } catch { }
  48. try { devScannerCC.stop(); devScannerCC.close(); } catch { }
  49. try { libSize.stop(); } catch { }
  50. try { devCodeScanner.stop(); } catch { }
  51. }
  52. catch { }
  53. }
  54. private void run()
  55. {
  56. try
  57. {
  58. //WarningEvent( WarningEnum.Normal, "启动1");
  59. devAxis = new AxisDev();
  60. devAxis.WarningEvent = WarningEvent;
  61. devAxis.axisPosEvent = axisPosEvent;//位置POS
  62. devIOCard = new IOCardDev();
  63. devIOCard.WarningEvent = WarningEvent;
  64. //devIOCard.OUTEvent = (index, data) =>
  65. //{
  66. // if (Config.HeightDevIOState && devAxis.IsInit && (devAxis.isMoveing(0) || devAxis.isMoveing(2)))
  67. // {
  68. // WarningEvent?.Invoke(WarningEnum.High, "厚度IO已打开,急停,请检查设备,防止损坏!");
  69. // //devAxis.stopNow();
  70. // }
  71. //};
  72. devLight = new LightDev();
  73. devLight.WarningEvent = WarningEvent;
  74. devScannerCC = new ScannerDev(ScannerDev.ScannerType.CC);
  75. devScannerCC.WarningEvent = WarningEvent;
  76. //WarningEvent(WarningEnum.Normal, "启动2");
  77. libSize = new SizeLib();
  78. //WarningEvent(WarningEnum.Normal, "启动2.5");
  79. libSize.WarningEvent = WarningEvent;
  80. libFor = new ForLib();
  81. libIF = new IFLib();
  82. //WarningEvent(WarningEnum.Normal, "启动3");
  83. //启动
  84. if (!devAxis.start(Config.Axis_PulseOutMode)) throw new Exception("运动板卡初始化失败!");
  85. //if (!devCodeScanner.start()) throw new Exception("扫码枪初始化失败!");
  86. if (!devIOCard.start(Config.IOCard_DeviceNum)) throw new Exception("I/O板卡初始化失败!");
  87. if (!Config.SkipLight && !devLight.start(Config.Light_PortNum)) throw new Exception("光源设备初始化失败!");
  88. if (!Config.SkipScannerCC && !devScannerCC.open()) throw new Exception("相机初始化失败!");
  89. if (!Config.SkipScannerCC && !devScannerCC.start(this.preView2, Config.SizeBmp_Path)) throw new Exception("相机打开失败!");
  90. //WarningEvent(WarningEnum.Normal, "启动4");
  91. if (!libSize.start(Config.SizeEnginePath)) throw new Exception("尺寸库初始化失败!");
  92. //WarningEvent(WarningEnum.Normal, "启动5");
  93. //
  94. state = true;
  95. StateChange?.Invoke(true, "成功");
  96. }
  97. catch (Exception ex)
  98. {
  99. stop();
  100. StateChange?.Invoke(false, ex.Message);
  101. }
  102. }
  103. /// <summary>
  104. /// I/O指令输出
  105. /// </summary>
  106. /// <param name="key">CMDName</param>
  107. /// <param name="isStrobe">频闪</param>
  108. /// <param name="recover">输出sleep下,后恢复原信号</param>
  109. /// <param name="recoverWaitTime">sleep多久后反转</param>
  110. /// <returns></returns>
  111. public bool io_output(CMDName key, bool isStrobe = false, bool recover = false, int recoverWaitTime = 100)
  112. {
  113. if (Config.CMDProcess.ContainsKey(key))
  114. return io_output(key.ToString(),Config.CMDProcess[key], isStrobe, recover, recoverWaitTime);
  115. return false;
  116. }
  117. /// <summary>
  118. /// I/O指令输出
  119. /// </summary>
  120. /// <param name="processParam"></param>
  121. /// <param name="isStrobe">频闪</param>
  122. /// <param name="recover">输出sleep(recoverWaitTime)下,后恢复原信号</param>
  123. /// <param name="recoverWaitTime">sleep 后反转</param>
  124. public bool io_output(string tagName,JObject processParam, bool isStrobe = false, bool recover = false, int recoverWaitTime = 100)
  125. {
  126. bool result = false;
  127. string[] OUT_OP_SHOW = processParam.Value<JArray>("OUT_OP_SHOW").ToObject<List<string>>().ToArray();
  128. OUT_OP_SHOW = Utils.Util.IODataFormatBinaryStr(OUT_OP_SHOW, true);
  129. for (int i = 0; i < OUT_OP_SHOW.Length; i++)
  130. {
  131. for (int j = 0; j < OUT_OP_SHOW[i].Length; j++)
  132. {
  133. int jj = OUT_OP_SHOW[i].Length - j - 1;
  134. if (OUT_OP_SHOW[i][jj] == 'L' || OUT_OP_SHOW[i][jj] == 'H')
  135. {
  136. if (recover)
  137. {
  138. if (recoverWaitTime > 0)
  139. {
  140. OutDebugEvent?.Invoke(tagName, $"向I/O输出引脚{i}-{j},信号{OUT_OP_SHOW[i][jj]},输出时长:{recoverWaitTime}ms");
  141. devIOCard.writeBitState(i, j, OUT_OP_SHOW[i][jj] == 'H', isStrobe);
  142. Thread.Sleep(recoverWaitTime);
  143. }
  144. OutDebugEvent?.Invoke(tagName, $"向I/O输出引脚{i}-{j},信号{OUT_OP_SHOW[i][jj]=='L'}");
  145. devIOCard.writeBitState(i, j, OUT_OP_SHOW[i][jj] == 'L');
  146. }
  147. else
  148. {
  149. OutDebugEvent?.Invoke(tagName, $"向I/O输出引脚{i}-{j},信号{OUT_OP_SHOW[i][jj]}");
  150. devIOCard.writeBitState(i, j, OUT_OP_SHOW[i][jj] == 'H', isStrobe);
  151. }
  152. result = true;
  153. }
  154. }
  155. }
  156. return result;
  157. }
  158. }
  159. }