Redis.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. using GSG.NET.Extensions;
  2. using GSG.NET.ObjectBase;
  3. using OHV.Common.Shareds;
  4. using StackExchange.Redis;
  5. using System;
  6. using System.Threading;
  7. namespace VehicleControlSystem.ControlLayer.DB
  8. {
  9. public class Redis : SingletonBase<Redis>, IDisposable
  10. {
  11. ConnectionMultiplexer redisMaster = null;
  12. IDatabase database = null;
  13. private Redis()
  14. {
  15. }
  16. public void Dispose()
  17. {
  18. this.redisMaster.Dispose();
  19. }
  20. public void Init()
  21. {
  22. redisMaster = ConnectionMultiplexer.Connect( "127.0.0.1:6379" + ",allowAdmin=true,password=..." );
  23. database = redisMaster.GetDatabase();
  24. }
  25. public bool SetValue(string key, string val) => database.StringSet( key, val );
  26. public string GetValue( string key ) => database.StringGet( key );
  27. //public int GetIntValue( string key ) => cacheClient.Get<int>( key );
  28. #region GetLogData
  29. /// <summary>
  30. /// 0.1% 단위
  31. /// 100% 1.9Nm
  32. /// </summary>
  33. /// <returns></returns>
  34. public double TorqueFront()
  35. {
  36. return LoadFacterFront() * 1.9 / 100;
  37. }
  38. /// <summary>
  39. /// 0.1% 단위
  40. /// </summary>
  41. /// <returns></returns>
  42. public double TorqueRear()
  43. {
  44. return LoadFacterRear() * 1.9 / 100;
  45. }
  46. public double LoadFacterFront()
  47. {
  48. var ret = database.HashGet( "7028", "7" );
  49. return Math.Abs( CastTo<double>.From<RedisValue>( ret ) * 0.1 );
  50. }
  51. public double LoadFacterRear()
  52. {
  53. var ret = database.HashGet( "7028", "7" );
  54. return Math.Abs( CastTo<double>.From<RedisValue>( ret ) * 0.1 );
  55. }
  56. public double ActualVelocityToFrontRPM()
  57. {
  58. var ret = database.HashGet( "7026", "7" );
  59. return CastTo<double>.From<RedisValue>( ret ) * 60 * 10 / ( 2 * Math.PI ) / 0.06;
  60. }
  61. public double ActualVelocityToRearRPM()
  62. {
  63. var ret = database.HashGet( "7026", "8" );
  64. return CastTo<double>.From<RedisValue>( ret ) * 60 * 10 / ( 2 * Math.PI ) / 0.06;
  65. }
  66. public double ActualVelocityToSpeed()
  67. {
  68. var ret = database.HashGet( "4034", "7" );
  69. return CastTo<double>.From<RedisValue>( ret ) * 0.0001; //m/sec
  70. }
  71. public int CurrentBCRValue()
  72. {
  73. var ret = database.HashGet( "7121", "7" );
  74. return CastTo<int>.From<RedisValue>( ret );
  75. }
  76. public bool GetDriveMove()
  77. {
  78. var ret = database.HashGet( "3011", "7" );
  79. if ( ret == 0 )
  80. return false;
  81. else
  82. return true;
  83. }
  84. #endregion
  85. #region Event
  86. /// <summary>
  87. /// Jog 사용 시
  88. /// </summary>
  89. /// <param name="dir">1=Forward, -1=Backward, 0=Stop</param>
  90. /// <returns></returns>
  91. public bool SetManualOPCommand(int dir ) => database.HashSet( "4091", "7", dir.ToString() );
  92. /// <summary>
  93. /// Servo Motor Control
  94. /// </summary>
  95. /// <param name="cmd">1=On, 2=Off, 3=Stop, -1=Fault Reset</param>
  96. /// <returns></returns>
  97. public bool SetServoCommand( int cmd ) => database.HashSet( "4092", "7", cmd.ToString() );
  98. /// <summary>
  99. /// System Operation Change
  100. /// </summary>
  101. /// <param name="op">-1=NoEvent, 0=open, 1=start, 2=goAutoOP, 3=goManualOP, 4=close, 5=finish</param>
  102. /// <returns></returns>
  103. public bool SetSystemOperation( int op ) => database.HashSet( "112", "7", op.ToString() );
  104. public bool RouteMapMoveTo(string point )
  105. {
  106. database.HashSet( "3033", "7", point );
  107. Thread.Sleep( 50 );
  108. return database.HashSet( "3031", "7", 1 );
  109. }
  110. #endregion
  111. /// <summary>
  112. /// Steering 뱡향 요청
  113. /// </summary>
  114. /// <returns>1=Left, -1=Right, 0=현상유지</returns>
  115. public int GetSteering()
  116. {
  117. var ret = database.HashGet( "3050", "7" );
  118. return CastTo<int>.From<RedisValue>(ret);
  119. }
  120. /// <summary>
  121. /// Steering 뱡향 상태 쓰기
  122. /// </summary>
  123. /// <returns>1=Left, -1=Right, 0=Error</returns>
  124. public bool SetActualSteeringPos( eSteeringState state )
  125. {
  126. int sV = 0;
  127. switch ( state )
  128. {
  129. case eSteeringState.None:
  130. sV = 0;
  131. break;
  132. case eSteeringState.Left:
  133. sV = 1;
  134. break;
  135. case eSteeringState.Right:
  136. sV = -1;
  137. break;
  138. default:
  139. break;
  140. }
  141. return database.HashSet( "3060", "7", sV );
  142. }
  143. /// <summary>
  144. /// System State
  145. /// </summary>
  146. /// <returns>0=StartUp, 1=DeviceOpened, 2=DiviceOpenFailed, 3=ManualOP, 4=AutomaticOp, 5=DeviceCloseed, 6=Finished</returns>
  147. public int GetSystemState()
  148. {
  149. var ret = database.HashGet( "111", "7" );
  150. return CastTo<int>.From<RedisValue>(ret);
  151. }
  152. }
  153. }