Program.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using CCDCount.DLL.Inovance;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Diagnostics;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace Incvance
  10. {
  11. internal class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. Stopwatch sw = new Stopwatch();
  16. Stopwatch stopwatch2 = Stopwatch.StartNew();
  17. ushort[] sendMessage = null;
  18. ushort[] WriteDoneValue = new ushort[8];
  19. WriteDoneValue[0] = 1;
  20. List<long> times = new List<long>();
  21. List<long> OutTime = new List<long>();
  22. IncvanceSendMessClass incvanceSendMessClass = new IncvanceSendMessClass();
  23. if (incvanceSendMessClass.OpenEip("192.168.0.10") == 0)
  24. {
  25. if (incvanceSendMessClass.CreateClass3Connect("192.168.0.88") == 0)
  26. {
  27. Console.WriteLine("EIP连接成功", 6);
  28. }
  29. else
  30. {
  31. Console.WriteLine("EIP连接失败");
  32. }
  33. }
  34. else
  35. {
  36. Console.WriteLine("EIP协议栈开启失败");
  37. }
  38. Console.WriteLine("输入循环次数");
  39. int num = Convert.ToInt16(Console.ReadLine());
  40. while(num-->0)
  41. {
  42. sendMessage = new ushort[2];
  43. sw.Restart();
  44. byte[] AllowTransferResult = incvanceSendMessClass.ReadRequest("Application__CCDData__CCDWriteDone", 1);
  45. //bool AllowTransfer = (AllowTransferResult[0] & 1) == 1 ? true : false;
  46. //Console.WriteLine("sendMessage:{0}{1}", AllowTransferResult[0], AllowTransferResult[1]);
  47. //byte[] TransferDoneResult = incvanceSendMessClass.ReadRequest("WriteDone", 1);
  48. if (AllowTransferResult == null)
  49. {
  50. continue;
  51. }
  52. bool AllowTransfer = (AllowTransferResult[0] & 1) == 1 ? true : false;
  53. //bool TransferDone = (TransferDoneResult[0] & 1) == 1 ? true : false;
  54. //Console.WriteLine("AllowTransfer:{0},TransferDone:{1}", AllowTransfer, TransferDone);
  55. if (!AllowTransfer)
  56. {
  57. sendMessage[0] |= (ushort)(1 << num % 8);
  58. byte[] bytes = new byte[4];
  59. for (int i=0;i<sendMessage.Length;i++)
  60. {
  61. bytes[i * 2] = ((byte)(sendMessage[i] & 0xFF)); // 低8位
  62. bytes[i * 2 + 1] = ((byte)(sendMessage[i] >> 8)); // 高8位
  63. }
  64. incvanceSendMessClass.WriteRequest("Application__CCDData__EIP", 1, bytes);
  65. Console.WriteLine("sendMessage:{0}", sendMessage[0]);
  66. byte[] bytes1 = new byte[8];
  67. for(int i=0;i<WriteDoneValue.Length;i++)
  68. {
  69. bytes1[i] = BitConverter.GetBytes(WriteDoneValue[i])[0];
  70. }
  71. incvanceSendMessClass.WriteRequest("Application__CCDData__CCDWriteDone", 1, bytes1);
  72. Console.WriteLine("WriteDoneValue:{0}", WriteDoneValue);
  73. sw.Stop();
  74. Console.WriteLine("WriteTime:{0}", sw.ElapsedMilliseconds);
  75. }
  76. sw.Stop();
  77. times.Add(sw.ElapsedMilliseconds);
  78. if (sw.ElapsedMilliseconds > 5)
  79. {
  80. OutTime.Add(sw.ElapsedMilliseconds);
  81. }
  82. Console.WriteLine($"i:{num},times:{sw.ElapsedMilliseconds}ms");
  83. }
  84. Console.WriteLine($"{stopwatch2.ElapsedMilliseconds}ms");
  85. Console.WriteLine($"平均:{times.Average()}ms");
  86. Console.WriteLine($"最大:{times.Max()}ms");
  87. Console.WriteLine($"超时数量:{OutTime.Count}");
  88. Console.WriteLine($"异常百分比:{((double)OutTime.Count / times.Count) * 100}%");
  89. }
  90. }
  91. }