ZmqManager.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. using GSG.NET.Concurrent;
  2. using GSG.NET.Logging;
  3. using NetMQ.Sockets;
  4. using NetMQ;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using NetMQ.Monitoring;
  11. namespace OHVDriveLogger
  12. {
  13. public class ZmqManager
  14. {
  15. Logger logger = Logger.GetLogger();
  16. SubscriberSocket sub = null;
  17. NetMQPoller poller = null;
  18. private bool isReqConnected;
  19. public bool IsReqConnected
  20. {
  21. get { return isReqConnected; }
  22. set { isReqConnected = value; }
  23. }
  24. private bool isDriveMoving = false;
  25. public bool IsDriveMoving
  26. {
  27. get { return isDriveMoving; }
  28. set { isDriveMoving = value; }
  29. }
  30. private double frontLoadFacter;
  31. public double FrontLoadFacter
  32. {
  33. get { return frontLoadFacter * 0.1; }
  34. set { frontLoadFacter = value; }
  35. }
  36. private double rearLoadFacter;
  37. public double RearLoadFacter
  38. {
  39. get { return rearLoadFacter * 0.1; }
  40. set { rearLoadFacter = value; }
  41. }
  42. private double frontRPM;
  43. public double FrontRPM
  44. {
  45. get { return Math.Truncate( frontRPM * 10 )/10; }
  46. set { frontRPM = value; }
  47. }
  48. private double rearRPM;
  49. public double RearRPM
  50. {
  51. get { return Math.Truncate( rearRPM * 10 ) / 10; }
  52. set { rearRPM = value; }
  53. }
  54. private double batteryCurrent;
  55. public double BatteryCurrent
  56. {
  57. get { return batteryCurrent; }
  58. set { batteryCurrent = value; }
  59. }
  60. private int currentPoint;
  61. public int CurrentPoint
  62. {
  63. get { return currentPoint; }
  64. set { currentPoint = value; }
  65. }
  66. private string currentRailForm;
  67. public string CurrentRailForm
  68. {
  69. get { return currentRailForm; }
  70. set { currentRailForm = value; }
  71. }
  72. private string currentMCR = "0";
  73. public string CurrentMCR
  74. {
  75. get { return currentMCR; }
  76. set { currentMCR = value; }
  77. }
  78. private string isContain;
  79. public string IsContain
  80. {
  81. get { return isContain; }
  82. set { isContain = value; }
  83. }
  84. private string batteryVoltage;
  85. public string BatteryVoltage
  86. {
  87. get { return batteryVoltage; }
  88. set { batteryVoltage = value; }
  89. }
  90. private string batterySOC;
  91. public string BatterySOC
  92. {
  93. get { return batterySOC; }
  94. set { batterySOC = value; }
  95. }
  96. public ZmqManager()
  97. {
  98. NetMQ.NetMQConfig.Cleanup();
  99. }
  100. public void Init()
  101. {
  102. sub = new SubscriberSocket();
  103. sub.Connect( "tcp://127.0.0.1:5565" );
  104. sub.Connect( "tcp://127.0.0.1:5570" );
  105. sub.Subscribe( "" ); //All
  106. sub.ReceiveReady += Sub_ReceiveReady;
  107. this.poller = new NetMQPoller { this.sub };
  108. this.poller.RunAsync();
  109. }
  110. public void Dispose()
  111. {
  112. this.poller.Stop();
  113. this.poller.Dispose();
  114. this.sub.Dispose();
  115. }
  116. private void Sub_ReceiveReady( object sender, NetMQ.NetMQSocketEventArgs e )
  117. {
  118. var ret = e.Socket.ReceiveMultipartStrings();
  119. //logger.I( ret );
  120. try
  121. {
  122. var v = ret[1].Split( '/' );
  123. switch ( ret[0] )
  124. {
  125. case "7028":
  126. this.FrontRPM = Convert.ToDouble( v[0] );
  127. this.RearRPM = Convert.ToDouble( v[1] );
  128. break;
  129. case "7030":
  130. this.FrontLoadFacter = Convert.ToDouble( v[0] );
  131. this.RearLoadFacter = Convert.ToDouble( v[1] );
  132. break;
  133. case "7121":
  134. this.CurrentMCR = v[0];
  135. break;
  136. case "Contain":
  137. this.IsContain = v[0];
  138. break;
  139. case "BatteryCurrent":
  140. this.BatteryCurrent = Convert.ToDouble( v[0] );
  141. break;
  142. case "BatteryVoltage":
  143. this.BatteryVoltage = v[0];
  144. break;
  145. case "BatterySOC":
  146. this.BatterySOC = v[0];
  147. break;
  148. case "DriveStart":
  149. if ( v[0].Equals( "True" ) )
  150. this.IsDriveMoving = true;
  151. else
  152. this.IsDriveMoving = false;
  153. break;
  154. case "CurrentPoint":
  155. CurrentPoint = Convert.ToInt32( v[0] );
  156. break;
  157. case "CurrentRailFrom":
  158. CurrentRailForm = v[0];
  159. break;
  160. default:
  161. break;
  162. }
  163. }
  164. catch ( Exception excpetion )
  165. {
  166. logger.E( excpetion );
  167. }
  168. }
  169. }
  170. }