Background Template.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*using Cognex.VisionPro.ToolBlock;
  2. using Cognex.VisionPro;
  3. using MathNet.Numerics.LinearAlgebra;
  4. using MathNet.Numerics.RootFinding;
  5. using NPOI.SS.Formula.Functions;
  6. using NPOI.Util;
  7. using OpenCvSharp;
  8. using OpenCvSharp.Flann;
  9. using Prism.Events;
  10. using Prism.Ioc;
  11. using Prism.Mvvm;
  12. using Prism.Regions;
  13. using Prism.Services.Dialogs;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Collections.ObjectModel;
  17. using System.IO;
  18. using System.Linq;
  19. using System.Net.Sockets;
  20. using System.Security.Cryptography;
  21. using System.Text;
  22. using System.Threading;
  23. using System.Threading.Tasks;
  24. using System.Windows;
  25. using System.Windows.Documents;
  26. using System.Windows.Interop;
  27. using System.Windows.Media;
  28. using System.Windows.Media.Media3D;
  29. using Team.FFFeederService;
  30. using Team.FFFeederService.Interfaces;
  31. using TeamAAS_VP.Data;
  32. using TeamAAS_VP.Enums;
  33. using TeamAAS_VP.Events;
  34. using TeamAAS_VP.Models;
  35. using TeamAAS_VP.ViewModels.Home;
  36. using TouchSocket.Core;
  37. using TouchSocket.Sockets;
  38. using TeamAAS_VP.Core;
  39. using TeamAAS_VP.Interfaces;
  40. public class UserScript:IBackgroundScripting
  41. {
  42. #region 属性
  43. public IRegionManager regionManager{get;set;}
  44. public IEventAggregator eventAggregator{get;set;}
  45. public IContainerProvider container{get;set;}
  46. public Management management{get;set;}
  47. public ProductModel CurrentProduct { get; set; }
  48. #endregion
  49. public async Task Execute()
  50. {
  51. if(management==null)
  52. return;// Task.CompletedTask;
  53. foreach (var item in management.DeviceConfig.Robots)
  54. {
  55. //绑定接收机器人数据事件
  56. _robotService.GetRobot(item.Id).ReceivedEvent += Robot_ReceivedEvent;
  57. }
  58. //后台服务器接收数据事件绑定
  59. management.BgCommunicate.ReceivedEvent += BgCommunicate_ReceivedEvent;
  60. while(true)
  61. {
  62. await Task.Delay(5000);
  63. }
  64. //return Task.CompletedTask;
  65. }
  66. //机器人接收数据
  67. private async void Robot_ReceivedEvent(Guid robotid, object arg2, TouchSocket.Sockets.ReceivedDataEventArgs e)
  68. {
  69. var robot = await _robotService.GetRobotAsync(robotid);
  70. var r = management.DeviceConfig.Robots.FirstOrDefault(ro => ro.Id == robotid);
  71. string robotname=r.RobotName;
  72. //从服务器收到信息。但是一般byteBlock和requestInfo会根据适配器呈现不同的值。
  73. var buffer = e.ByteBlock.Span.ToString(robot.GetEncoding());
  74. if (robot.ConnectType == TCPConnectType.Client)
  75. {
  76. //await robot.SendAsync($"123"); //发送数据
  77. }
  78. else
  79. {
  80. var cient = (ITcpSessionClient)arg2;
  81. //await robot.SendAsync(cient, $"123"); //发送数据
  82. }
  83. }
  84. //后台TCP接收数据
  85. private async void BgCommunicate_ReceivedEvent(ITcpSessionClient client, string msg)
  86. {
  87. //SendTaskMessage($"服务器[{client.ServicePort}]ReceiveFor客户端[{client.Id}:{client.IP}]:{msg}", MessageLevel.Info);
  88. //await management.BgCommunicate.SendAsync(client, $"123"); //发送数据
  89. }
  90. public void SendTaskMessage(string msg, MessageLevel level)
  91. {
  92. eventAggregator.GetEvent<TaskMessageNotification>().Publish(new TeamAAS_VP.Models.MessageStruct() { Message = msg, level = level });
  93. }
  94. }*/