MainWindow.xaml.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645
  1. using CCDCount.DLL;
  2. using CCDCount.DLL.Tools;
  3. using CCDCount.MODEL.CameraClass;
  4. using CCDCount.MODEL.ConfigModel;
  5. using CCDCount.MODEL.SqlDataModel;
  6. using LogClass;
  7. using MvCameraControl;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Diagnostics;
  11. using System.Drawing;
  12. using System.Globalization;
  13. using System.IO;
  14. using System.Linq;
  15. using System.Threading;
  16. using System.Threading.Tasks;
  17. using System.Windows;
  18. using System.Windows.Data;
  19. using System.Windows.Media.Imaging;
  20. using System.Xml.Serialization;
  21. namespace CCDCountWpf
  22. {
  23. /// <summary>
  24. /// MainWindow.xaml 的交互逻辑
  25. /// </summary>
  26. public partial class MainWindow : Window
  27. {
  28. #region 变量与实例
  29. Uri ShowUri = null;
  30. List<SaveConfigModel> Configs = null;
  31. bool IsShow = false;
  32. bool IsPLCShow = false;
  33. SystemMonitor monitor = new SystemMonitor();
  34. #endregion
  35. #region 窗体事件
  36. /// <summary>
  37. /// 主窗体构造函数
  38. /// </summary>
  39. public MainWindow()
  40. {
  41. InitializeComponent();
  42. OnScreenKeyboard.KillTabTipProcess();
  43. DataContext = ShowMessageBus.ShowBinding;
  44. if (File.Exists(".\\Config\\CCDCountConfig.xml"))
  45. {
  46. Configs = XmlStorage.DeserializeFromXml<List<SaveConfigModel>>(".\\Config\\CCDCountConfig.xml");
  47. }
  48. SDKSystem.Initialize();
  49. FaultLog.FaultError += ShowErrorMesPage;
  50. InitCameraIdentify();
  51. StartUpdataShowDataThread();
  52. InitCamComboboxValue();
  53. InitPlcManger();
  54. UpdatePlcPara();
  55. }
  56. private void Window_Loaded(object sender, RoutedEventArgs e)
  57. {
  58. MainPageBtn_Click(null, null);
  59. }
  60. /// <summary>
  61. /// 退出按钮点击事件
  62. /// </summary>
  63. /// <param name="sender"></param>
  64. /// <param name="e"></param>
  65. private void ExitBtn_Click(object sender, RoutedEventArgs e)
  66. {
  67. this.Close();
  68. }
  69. /// <summary>
  70. /// 主界面按钮点击事件
  71. /// </summary>
  72. /// <param name="sender"></param>
  73. /// <param name="e"></param>
  74. private void MainPageBtn_Click(object sender, RoutedEventArgs e)
  75. {
  76. ShowUri = new Uri("WpfPage\\MainPage.xaml", UriKind.Relative);
  77. ShowFrame.Navigate(ShowUri);
  78. }
  79. private void SettingBtn_Click(object sender, RoutedEventArgs e)
  80. {
  81. ShowUri = new Uri("WpfPage\\SettingPage.xaml", UriKind.Relative);
  82. ShowFrame.Navigate(ShowUri);
  83. }
  84. private void ErrorMessageShowBtn_Click(object sender, RoutedEventArgs e)
  85. {
  86. ShowUri = new Uri("WpfPage\\MessagePage.xaml", UriKind.Relative);
  87. ShowFrame.Navigate(ShowUri);
  88. }
  89. private void PlcSettingBtn_Click(object sender, RoutedEventArgs e)
  90. {
  91. if(PlcSettingMessageBus.pLCManagement.IsConnect)
  92. {
  93. ShowUri = new Uri("WpfPage\\PlcSettingPage.xaml", UriKind.Relative);
  94. ShowFrame.Navigate(ShowUri);
  95. }
  96. else
  97. {
  98. var MessageResult = MessageBox.Show("尚未连接PLC,是否重连","重连确认",MessageBoxButton.YesNo);
  99. if(MessageResult == MessageBoxResult.Yes)
  100. {
  101. InitPlcManger();
  102. if (PlcSettingMessageBus.pLCManagement.IsConnect)
  103. {
  104. ShowUri = new Uri("WpfPage\\PlcSettingPage.xaml", UriKind.Relative);
  105. ShowFrame.Navigate(ShowUri);
  106. }
  107. else
  108. {
  109. MessageBox.Show("连接PLC失败,请检查PLC状态");
  110. }
  111. }
  112. }
  113. }
  114. private void HistoryDataBtn_Click(object sender, RoutedEventArgs e)
  115. {
  116. ShowUri = new Uri("WpfPage\\HistoryDataPage.xaml", UriKind.Relative);
  117. ShowFrame.Navigate(ShowUri);
  118. }
  119. private void UserMessageBtn_Click(object sender, RoutedEventArgs e)
  120. {
  121. if (MessageBus.NowLoginUserMessage != null)
  122. {
  123. if (!MessageBus.NowLoginUserMessage.IsAdmin)
  124. {
  125. MessageBox.Show("权限不足");
  126. }
  127. else
  128. {
  129. ShowUri = new Uri("WpfPage\\UserManagementPage.xaml", UriKind.Relative);
  130. ShowFrame.Navigate(ShowUri);
  131. }
  132. }
  133. else
  134. {
  135. MessageBox.Show("请先登录");
  136. }
  137. }
  138. /// <summary>
  139. /// 窗体关闭事件
  140. /// </summary>
  141. /// <param name="sender"></param>
  142. /// <param name="e"></param>
  143. private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  144. {
  145. SaveConfig();
  146. SDKSystem.Finalize();
  147. if (MessageBus.MainThreadS.Count != 0)
  148. {
  149. foreach (var item in MessageBus.MainThreadS)
  150. {
  151. item.DisposeCamera();
  152. }
  153. }
  154. StopUpdataShowDataThread();
  155. FaultLog.FaultError -= ShowErrorMesPage;
  156. Environment.Exit(0);
  157. }
  158. #endregion
  159. #region 私有方法
  160. private void InitCameraIdentify()
  161. {
  162. if (Configs.Count == 0)
  163. {
  164. MessageBox.Show("尚未添加相机,请前往配置页面配置相机");
  165. return;
  166. }
  167. if (MessageBus.MainThreadS.Count != 0)
  168. {
  169. foreach (var item in MessageBus.MainThreadS)
  170. {
  171. item.StopMianThread();
  172. }
  173. }
  174. MessageBus.MainThreadS = new List<MainThreadClass>();
  175. for (int i = 0; i < Configs.Count; i++)
  176. {
  177. MessageBus.MainThreadS.Add(new MainThreadClass(Configs[i].ShuLiConfigClass, Configs[i].CameraConfig));
  178. MessageBus.MainThreadS[i].FormulationName = Configs[i].ConfigName;
  179. MessageBus.MainThreadS[i].IsLoadFormulation = Configs[i].IsFormulation;
  180. MessageBus.MainThreadS[i].ConnectModbus("127.0.0.1");
  181. //MessageBus.MainThreadS[i].ConnectModbus("192.168.1.88");
  182. MessageBus.MainThreadS[i].LoadCamera();
  183. }
  184. }
  185. /// <summary>
  186. /// 启动更新显示数据线程
  187. /// </summary>
  188. private void StartUpdataShowDataThread()
  189. {
  190. IsShow = true;
  191. BitmapImage ThumbnailImage1 = null;
  192. BitmapImage ThumbnailImage2 = null;
  193. BitmapImage ThumbnailImage3 = null;
  194. BitmapImage ThumbnailImage4 = null;
  195. const int targetMsPerFrame = 100; // 20FPS=50ms
  196. Stopwatch renderSW = new Stopwatch();
  197. Task.Run(async () =>
  198. {
  199. while (IsShow)
  200. {
  201. renderSW.Restart();
  202. await Task.Run(() =>
  203. {
  204. UpdataShuLiShowData();
  205. UpdateMonitorMessage();
  206. UpdateFaultLogMessage();
  207. });
  208. await Application.Current.Dispatcher.InvokeAsync(() =>
  209. {
  210. if (MessageBus.MainThreadS.Count == 0)
  211. {
  212. LOG.log(string.Format("{0}:当前未加载识别流程", "IdentifyCameraForm-StartShowImageThread"));
  213. Thread.Sleep(100);
  214. return;
  215. }
  216. if(MessageBus.MainThreadS.Count>=1)
  217. {
  218. MessageBus.MainThreadS[0].GetShowImage(2000, out Bitmap image1);
  219. if (image1 == null)
  220. {
  221. LOG.log(string.Format("{0}:相机一获取图片为空", "IdentifyCameraForm-StartShowImageThread"));
  222. return;
  223. }
  224. ThumbnailImage1 = ConvertToBitmapImage(image1);
  225. }
  226. if (MessageBus.MainThreadS.Count >= 2)
  227. {
  228. MessageBus.MainThreadS[1].GetShowImage(2000, out Bitmap image2);
  229. if (image2 == null)
  230. {
  231. LOG.log(string.Format("{0}:相机二获取图片为空", "IdentifyCameraForm-StartShowImageThread"));
  232. return;
  233. }
  234. ThumbnailImage2 = ConvertToBitmapImage(image2);
  235. }
  236. if (MessageBus.MainThreadS.Count >= 3)
  237. {
  238. MessageBus.MainThreadS[2].GetShowImage(2000, out Bitmap image3);
  239. if (image3 == null)
  240. {
  241. LOG.log(string.Format("{0}:相机三获取图片为空", "IdentifyCameraForm-StartShowImageThread"));
  242. return;
  243. }
  244. ThumbnailImage3 = ConvertToBitmapImage(image3);
  245. }
  246. if (MessageBus.MainThreadS.Count >= 4)
  247. {
  248. MessageBus.MainThreadS[3].GetShowImage(2000, out Bitmap image3);
  249. if (image3 == null)
  250. {
  251. LOG.log(string.Format("{0}:相机四获取图片为空", "IdentifyCameraForm-StartShowImageThread"));
  252. return;
  253. }
  254. ThumbnailImage3 = ConvertToBitmapImage(image3);
  255. }
  256. if (ThumbnailImage1 != null)
  257. {
  258. ShowMessageBus.ShowBinding.ThumbnailImage1 = ThumbnailImage1;
  259. if(MessageBus.NowLoadCameraIndex == 0)
  260. ShowMessageBus.ShowBinding.BitmapImage = ThumbnailImage1;
  261. }
  262. if (ThumbnailImage2 != null)
  263. {
  264. ShowMessageBus.ShowBinding.ThumbnailImage2 = ThumbnailImage2;
  265. if (MessageBus.NowLoadCameraIndex == 1)
  266. ShowMessageBus.ShowBinding.BitmapImage = ThumbnailImage2;
  267. }
  268. if (ThumbnailImage3 != null)
  269. {
  270. ShowMessageBus.ShowBinding.ThumbnailImage3 = ThumbnailImage3;
  271. if (MessageBus.NowLoadCameraIndex == 2)
  272. ShowMessageBus.ShowBinding.BitmapImage = ThumbnailImage3;
  273. }
  274. if (ThumbnailImage4 != null)
  275. {
  276. ShowMessageBus.ShowBinding.ThumbnailImage4 = ThumbnailImage4;
  277. if (MessageBus.NowLoadCameraIndex == 3)
  278. ShowMessageBus.ShowBinding.BitmapImage = ThumbnailImage4;
  279. }
  280. if (MessageBus.NowLoadCameraIndex != -1)
  281. {
  282. if (MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].IsDebug)
  283. {
  284. Bitmap Splicebitmap = MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].GetCamImageOnce();
  285. if (Splicebitmap != null)
  286. {
  287. ShowMessageBus.ShowBinding.DebugImage = ConvertToBitmapImage(Splicebitmap);
  288. }
  289. }
  290. else
  291. {
  292. switch (MessageBus.NowLoadCameraIndex)
  293. {
  294. case 0:
  295. if (ThumbnailImage1 != null)
  296. {
  297. ShowMessageBus.ShowBinding.DebugImage = ThumbnailImage1;
  298. }
  299. break;
  300. case 1:
  301. if (ThumbnailImage2 != null)
  302. {
  303. ShowMessageBus.ShowBinding.DebugImage = ThumbnailImage2;
  304. }
  305. break;
  306. case 2:
  307. if (ThumbnailImage3 != null)
  308. {
  309. ShowMessageBus.ShowBinding.DebugImage = ThumbnailImage3;
  310. }
  311. break;
  312. case 3:
  313. if (ThumbnailImage4 != null)
  314. {
  315. ShowMessageBus.ShowBinding.DebugImage = ThumbnailImage4;
  316. }
  317. break;
  318. }
  319. }
  320. }
  321. });
  322. //进行精准20帧控制
  323. int elapsed = (int)renderSW.ElapsedMilliseconds;
  324. //Console.WriteLine(elapsed);
  325. if (elapsed < targetMsPerFrame)
  326. {
  327. //Console.WriteLine($"主显示线程休眠,休眠时间:{targetMsPerFrame - elapsed}");
  328. Thread.Sleep(targetMsPerFrame - elapsed);
  329. }
  330. //Thread.Sleep(50);
  331. }
  332. });
  333. }
  334. /// <summary>
  335. /// 停止更新显示数据线程
  336. /// </summary>
  337. private void StopUpdataShowDataThread()
  338. {
  339. IsShow = false;
  340. }
  341. /// <summary>
  342. /// 停止PLC数据显示线程
  343. /// </summary>
  344. public void StopPLCUpdateShowDataThread()
  345. {
  346. IsPLCShow = false;
  347. }
  348. /// <summary>
  349. /// 更新数粒显示数据
  350. /// </summary>
  351. private void UpdataShuLiShowData()
  352. {
  353. if (MessageBus.MainThreadS.Count == 0) return;
  354. if(MessageBus.NowLoadCameraIndex == -1) return;
  355. if (MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].ShuLiState)
  356. {
  357. Application.Current.Dispatcher.Invoke(() =>
  358. {
  359. ShowMessageBus.ShowBinding.CameraStaticColor = MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].CameraRunStatic == true
  360. ? System.Windows.Media.Brushes.Green : System.Windows.Media.Brushes.Red;
  361. ShowMessageBus.ShowBinding.CamRunStatic = MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].CameraRunStatic == true
  362. ? "运行中" : "未运行";
  363. });
  364. }
  365. else
  366. {
  367. Application.Current.Dispatcher.Invoke(() =>
  368. {
  369. ShowMessageBus.ShowBinding.CameraStaticColor = System.Windows.Media.Brushes.Yellow;
  370. ShowMessageBus.ShowBinding.CamRunStatic = "视野遮挡";
  371. });
  372. }
  373. ShowMessageBus.ShowBinding.AllActiveNum = MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].HistoryActiveNum.ToString();
  374. ShowMessageBus.ShowBinding.AllOkNum = MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].OkHistoryNum.ToString();
  375. ShowMessageBus.ShowBinding.AllNgNum = MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].NgHistoryNum.ToString();
  376. ShowMessageBus.ShowBinding.ShuLiSpeed = MessageBus.MainThreadS[MessageBus.NowLoadCameraIndex].GetOneSecondActiveNum().ToString();
  377. }
  378. /// <summary>
  379. /// 更新监控信息
  380. /// </summary>
  381. private void UpdateMonitorMessage()
  382. {
  383. ShowMessageBus.ShowBinding.RamMonitor = monitor.GetAvailableMemory() > 1024 ? $"可用内存: {monitor.GetAvailableMemory() / 1024:0.00}GB" : $"可用内存: {monitor.GetAvailableMemory()}MB";
  384. ShowMessageBus.ShowBinding.CPUMonitor = $"CPU: {monitor.GetCpuUsage():0.00}%";
  385. }
  386. /// <summary>
  387. /// 更新故障日志信息
  388. /// </summary>
  389. private void UpdateFaultLogMessage()
  390. {
  391. ShowMessageBus.ShowBinding.ErrMessageShowList = FaultLog.GetAllErrMessage();
  392. }
  393. // Bitmap 转 BitmapImage 的辅助方法
  394. private BitmapImage ConvertToBitmapImage(Bitmap bitmap)
  395. {
  396. using (MemoryStream memory = new MemoryStream())
  397. {
  398. bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Png);
  399. memory.Position = 0;
  400. var bitmapImage = new BitmapImage();
  401. bitmapImage.BeginInit();
  402. bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
  403. bitmapImage.DecodePixelWidth = 1200; // 设置目标分辨率宽度
  404. bitmapImage.DecodePixelHeight = 600; // 保持宽高比
  405. bitmapImage.StreamSource = memory;
  406. bitmapImage.EndInit();
  407. return bitmapImage;
  408. }
  409. }
  410. /// <summary>
  411. /// 初始化相机选择框
  412. /// </summary>
  413. private void InitCamComboboxValue()
  414. {
  415. List<CameraInfoClass> CameraInfoList = new List<CameraInfoClass>();
  416. MessageBus.CameraClass.GetCameraList(out CameraInfoList);
  417. if (CameraInfoList.Count > 0)
  418. {
  419. ShowMessageBus.ShowBinding.CameraItems.Clear();
  420. ShowMessageBus.ShowBinding.CameraItems.Add(new CameraCoboxItem() { Name = "请选择相机", SNValue = "" });
  421. foreach (var item in CameraInfoList)
  422. {
  423. ShowMessageBus.ShowBinding.CameraItems.Add(new CameraCoboxItem()
  424. {
  425. Name = item.DeviceName + "_" + item.DeviceSN,
  426. SNValue = item.DeviceSN
  427. });
  428. }
  429. }
  430. }
  431. /// <summary>
  432. /// FaultLog的报警回调方法
  433. /// </summary>
  434. /// <param name="e"></param>
  435. private void ShowErrorMesPage(ErrorMesDataEventModelClass e)
  436. {
  437. ShowMessageBus.ShowBinding.ShowErrMessage = e.ErrorMesData.Message;
  438. ShowUri = new Uri("WpfPage\\MessagePage.xaml", UriKind.Relative);
  439. try
  440. {
  441. ShowFrame.Navigate(ShowUri);
  442. }
  443. catch (Exception)
  444. {
  445. }
  446. }
  447. /// <summary>
  448. /// 保存配置
  449. /// </summary>
  450. private void SaveConfig()
  451. {
  452. List<SaveConfigModel> SaveConfig = new List<SaveConfigModel>();
  453. if (MessageBus.MainThreadS.Count <= 0)
  454. {
  455. return;
  456. }
  457. foreach (var item in MessageBus.MainThreadS)
  458. {
  459. SaveConfig.Add(new SaveConfigModel()
  460. {
  461. CameraConfig = item.cameraConfig,
  462. ShuLiConfigClass = item.shuLiConfig,
  463. IsFormulation = item.IsLoadFormulation,
  464. ConfigName = item.FormulationName
  465. });
  466. }
  467. if (!Directory.Exists(".\\Config\\")) Directory.CreateDirectory(".\\Config\\");
  468. {
  469. XmlStorage.SerializeToXml(SaveConfig, ".\\Config\\CCDCountConfig.xml");
  470. }
  471. }
  472. /// <summary>
  473. /// 初始化PLC管理(包括PLC的数据信息更新线程)
  474. /// </summary>
  475. public void InitPlcManger()
  476. {
  477. PlcSettingMessageBus.pLCManagement = new PLCManagementClass("127.0.0.1");
  478. if(PlcSettingMessageBus.pLCManagement.IsConnect)
  479. {
  480. IsPLCShow = true;
  481. const int targetMsPerFrame = 100; // 20FPS=50ms
  482. Stopwatch renderSW = new Stopwatch();
  483. Task.Run(async () =>
  484. {
  485. while (IsPLCShow)
  486. {
  487. await Task.Run(() =>
  488. {
  489. UpdatePlcState();
  490. });
  491. await Application.Current.Dispatcher.InvokeAsync(() =>
  492. {
  493. });
  494. //进行精准20帧控制
  495. int elapsed = (int)renderSW.ElapsedMilliseconds;
  496. //Console.WriteLine(elapsed);
  497. if (elapsed < targetMsPerFrame)
  498. {
  499. //Console.WriteLine($"主显示线程休眠,休眠时间:{targetMsPerFrame - elapsed}");
  500. Thread.Sleep(targetMsPerFrame - elapsed);
  501. }
  502. //Thread.Sleep(50);
  503. }
  504. });
  505. }
  506. }
  507. private void UpdatePlcState()
  508. {
  509. var plcData = PlcSettingMessageBus.pLCManagement.ReadAllState();
  510. if (plcData == null) return;
  511. PlcSettingMessageBus.PlcMessageShowBindage.EnableCompletion =
  512. plcData.EnableCompletion;
  513. PlcSettingMessageBus.PlcMessageShowBindage.ReturnToZeroCompletion =
  514. plcData.ReturnToZeroCompletion;
  515. PlcSettingMessageBus.PlcMessageShowBindage.StopCompletion =
  516. plcData.StopCompletion;
  517. PlcSettingMessageBus.PlcMessageShowBindage.SpeedRunning =
  518. plcData.SpeedRunning;
  519. PlcSettingMessageBus.PlcMessageShowBindage.ReturnToZero =
  520. plcData.ReturnToZero;
  521. PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpenCompletion =
  522. plcData.TransferValveOpenCompletion;
  523. PlcSettingMessageBus.PlcMessageShowBindage.TransferValveCloseCompletion =
  524. plcData.TransferValveCloseCompletion;
  525. PlcSettingMessageBus.PlcMessageShowBindage.AllowsDataExchange =
  526. plcData.AllowsDataExchange;
  527. PlcSettingMessageBus.PlcMessageShowBindage.Enable =
  528. plcData.Enable;
  529. PlcSettingMessageBus.PlcMessageShowBindage.PauseDataExchange =
  530. plcData.PauseDataExchange;
  531. PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayed =
  532. plcData.CacheCountDelayed;
  533. }
  534. private void UpdatePlcPara()
  535. {
  536. var ParaValue = PlcSettingMessageBus.pLCManagement.ReadAllPara();
  537. if (ParaValue == null) return;
  538. PlcSettingMessageBus.PlcMessageShowBindage.SpeedModeRunningSpeed =
  539. ParaValue.SpeedModeRunningSpeed.ToString();
  540. PlcSettingMessageBus.PlcMessageShowBindage.JogSpeed =
  541. ParaValue.JogSpeed.ToString();
  542. PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet =
  543. ParaValue.BottValueSet;
  544. PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningSpeed =
  545. ParaValue.TransferValveOpeningSpeed.ToString();
  546. PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime =
  547. ParaValue.TransferValveOpeningTime;
  548. PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue =
  549. ParaValue.BottingDecelerationValue;
  550. PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue =
  551. ParaValue.CacheDecelerationValue;
  552. PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming =
  553. ParaValue.CacheCountDelayTiming;
  554. PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue =
  555. ParaValue.CacheShutdownValue;
  556. PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue =
  557. ParaValue.BottingMaterialCylinderVibrationTableHighSpeedValue;
  558. PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue =
  559. ParaValue.BottingFilterVibrationTableHighSpeedValue;
  560. PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue =
  561. ParaValue.BottingCountVibrationTableHighSpeedValue;
  562. PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue =
  563. ParaValue.BottingMaterialCylinderVibrationTableDecelerationSpeedValue;
  564. PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue =
  565. ParaValue.BottingFilterVibrationTableDecelerationSpeedValue;
  566. PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue =
  567. ParaValue.BottingCountVibrationTableDecelerationSpeedValue;
  568. PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue =
  569. ParaValue.CacheMaterialCylinderVibrationTableHighSpeedValue;
  570. PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue =
  571. ParaValue.CacheFilterVibrationTableHighSpeedValue;
  572. PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue =
  573. ParaValue.CacheCountVibrationTableHighSpeedValue;
  574. PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue =
  575. ParaValue.CacheMaterialCylinderVibrationTableDecelerationSpeedValue;
  576. PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue =
  577. ParaValue.CacheMaterialCylinderVibrationTableHighSpeedValue;
  578. PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableDecelerationSpeedValue =
  579. ParaValue.CacheCountVibrationTableDecelerationSpeedValue;
  580. PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay =
  581. ParaValue.GateOpeningDelay;
  582. PlcSettingMessageBus.PlcMessageShowBindage.ReturnToZeroOffsetValue =
  583. ParaValue.ReturnToZeroOffsetValue.ToString();
  584. PlcSettingMessageBus.PlcMessageShowBindage.ReturnToZeroOffsetSpeed =
  585. ParaValue.ReturnToZeroOffsetSpeed.ToString();
  586. PlcSettingMessageBus.PlcMessageShowBindage.TransferValveClosingSpeed =
  587. ParaValue.TransferValveClosingSpeed.ToString();
  588. PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpenPosition =
  589. ParaValue.TransferValveOpenPosition.ToString();
  590. PlcSettingMessageBus.PlcMessageShowBindage.TransferValveClosePosition =
  591. ParaValue.TransferValveClosePosition.ToString();
  592. PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay =
  593. ParaValue.AirValveOpeningDelay;
  594. PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue =
  595. ParaValue.BottlingShutdownValue;
  596. PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime =
  597. ParaValue.BottlingShutdownTime;
  598. }
  599. #endregion
  600. private void MenuBtn_Click(object sender, RoutedEventArgs e)
  601. {
  602. HeardPanel.Visibility = HeardPanel.Visibility == Visibility.Visible?Visibility.Hidden:Visibility.Visible;
  603. }
  604. private void KeyBoardBtn_Click(object sender, RoutedEventArgs e)
  605. {
  606. OnScreenKeyboard.Show();
  607. }
  608. }
  609. }