conifg_info.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. class ConfigManager:
  2. def __init__(self):
  3. self.CONFIG_METADATA = {}
  4. self.CONFIG_METADATA_BY_ADDR = {}
  5. # 初始化配置项
  6. self._init_config_keys()
  7. def _set_key_float(self, _key, _addr, _tips="", _readonly=False):
  8. self.CONFIG_METADATA[_key] = {
  9. "addr": _addr,
  10. "tips": _tips,
  11. "readonly": _readonly,
  12. "type": "float",
  13. }
  14. if _addr in self.CONFIG_METADATA_BY_ADDR:
  15. print("{} 有重复".format(_addr))
  16. raise Exception("地址重复")
  17. self.CONFIG_METADATA_BY_ADDR[_addr] = _key
  18. def _set_key_int(self, _key, _addr, _tips="", _readonly=False):
  19. self.CONFIG_METADATA[_key] = {
  20. "addr": _addr,
  21. "tips": _tips,
  22. "readonly": _readonly,
  23. "type": "int",
  24. }
  25. if _addr in self.CONFIG_METADATA_BY_ADDR:
  26. print("{} 有重复".format(_addr))
  27. raise Exception("地址重复")
  28. self.CONFIG_METADATA_BY_ADDR[_addr] = _key
  29. def _init_config_keys(self):
  30. # test keys
  31. self.test_key1 = 0.5
  32. self._set_key_float(_key="test_key1", _addr=1)
  33. self.test_key2 = 1
  34. self._set_key_int(_key="test_key2", _addr=2, _tips="测试-2")
  35. # 升降机上次命令位置
  36. self.camera_high_motor_target_value = 0
  37. self._set_key_float(
  38. _key="camera_high_motor_target_value",
  39. _addr=3,
  40. _tips="升降机当前位置",
  41. _readonly=True,
  42. )
  43. # 相机角度上次命令位置
  44. self.camera_steering_target_value = 0
  45. self._set_key_float(
  46. _key="camera_steering_target_value",
  47. _addr=4,
  48. _tips="相机角度上次命令位置",
  49. _readonly=True,
  50. )
  51. # ---------------------50开始处理--------------------
  52. # 升降机当前实时位置
  53. self.camera_high_motor_current_value = 0
  54. self._set_key_float(
  55. _key="camera_high_motor_current_value",
  56. _addr=51,
  57. _tips="升降机当前实时位置",
  58. _readonly=True,
  59. )
  60. # 相机角度当前实时位置
  61. self.camera_steering_current_value = 0
  62. self._set_key_float(
  63. _key="camera_steering_current_value",
  64. _addr=52,
  65. _tips="相机角度当前实时位置",
  66. _readonly=True,
  67. )
  68. # 转盘角度当前实时位置
  69. self.turntable_steering_current_value = 0
  70. self._set_key_float(
  71. _key="turntable_steering_current_value",
  72. _addr=53,
  73. _tips="转盘角度当前实时位置",
  74. _readonly=True,
  75. )
  76. # 转盘前后当前实时位置
  77. self.move_turntable_steering_current_value = 0
  78. self._set_key_float(
  79. _key="move_turntable_steering_current_value",
  80. _addr=54,
  81. _tips="转盘前后当前实时位置",
  82. _readonly=True,
  83. )
  84. # 翻板通讯是否正常
  85. self.over_steering_is_online = 0
  86. self._set_key_int(
  87. _key="over_steering_is_online",
  88. _addr=55,
  89. _tips="翻板是否在线",
  90. _readonly=True,
  91. )
  92. # --------------------------基础设置--------------从ID 100开始
  93. # 自动关机时间;单位秒
  94. self.auto_power_off_diff_time = 7200
  95. self._set_key_int(
  96. _key="auto_power_off_diff_time", _addr=101, _tips="自动关机时间单位秒"
  97. )
  98. # 自动去使能;单位秒 MOTOR_TO_DISABLE
  99. self.auto_motor_disable_diff_time = 180
  100. self._set_key_int(
  101. _key="auto_motor_disable_diff_time", _addr=102, _tips="自动去使能时间单位秒"
  102. )
  103. # 220V继电器是否转换方向
  104. self.relay_220v_is_change_dir = 0
  105. self._set_key_int(
  106. _key="relay_220v_is_change_dir", _addr=103, _tips="220V继电器是否转换方向"
  107. )
  108. # 伺服急停继电器是否转换方向
  109. self.relay_motor_stop_is_change_dir = 0
  110. self._set_key_int(
  111. _key="relay_motor_stop_is_change_dir",
  112. _addr=104,
  113. _tips="伺服急停继电器是否转换方向",
  114. )
  115. # 刹车继电器是否转换方向
  116. self.relay_brake_is_change_dir = 0
  117. self._set_key_int(
  118. _key="relay_brake_is_change_dir", _addr=105, _tips="刹车继电器是否转换方向"
  119. )
  120. # 增加升降的限位高度,单位mm
  121. self.camera_high_motor_max_height = 387
  122. self._set_key_int(
  123. _key="camera_high_motor_max_height", _addr=106, _tips="升降的限位高度"
  124. )
  125. # 是否检查设备是否在线
  126. self.is_check_motor_online = 1
  127. self._set_key_int(
  128. _key="is_check_motor_online", _addr=107, _tips="是否检查设备是否在线"
  129. )
  130. # 是否检查设备是否堵转
  131. self.is_check_motor_blocked = 1
  132. self._set_key_int(
  133. _key="is_check_motor_blocked", _addr=108, _tips="是否检查设备是否堵转"
  134. )
  135. # 是否完成设备自动参数设定
  136. self.has_been_set_motor_config = 0
  137. self._set_key_int(
  138. _key="has_been_set_motor_config",
  139. _addr=109,
  140. _tips="是否完成设备自动参数设定",
  141. )
  142. # 校准角度方向
  143. self.angle_diff_dir = 0
  144. self._set_key_int(_key="angle_diff_dir", _addr=110, _tips="校准角度方向")
  145. # LED的默认亮度
  146. self.led_default_brightness = 60
  147. self._set_key_int(
  148. _key="led_default_brightness", _addr=111, _tips="LED的默认亮度"
  149. )
  150. # 是否自动关闭使能
  151. self.is_auto_motor_to_disable = 1
  152. self._set_key_int(
  153. _key="is_auto_motor_to_disable", _addr=112, _tips="是否自动关闭使能"
  154. )
  155. # 转盘转速比
  156. self.turntable_steering_angle_ratio = 35.6
  157. self._set_key_float(
  158. _key="turntable_steering_angle_ratio", _addr=113, _tips="转盘转速比"
  159. )
  160. # LED灯的数量
  161. self.led_count = 20
  162. self._set_key_int(_key="led_count", _addr=114, _tips="LED灯的数量")
  163. # 转盘前后移动设备的初始化模式 1表示碰撞 0表示限位
  164. self.turntable_move_to_init_mode = 0
  165. self._set_key_int(
  166. _key="turntable_move_to_init_mode",
  167. _addr=115,
  168. _tips="转盘前后移动设备的初始化模式 1表示碰撞 0表示限位",
  169. )
  170. # 是否测试
  171. self.is_test = 0
  172. self._set_key_int(_key="is_test", _addr=116, _tips="is_test")
  173. # 电机停止速度检测
  174. self.low_speed = 300
  175. self._set_key_int(_key="low_speed", _addr=117, _tips="电机停止速度检测")
  176. # 自动发送基础信息
  177. self.is_auto_send_base_info = 0
  178. self._set_key_int(
  179. _key="is_auto_send_base_info", _addr=118, _tips="自动发送基础信息"
  180. )
  181. # 失去使能升降自动归零
  182. self.disable_camera_high_to_zero = 0
  183. self._set_key_int(
  184. _key="disable_camera_high_to_zero", _addr=119, _tips="失去使能升降自动归零"
  185. )
  186. # 前后移动电机初始化后距离
  187. self.front_rear_motor_init_distance = 0
  188. self._set_key_int(
  189. _key="front_rear_motor_init_distance",
  190. _addr=120,
  191. _tips="前后移动电机初始化后距离",
  192. )
  193. # 每秒自动检查电机是否停止
  194. self.auto_check_motor_stop = 0
  195. self._set_key_int(
  196. _key="auto_check_motor_stop", _addr=121, _tips="每秒自动检查电机是否停止"
  197. )
  198. # 前后移动电机是否存在
  199. self.turntable_move_is_exist = 1
  200. self._set_key_int(
  201. _key="turntable_move_is_exist", _addr=122, _tips="前后移动电机是否存在"
  202. )
  203. # -------------------------------------
  204. # 转盘偏移角度 单位1度
  205. self.turntable_steering_deviation = 0
  206. self._set_key_float(
  207. _key="turntable_steering_deviation", _addr=200, _tips="转盘偏移角度"
  208. )
  209. # 相机偏移角度 单位1度
  210. self.camera_steering_deviation = 0
  211. self._set_key_float(
  212. _key="camera_steering_deviation", _addr=201, _tips="相机偏移角度"
  213. )
  214. # 升降偏移距离mm
  215. self.camera_high_motor_deviation = 0
  216. self._set_key_int(
  217. _key="camera_high_motor_deviation", _addr=202, _tips="升降偏移距离mm"
  218. )
  219. # 翻板中位 单位1度
  220. self.overturn_steering_middle = 95
  221. self._set_key_float(
  222. _key="overturn_steering_middle", _addr=203, _tips="翻板中位 单位0.1度"
  223. )
  224. # 翻板高位 单位1度
  225. self.overturn_steering_high = 150
  226. self._set_key_float(
  227. _key="overturn_steering_high", _addr=204, _tips="翻板高位 单位0.1度"
  228. )
  229. # 翻板上升速度
  230. self.overturn_steering_up_speed = 2
  231. self._set_key_int(
  232. _key="overturn_steering_up_speed", _addr=205, _tips="翻板上升速度"
  233. )
  234. # 翻板下降速度
  235. self.overturn_steering_down_speed = 4
  236. self._set_key_int(
  237. _key="overturn_steering_down_speed", _addr=206, _tips="翻板下降速度"
  238. )
  239. # 是否完成初始化
  240. self.has_been_set = 0
  241. self._set_key_int(
  242. _key="has_been_set", _addr=207, _tips="是否完成初始化", _readonly=True
  243. )
  244. # 相机调焦功能支持
  245. self.camera_has_focal = 0
  246. self._set_key_int(_key="camera_has_focal", _addr=208, _tips="相机调焦功能支持")
  247. # 相机最大焦段
  248. self.camera_max_focal = 55
  249. self._set_key_int(_key="camera_max_focal", _addr=209, _tips="相机最大焦段")
  250. # 相机最小焦段
  251. self.camera_min_focal = 15
  252. self._set_key_int(_key="camera_min_focal", _addr=210, _tips="相机最小焦段")
  253. # 相机焦段步进ratio
  254. self.camera_focal_ratio = 0.0
  255. self._set_key_float(
  256. _key="camera_focal_ratio", _addr=211, _tips="相机焦段步进ratio"
  257. )
  258. # 相机焦段步进自动归零
  259. self.camera_zoom_auto_to_zero = 1
  260. self._set_key_float(
  261. _key="camera_zoom_auto_to_zero", _addr=212, _tips="相机焦段步进自动归零"
  262. )
  263. # 相机焦段当前实时位置
  264. self.camera_zoom_motor_current_value = 0
  265. self._set_key_float(
  266. _key="camera_zoom_motor_current_value",
  267. _addr=213,
  268. _tips="相机焦段当前实时位置",
  269. _readonly=True,
  270. )
  271. # =====================================================
  272. # 获取剩余内存
  273. self.get_memory = 0
  274. self._set_key_float(
  275. _key="get_memory", _addr=300, _tips="获取剩余内存", _readonly=True
  276. )
  277. # =====================================================
  278. # ===============调试用======================
  279. # 相机焦段功能设置
  280. self.camera_focal_set = 0
  281. self._set_key_float(
  282. _key="camera_focal_set", _addr=400, _tips="相机焦段功能设置", _readonly=True
  283. )