ControlTransform.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Mead
  5. * Date: 2019/9/3
  6. * Time: 8:05 PM
  7. */
  8. namespace App\Servers\Weikemu\Transforms;
  9. use App\Models\BoxSettingTraitModel;
  10. use App\Models\WarningLogTraitModel;
  11. use App\Servers\BaseServer;
  12. /**
  13. * 控制器报文
  14. * Class LoginServer
  15. * @package App\Servers
  16. */
  17. class ControlTransform extends BaseServer
  18. {
  19. use BoxSettingTraitModel, WarningLogTraitModel;
  20. public function main($body)
  21. {
  22. $data = $this->decode($body);
  23. // self::dd($data);
  24. print_r($data);
  25. return $this->response();
  26. }
  27. /**
  28. * 状态响应
  29. * @param $login_type
  30. * @return array
  31. * User: Mead
  32. */
  33. public function response($login_type = '00')
  34. {
  35. $body = [
  36. '5b',
  37. '0000'
  38. ];
  39. return $body;
  40. }
  41. /**
  42. * 解析装载的状态消息
  43. * @param $body
  44. * @return array
  45. * User: Mead
  46. */
  47. private function decode($body)
  48. {
  49. $top34Data = $this->decodeWeiKeMuTop34($body);
  50. $i = 34;
  51. // 控制器类型
  52. $control_type = self::stitching($body, $i, 1); // i=34
  53. $i += 1;
  54. // 电压 量化单位1mv
  55. $voltage = self::stitching($body, $i, 4); // i=35
  56. $i += 4;
  57. //电流 量化单位1mA
  58. $electric = self::stitching($body, $i, 2); // i=39
  59. $i += 2;
  60. // 500毫秒电机HALL数
  61. $hall = self::stitching($body, $i, 2); // i=41
  62. $i += 2;
  63. // 最高转速的百分比
  64. $percentage_of_maximum_speed = self::stitching($body, $i, 1); // i=43
  65. $i += 1;
  66. // 欠压值,量化单位1mv
  67. $undervoltage_value = self::stitching($body, $i, 2); // i=44
  68. $i += 2;
  69. // 限流,量化单位1mv
  70. $current_limiting = self::stitching($body, $i, 2); // i=46
  71. $i += 2;
  72. // 故障信息
  73. $failure = self::stitching($body, $i, 1); // i=48
  74. return array_merge($top34Data, [
  75. 'control_type' => hexdec($control_type),
  76. 'voltage' => hexdec($voltage),
  77. 'electric' => hexdec($electric),
  78. 'hall' => hexdec($hall),
  79. 'percentage_of_maximum_speed' => hexdec($percentage_of_maximum_speed),
  80. 'undervoltage_value' => hexdec($undervoltage_value),
  81. 'current_limiting' => hexdec($current_limiting),
  82. 'failure' => $this->failure($failure),
  83. ]);
  84. }
  85. private function failure($val)
  86. {
  87. $data = self::handleU1($val);
  88. $res = [
  89. '0' => $data[0],
  90. '1' => $data[1],
  91. '2' => $data[2],
  92. '3' => $data[3],
  93. '4' => $data[4],
  94. 'dianji' => $data[5],
  95. 'zhuanba' => $data[6],
  96. '7' => $data[7],
  97. ];
  98. return $res;
  99. }
  100. }