ShowBindingClass.cs 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064
  1. using CCDCount.DLL;
  2. using CCDCount.MODEL.AlarmModel;
  3. using CCDCount.MODEL.ConfigModel;
  4. using CCDCount.MODEL.SqlDataModel;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Collections.ObjectModel;
  8. using System.ComponentModel;
  9. using System.Drawing.Text;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows.Media;
  14. using System.Windows.Media.Imaging;
  15. namespace CCDCountWpf
  16. {
  17. public class CameraCoboxItem
  18. {
  19. public string Name { get; set; } // 显示的名称
  20. public string SNValue { get; set; } // 对应的编号
  21. }
  22. public class ShowBindingClass : INotifyPropertyChanged
  23. {
  24. /// <summary>
  25. /// 累计数量
  26. /// </summary>
  27. private string allActiveNum = "0";
  28. public string AllActiveNum
  29. {
  30. get { return allActiveNum; }
  31. set
  32. {
  33. allActiveNum = value;
  34. OnPropertyChanged("AllActiveNum");
  35. }
  36. }
  37. /// <summary>
  38. /// 累计OK
  39. /// </summary>
  40. private string allOkNum = "0";
  41. public string AllOkNum
  42. {
  43. get { return allOkNum; }
  44. set
  45. {
  46. allOkNum = value;
  47. OnPropertyChanged("AllOkNum");
  48. }
  49. }
  50. /// <summary>
  51. /// 累计NG
  52. /// </summary>
  53. private string allNgNum = "0";
  54. public string AllNgNum
  55. {
  56. get { return allNgNum; }
  57. set
  58. {
  59. allNgNum = value;
  60. OnPropertyChanged("AllNgNum");
  61. }
  62. }
  63. /// <summary>
  64. /// 数粒速度
  65. /// </summary>
  66. private string shuLiSpeed = "0";
  67. public string ShuLiSpeed
  68. {
  69. get { return shuLiSpeed; }
  70. set
  71. {
  72. shuLiSpeed = value;
  73. OnPropertyChanged("ShuLiSpeed");
  74. }
  75. }
  76. /// <summary>
  77. /// 数粒速度
  78. /// </summary>
  79. private string bottingCountSpeed = "0";
  80. public string BottingCountSpeed
  81. {
  82. get { return bottingCountSpeed; }
  83. set
  84. {
  85. bottingCountSpeed = value;
  86. OnPropertyChanged("BottingCountSpeed");
  87. }
  88. }
  89. /// <summary>
  90. /// 内存监控
  91. /// </summary>
  92. private string ramMonitor = "";
  93. public string RamMonitor
  94. {
  95. get { return ramMonitor; }
  96. set
  97. {
  98. ramMonitor = value;
  99. OnPropertyChanged("RamMonitor");
  100. }
  101. }
  102. /// <summary>
  103. /// CPU监控
  104. /// </summary>
  105. private string _CPUMonitor = "";
  106. public string CPUMonitor
  107. {
  108. get { return _CPUMonitor; }
  109. set
  110. {
  111. _CPUMonitor = value;
  112. OnPropertyChanged("CPUMonitor");
  113. }
  114. }
  115. /// <summary>
  116. /// 相机运行状态
  117. /// </summary>
  118. private string camRunStatic = "未运行";
  119. public string CamRunStatic
  120. {
  121. get { return camRunStatic; }
  122. set
  123. {
  124. camRunStatic = value;
  125. OnPropertyChanged("CamRunStatic");
  126. }
  127. }
  128. /// <summary>
  129. /// 历史结果当前图像编号
  130. /// </summary>
  131. private int historyImageNum = 1;
  132. public int HistoryImageNum
  133. {
  134. get { return historyImageNum; }
  135. set
  136. {
  137. historyImageNum = value;
  138. OnPropertyChanged("HistoryImageNum");
  139. }
  140. }
  141. /// <summary>
  142. /// 历史结果图像数量
  143. /// </summary>
  144. private int historyImageCount = 0;
  145. public int HistoryImageCount
  146. {
  147. get { return historyImageCount; }
  148. set
  149. {
  150. historyImageCount = value;
  151. OnPropertyChanged("HistoryImageCount");
  152. }
  153. }
  154. /// <summary>
  155. /// 历史结果图像
  156. /// </summary>
  157. private BitmapImage historyImage;
  158. public BitmapImage HistoryImage
  159. {
  160. get { return historyImage; }
  161. set
  162. {
  163. historyImage = value;
  164. OnPropertyChanged("HistoryImage");
  165. }
  166. }
  167. /// <summary>
  168. /// 结果图像
  169. /// </summary>
  170. private BitmapImage bitmapImage;
  171. public BitmapImage BitmapImage
  172. {
  173. get { return bitmapImage; }
  174. set
  175. {
  176. bitmapImage = value;
  177. OnPropertyChanged("BitmapImage");
  178. }
  179. }
  180. /// <summary>
  181. /// 结果图像
  182. /// </summary>
  183. private BitmapImage _DebugImage;
  184. public BitmapImage DebugImage
  185. {
  186. get { return _DebugImage; }
  187. set
  188. {
  189. _DebugImage = value;
  190. OnPropertyChanged("DebugImage");
  191. }
  192. }
  193. /// <summary>
  194. /// 相机运行状态字体颜色
  195. /// </summary>
  196. private SolidColorBrush cameraStaticColor = Brushes.Red;
  197. public SolidColorBrush CameraStaticColor
  198. {
  199. get { return cameraStaticColor; }
  200. set
  201. {
  202. cameraStaticColor = value;
  203. OnPropertyChanged("CameraStaticColor");
  204. }
  205. }
  206. /// <summary>
  207. /// 配方名称
  208. /// </summary>
  209. public string FormulationName
  210. {
  211. get
  212. {
  213. if (MessageBus.NowSettingLoadMainThread != null)
  214. {
  215. return MessageBus.NowSettingLoadMainThread.FormulationName;
  216. }
  217. return "";
  218. }
  219. set
  220. {
  221. if (MessageBus.NowSettingLoadMainThread != null)
  222. {
  223. string oldValue = MessageBus.NowSettingLoadMainThread.FormulationName;
  224. MessageBus.NowSettingLoadMainThread.FormulationName = value;
  225. MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true;
  226. if (oldValue != value)
  227. FaultLog.RecordValueChangeMessage($"FormulationName:{ oldValue }->{value}");
  228. OnPropertyChanged("FormulationName");
  229. }
  230. }
  231. }
  232. /// <summary>
  233. /// 相机曝光时间
  234. /// </summary>
  235. public string ExposureTimeValue
  236. {
  237. get
  238. {
  239. // 从MessageBus获取最新值(保证读取时同步)
  240. if (MessageBus.NowSettingLoadMainThread != null)
  241. {
  242. return MessageBus.NowSettingLoadMainThread.cameraConfig.ExposureTimeValue.ToString();
  243. }
  244. return "";
  245. }
  246. set
  247. {
  248. if (MessageBus.NowSettingLoadMainThread != null && float.TryParse(value, out float newValue))
  249. {
  250. // 同步更新到MessageBus
  251. float oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.ExposureTimeValue;
  252. MessageBus.NowSettingLoadMainThread.cameraConfig.ExposureTimeValue = newValue;
  253. MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true;
  254. MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig();
  255. if (oldValue != newValue)
  256. FaultLog.RecordValueChangeMessage($"Camera{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} ExposureTimeValue:{oldValue}->{newValue}");
  257. OnPropertyChanged("ExposureTimeValue");
  258. }
  259. }
  260. }
  261. /// <summary>
  262. /// 相机行频
  263. /// </summary>
  264. public string AcquistionLineRate
  265. {
  266. get
  267. {
  268. if (MessageBus.NowSettingLoadMainThread != null)
  269. {
  270. return MessageBus.NowSettingLoadMainThread.cameraConfig.AcquistionLineRateValue.ToString();
  271. }
  272. else
  273. {
  274. return "";
  275. }
  276. }
  277. set
  278. {
  279. if (MessageBus.NowSettingLoadMainThread != null)
  280. {
  281. try
  282. {
  283. float oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.AcquistionLineRateValue;
  284. MessageBus.NowSettingLoadMainThread.cameraConfig.AcquistionLineRateValue = int.Parse(value);
  285. MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true;
  286. MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig();
  287. if (oldValue != int.Parse(value))
  288. FaultLog.RecordValueChangeMessage($"Camera{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}AcquistionLineRate:{oldValue}->{value}");
  289. OnPropertyChanged("AcquistionLineRate");
  290. }
  291. catch (Exception)
  292. {
  293. Console.WriteLine("AcquistionLineRate-SetError");
  294. }
  295. }
  296. }
  297. }
  298. /// <summary>
  299. /// 图像宽度
  300. /// </summary>
  301. public string ImageWidth
  302. {
  303. get
  304. {
  305. if (MessageBus.NowSettingLoadMainThread != null)
  306. {
  307. return MessageBus.NowSettingLoadMainThread.cameraConfig.Width.ToString();
  308. }
  309. else
  310. {
  311. return "";
  312. }
  313. }
  314. set
  315. {
  316. if (MessageBus.NowSettingLoadMainThread != null)
  317. {
  318. try
  319. {
  320. int oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.Width;
  321. MessageBus.NowSettingLoadMainThread.cameraConfig.Width = int.Parse(value);
  322. MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true;
  323. MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig();
  324. if (oldValue != int.Parse(value))
  325. FaultLog.RecordValueChangeMessage($"Camera{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}ImageWidth{oldValue}->{value}");
  326. OnPropertyChanged("ImageWidth");
  327. }
  328. catch (Exception)
  329. {
  330. Console.WriteLine("ImageWidth-SetError");
  331. }
  332. }
  333. }
  334. }
  335. /// <summary>
  336. /// 图像宽度
  337. /// </summary>
  338. public string ImageHeight
  339. {
  340. get
  341. {
  342. if (MessageBus.NowSettingLoadMainThread != null)
  343. {
  344. return MessageBus.NowSettingLoadMainThread.cameraConfig.Height.ToString();
  345. }
  346. else
  347. {
  348. return "";
  349. }
  350. }
  351. set
  352. {
  353. if (MessageBus.NowSettingLoadMainThread != null)
  354. {
  355. try
  356. {
  357. int oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.Height;
  358. MessageBus.NowSettingLoadMainThread.cameraConfig.Height = int.Parse(value);
  359. MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true;
  360. MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig();
  361. if (oldValue != int.Parse(value))
  362. FaultLog.RecordValueChangeMessage($"Camera{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}ImageHeight{oldValue}->{value}");
  363. OnPropertyChanged("ImageHeight");
  364. }
  365. catch (Exception)
  366. {
  367. Console.WriteLine("ImageHeight-SetError");
  368. }
  369. }
  370. }
  371. }
  372. /// <summary>
  373. /// 相机名称(用户自定义)
  374. /// </summary>
  375. public string CamUserName
  376. {
  377. get
  378. {
  379. if (MessageBus.NowSettingLoadMainThread != null)
  380. {
  381. return MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName;
  382. }
  383. else
  384. {
  385. return "";
  386. }
  387. }
  388. set
  389. {
  390. if (MessageBus.NowSettingLoadMainThread != null)
  391. {
  392. try
  393. {
  394. string oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName == "" ? "null" : MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName;
  395. MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName = value;
  396. MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true;
  397. MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig();
  398. if (oldValue != value)
  399. FaultLog.RecordValueChangeMessage($"Camera{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}CamUserName:{oldValue}->{value}");
  400. OnPropertyChanged("CamUserName");
  401. }
  402. catch (Exception)
  403. {
  404. Console.WriteLine("CamUserName-SetError");
  405. }
  406. }
  407. }
  408. }
  409. /// <summary>
  410. /// 图像偏移X
  411. /// </summary>
  412. public string CamOffsetX
  413. {
  414. get
  415. {
  416. if (MessageBus.NowSettingLoadMainThread != null)
  417. {
  418. return MessageBus.NowSettingLoadMainThread.cameraConfig.OffsetX.ToString();
  419. }
  420. else
  421. {
  422. return "";
  423. }
  424. }
  425. set
  426. {
  427. if (MessageBus.NowSettingLoadMainThread != null)
  428. {
  429. try
  430. {
  431. int oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.OffsetX;
  432. MessageBus.NowSettingLoadMainThread.cameraConfig.OffsetX = int.Parse(value);
  433. MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true;
  434. MessageBus.NowSettingLoadMainThread.ReLoadCameraConfig();
  435. if (oldValue != int.Parse(value))
  436. FaultLog.RecordValueChangeMessage($"Camera{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}CamOffsetX:{oldValue}->{value}");
  437. OnPropertyChanged("CamOffsetX");
  438. }
  439. catch (Exception)
  440. {
  441. Console.WriteLine("CamOffsetX-SetError");
  442. }
  443. }
  444. }
  445. }
  446. /// <summary>
  447. /// 相机列表
  448. /// </summary>
  449. public ObservableCollection<CameraCoboxItem> CameraItems { get; } = new ObservableCollection<CameraCoboxItem>();
  450. public ObservableCollection<string> FormulationItems { get; } = new ObservableCollection<string>();
  451. public ObservableCollection<string> BatchItems { get; } = new ObservableCollection<string>();
  452. public ObservableCollection<string> ValueChangeItems { get; } = new ObservableCollection<string>();
  453. public ObservableCollection<string> ErrorMessItems { get; } = new ObservableCollection<string>();
  454. /// <summary>
  455. /// 当前选择的相机SN
  456. /// </summary>
  457. public string CameraSNNum
  458. {
  459. get
  460. {
  461. if (MessageBus.NowSettingLoadMainThread != null)
  462. {
  463. return MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum.ToString();
  464. }
  465. else
  466. {
  467. return "";
  468. }
  469. }
  470. set
  471. {
  472. if (MessageBus.NowSettingLoadMainThread != null)
  473. {
  474. try
  475. {
  476. string oldValue = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum;
  477. MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum = value;
  478. MessageBus.NowSettingLoadMainThread.shuLiConfig.CameraSN = value;
  479. MessageBus.NowSettingLoadMainThread.CameraConfigIsChange = true;
  480. FaultLog.RecordValueChangeMessage($"Camera{MessageBus.NowSettingLoadMainThread.cameraConfig.CamerNo}CameraSNNum:{oldValue}->{value}");
  481. OnPropertyChanged("CameraSNNum");
  482. }
  483. catch (Exception)
  484. {
  485. Console.WriteLine("CameraSNNum-SetError");
  486. }
  487. }
  488. }
  489. }
  490. /// <summary>
  491. /// 预处理阈值
  492. /// </summary>
  493. public string RegionThreshold
  494. {
  495. get
  496. {
  497. if (MessageBus.NowSettingLoadMainThread != null)
  498. {
  499. return MessageBus.NowSettingLoadMainThread.shuLiConfig.RegionThreshold.ToString();
  500. }
  501. else
  502. {
  503. return "";
  504. }
  505. }
  506. set
  507. {
  508. if (MessageBus.NowSettingLoadMainThread != null)
  509. {
  510. try
  511. {
  512. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.RegionThreshold;
  513. MessageBus.NowSettingLoadMainThread.shuLiConfig.RegionThreshold = int.Parse(value);
  514. if (oldValue != int.Parse(value))
  515. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} RegionThreshold:{oldValue}->{value}");
  516. OnPropertyChanged("RegionThreshold");
  517. }
  518. catch (Exception)
  519. {
  520. Console.WriteLine("RegionThreshold-SetError");
  521. }
  522. }
  523. }
  524. }
  525. /// <summary>
  526. /// 数粒通道数
  527. /// </summary>
  528. public string Channel
  529. {
  530. get
  531. {
  532. if (MessageBus.NowSettingLoadMainThread != null)
  533. {
  534. return MessageBus.NowSettingLoadMainThread.shuLiConfig.Channel.ToString();
  535. }
  536. else
  537. {
  538. return "";
  539. }
  540. }
  541. set
  542. {
  543. if (MessageBus.NowSettingLoadMainThread != null)
  544. {
  545. try
  546. {
  547. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.Channel;
  548. MessageBus.NowSettingLoadMainThread.shuLiConfig.Channel = int.Parse(value);
  549. if (oldValue != int.Parse(value))
  550. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} Channel{oldValue}->{value}");
  551. OnPropertyChanged("Channel");
  552. }
  553. catch (Exception)
  554. {
  555. Console.WriteLine("Channel-SetError");
  556. }
  557. }
  558. }
  559. }
  560. /// <summary>
  561. /// 噪声滤波阈值
  562. /// </summary>
  563. public string NoiseFilter
  564. {
  565. get
  566. {
  567. if (MessageBus.NowSettingLoadMainThread != null)
  568. {
  569. return MessageBus.NowSettingLoadMainThread.shuLiConfig.NoiseFilter_Threshold.ToString();
  570. }
  571. else
  572. {
  573. return "";
  574. }
  575. }
  576. set
  577. {
  578. if (MessageBus.NowSettingLoadMainThread != null)
  579. {
  580. try
  581. {
  582. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.NoiseFilter_Threshold;
  583. MessageBus.NowSettingLoadMainThread.shuLiConfig.NoiseFilter_Threshold = int.Parse(value);
  584. if (oldValue != int.Parse(value))
  585. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} NoiseFilter{oldValue}->{value}");
  586. OnPropertyChanged("NoiseFilter");
  587. }
  588. catch (Exception)
  589. {
  590. Console.WriteLine("NoiseFilter-SetError");
  591. }
  592. }
  593. }
  594. }
  595. /// <summary>
  596. /// 合格粒最小宽
  597. /// </summary>
  598. public string MIN_OBJECT_WIDTH
  599. {
  600. get
  601. {
  602. if (MessageBus.NowSettingLoadMainThread != null)
  603. {
  604. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_WIDTH.ToString();
  605. }
  606. else
  607. {
  608. return "";
  609. }
  610. }
  611. set
  612. {
  613. if (MessageBus.NowSettingLoadMainThread != null)
  614. {
  615. try
  616. {
  617. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_WIDTH;
  618. MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_WIDTH = int.Parse(value);
  619. if (oldValue != int.Parse(value))
  620. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} MIN_OBJECT_WIDTH{oldValue}->{value}");
  621. OnPropertyChanged("MIN_OBJECT_WIDTH");
  622. }
  623. catch (Exception)
  624. {
  625. Console.WriteLine("MIN_OBJECT_WIDTH-SetError");
  626. }
  627. }
  628. }
  629. }
  630. /// <summary>
  631. /// 合格粒最大宽
  632. /// </summary>
  633. public string MAX_OBJECT_WIDTH
  634. {
  635. get
  636. {
  637. if (MessageBus.NowSettingLoadMainThread != null)
  638. {
  639. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_WIDTH.ToString();
  640. }
  641. else
  642. {
  643. return "";
  644. }
  645. }
  646. set
  647. {
  648. if (MessageBus.NowSettingLoadMainThread != null)
  649. {
  650. try
  651. {
  652. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_WIDTH;
  653. MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_WIDTH = int.Parse(value);
  654. if (oldValue != int.Parse(value))
  655. FaultLog.RecordValueChangeMessage($"Identify parameters {MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}MAX_OBJECT_WIDTH{oldValue}->{value}");
  656. OnPropertyChanged("MAX_OBJECT_WIDTH");
  657. }
  658. catch (Exception)
  659. {
  660. Console.WriteLine("MAX_OBJECT_WIDTH-SetError");
  661. }
  662. }
  663. }
  664. }
  665. /// <summary>
  666. /// 合格粒最小高
  667. /// </summary>
  668. public string MIN_OBJECT_HEIGHT
  669. {
  670. get
  671. {
  672. if (MessageBus.NowSettingLoadMainThread != null)
  673. {
  674. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_HEIGHT.ToString();
  675. }
  676. else
  677. {
  678. return "";
  679. }
  680. }
  681. set
  682. {
  683. if (MessageBus.NowSettingLoadMainThread != null)
  684. {
  685. try
  686. {
  687. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_HEIGHT;
  688. MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_OBJECT_HEIGHT = int.Parse(value);
  689. if (oldValue != int.Parse(value))
  690. FaultLog.RecordValueChangeMessage($"Identify parameters {MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}MIN_OBJECT_HEIGHT{oldValue}->{value}");
  691. OnPropertyChanged("MIN_OBJECT_HEIGHT");
  692. }
  693. catch (Exception)
  694. {
  695. Console.WriteLine("MIN_OBJECT_HEIGHT-SetError");
  696. }
  697. }
  698. }
  699. }
  700. /// <summary>
  701. /// 合格粒最大高
  702. /// </summary>
  703. public string MAX_OBJECT_HEIGHT
  704. {
  705. get
  706. {
  707. if (MessageBus.NowSettingLoadMainThread != null)
  708. {
  709. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_HEIGHT.ToString();
  710. }
  711. else
  712. {
  713. return "";
  714. }
  715. }
  716. set
  717. {
  718. if (MessageBus.NowSettingLoadMainThread != null)
  719. {
  720. try
  721. {
  722. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_HEIGHT;
  723. MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_OBJECT_HEIGHT = int.Parse(value);
  724. if (oldValue != int.Parse(value))
  725. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum}MAX_OBJECT_HEIGHT{oldValue}->{value}");
  726. OnPropertyChanged("MAX_OBJECT_HEIGHT");
  727. }
  728. catch (Exception)
  729. {
  730. Console.WriteLine("MAX_OBJECT_HEIGHT-SetError");
  731. }
  732. }
  733. }
  734. }
  735. /// <summary>
  736. /// 合格粒最长长度
  737. /// </summary>
  738. public string MAX_OBJECT_LENGTH
  739. {
  740. get
  741. {
  742. if (MessageBus.NowSettingLoadMainThread != null)
  743. {
  744. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_Object_LENGTH.ToString();
  745. }
  746. else
  747. {
  748. return "";
  749. }
  750. }
  751. set
  752. {
  753. if (MessageBus.NowSettingLoadMainThread != null)
  754. {
  755. try
  756. {
  757. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_Object_LENGTH;
  758. MessageBus.NowSettingLoadMainThread.shuLiConfig.MAX_Object_LENGTH = int.Parse(value);
  759. if (oldValue != int.Parse(value))
  760. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} MAX_Object_LENGTH{oldValue}->{value}");
  761. OnPropertyChanged("MAX_Object_LENGTH");
  762. }
  763. catch (Exception)
  764. {
  765. Console.WriteLine("MAX_Object_LENGTH-SetError");
  766. }
  767. }
  768. }
  769. }
  770. /// <summary>
  771. /// 合格粒最短长度
  772. /// </summary>
  773. public string MIN_OBJECT_LENGTH
  774. {
  775. get
  776. {
  777. if (MessageBus.NowSettingLoadMainThread != null)
  778. {
  779. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_Object_LENGTH.ToString();
  780. }
  781. else
  782. {
  783. return "";
  784. }
  785. }
  786. set
  787. {
  788. if (MessageBus.NowSettingLoadMainThread != null)
  789. {
  790. try
  791. {
  792. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_Object_LENGTH;
  793. MessageBus.NowSettingLoadMainThread.shuLiConfig.MIN_Object_LENGTH = int.Parse(value);
  794. if (oldValue != int.Parse(value))
  795. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} MIN_Object_LENGTH{oldValue}->{value}");
  796. OnPropertyChanged("MIN_Object_LENGTH");
  797. }
  798. catch (Exception)
  799. {
  800. Console.WriteLine("MIN_Object_LENGTH-SetError");
  801. }
  802. }
  803. }
  804. }
  805. /// <summary>
  806. /// 合格粒最小面积
  807. /// </summary>
  808. public string MinArea
  809. {
  810. get
  811. {
  812. if (MessageBus.NowSettingLoadMainThread != null)
  813. {
  814. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MinArea.ToString();
  815. }
  816. else
  817. {
  818. return "";
  819. }
  820. }
  821. set
  822. {
  823. if (MessageBus.NowSettingLoadMainThread != null)
  824. {
  825. try
  826. {
  827. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MinArea;
  828. MessageBus.NowSettingLoadMainThread.shuLiConfig.MinArea = int.Parse(value);
  829. if (oldValue != int.Parse(value))
  830. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} MinArea{oldValue}->{value}");
  831. OnPropertyChanged("MinArea");
  832. }
  833. catch (Exception)
  834. {
  835. Console.WriteLine("MinArea-SetError");
  836. }
  837. }
  838. }
  839. }
  840. /// <summary>
  841. /// 合格粒最大面积
  842. /// </summary>
  843. public string MaxArea
  844. {
  845. get
  846. {
  847. if (MessageBus.NowSettingLoadMainThread != null)
  848. {
  849. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MaxArea.ToString();
  850. }
  851. else
  852. {
  853. return "";
  854. }
  855. }
  856. set
  857. {
  858. if (MessageBus.NowSettingLoadMainThread != null)
  859. {
  860. try
  861. {
  862. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.MaxArea;
  863. MessageBus.NowSettingLoadMainThread.shuLiConfig.MaxArea = int.Parse(value);
  864. if (oldValue != int.Parse(value))
  865. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} MaxArea{oldValue}->{value}");
  866. OnPropertyChanged("MaxArea");
  867. }
  868. catch (Exception)
  869. {
  870. Console.WriteLine("MaxArea-SetError");
  871. }
  872. }
  873. }
  874. }
  875. /// <summary>
  876. /// 异常粒识别码
  877. /// </summary>
  878. public string PandingCode
  879. {
  880. get
  881. {
  882. if (MessageBus.NowSettingLoadMainThread != null)
  883. {
  884. return MessageBus.NowSettingLoadMainThread.shuLiConfig.MaxArea.ToString();
  885. }
  886. else
  887. {
  888. return "";
  889. }
  890. }
  891. set
  892. {
  893. if (MessageBus.NowSettingLoadMainThread != null)
  894. {
  895. try
  896. {
  897. int oldValue = MessageBus.NowSettingLoadMainThread.shuLiConfig.PandingCode;
  898. if(oldValue != int.Parse(value))
  899. {
  900. MessageBus.NowSettingLoadMainThread.shuLiConfig.PandingCode = int.Parse(value);
  901. if (oldValue != int.Parse(value))
  902. FaultLog.RecordValueChangeMessage($"Identify parameters{MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum} PandingCode{oldValue}->{value}");
  903. }
  904. OnPropertyChanged("PandingCode");
  905. }
  906. catch (Exception)
  907. {
  908. Console.WriteLine("PandingCode-SetError");
  909. }
  910. }
  911. }
  912. }
  913. /// <summary>
  914. /// 错误信息列表
  915. /// </summary>
  916. private List<ErroeMesDataModelClass> errMessageList = new List<ErroeMesDataModelClass>();
  917. public List<ErroeMesDataModelClass> ErrMessageShowList
  918. {
  919. get { return errMessageList; }
  920. set
  921. {
  922. errMessageList = value;
  923. OnPropertyChanged("ErrMessageShowList");
  924. }
  925. }
  926. private List<AlarmMessModel> alarmMessShowList = new List<AlarmMessModel>();
  927. public List<AlarmMessModel> AlarmMessShowList
  928. {
  929. get { return alarmMessShowList; }
  930. set
  931. {
  932. alarmMessShowList = value;
  933. OnPropertyChanged("AlarmMessShowList");
  934. }
  935. }
  936. /// <summary>
  937. /// 用户数据信息列表
  938. /// </summary>
  939. private List<UserMesDataModelClass> userMesDataModels = new List<UserMesDataModelClass>();
  940. public List<UserMesDataModelClass> UserMesDataModels
  941. {
  942. get { return userMesDataModels; }
  943. set
  944. {
  945. userMesDataModels = value;
  946. OnPropertyChanged("userMesDataModels");
  947. }
  948. }
  949. private string batchNumber = "";
  950. public string BatchNumber
  951. {
  952. get { return batchNumber; }
  953. set
  954. {
  955. batchNumber = value;
  956. OnPropertyChanged("BatchNumber");
  957. }
  958. }
  959. private int bottingCount;
  960. public int BottingCount
  961. {
  962. get { return bottingCount; }
  963. set
  964. {
  965. bottingCount = value;
  966. OnPropertyChanged("BottingCount");
  967. }
  968. }
  969. private ushort bottingSpeed;
  970. public ushort BottingSpeed
  971. {
  972. get { return bottingSpeed; }
  973. set
  974. {
  975. bottingSpeed = value;
  976. OnPropertyChanged("BottingSpeed");
  977. }
  978. }
  979. private string showTimer;
  980. public string ShowTimer
  981. {
  982. get { return showTimer; }
  983. set
  984. {
  985. showTimer = value;
  986. OnPropertyChanged("ShowTimer");
  987. }
  988. }
  989. //数据绑定核心实现
  990. public event PropertyChangedEventHandler PropertyChanged;
  991. protected void OnPropertyChanged(string propertyName)
  992. {
  993. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  994. }
  995. }
  996. }