所有
This commit is contained in:
93
network.py
93
network.py
@@ -1879,6 +1879,7 @@ class NetworkManager:
|
||||
from laser_manager import laser_manager
|
||||
laser_manager.turn_off_laser()
|
||||
laser_manager.stop_calibration()
|
||||
laser_manager.stop_remote_laser_detect()
|
||||
hardware_manager.start_idle_timer() # 开表
|
||||
self.safe_enqueue({"result": "laser_off"}, 2)
|
||||
elif inner_cmd == 4: # 上报电量
|
||||
@@ -1955,6 +1956,81 @@ class NetworkManager:
|
||||
mccid = self.get_4g_mccid()
|
||||
self.logger.info(f"4G MCCID: {mccid}")
|
||||
self.safe_enqueue({"result": "mccid", "mccid": mccid if mccid is not None else ""}, 2)
|
||||
elif inner_cmd == 200: # 远程激光点识别:稳定 3s 后上报 (x,y)
|
||||
from laser_manager import laser_manager
|
||||
# 远程激光识别期间不能停掉心跳/空闲计时,否则会影响数据上报与连接保持
|
||||
# 这里仅启动远程识别,不停止网络侧心跳。
|
||||
try:
|
||||
laser_manager.turn_on_laser()
|
||||
if self.logger:
|
||||
self.logger.info("[LASER] cmd200 已发送开激光指令")
|
||||
except Exception as e:
|
||||
if self.logger:
|
||||
self.logger.warning(
|
||||
f"[LASER] cmd200 开激光异常: {e}"
|
||||
)
|
||||
if not laser_manager.start_remote_laser_detect():
|
||||
self.safe_enqueue(
|
||||
{
|
||||
"cmd": 200,
|
||||
"result": "laser_detect_busy",
|
||||
},
|
||||
2,
|
||||
)
|
||||
else:
|
||||
self.safe_enqueue(
|
||||
{
|
||||
"cmd": 200,
|
||||
"result": "laser_detect_started",
|
||||
},
|
||||
2,
|
||||
)
|
||||
elif inner_cmd == 201: # 设置硬编码激光点并结束远程识别会话
|
||||
from laser_manager import laser_manager
|
||||
laser_manager.stop_remote_laser_detect()
|
||||
inner_data = (
|
||||
data_obj.get("data", {})
|
||||
if isinstance(data_obj.get("data"), dict)
|
||||
else {}
|
||||
)
|
||||
raw_x = data_obj.get("x", inner_data.get("x"))
|
||||
raw_y = data_obj.get("y", inner_data.get("y"))
|
||||
try:
|
||||
ix, iy = laser_manager.set_hardcoded_laser_point(
|
||||
raw_x, raw_y
|
||||
)
|
||||
self.safe_enqueue(
|
||||
{
|
||||
"cmd": 201,
|
||||
"result": "laser_point_set",
|
||||
"x": ix,
|
||||
"y": iy,
|
||||
},
|
||||
2,
|
||||
)
|
||||
self.logger.info(
|
||||
f"[LASER] cmd201 硬编码激光点=({ix}, {iy})"
|
||||
)
|
||||
except Exception as e:
|
||||
self.logger.error(f"[LASER] cmd201 失败: {e}")
|
||||
self.safe_enqueue(
|
||||
{
|
||||
"cmd": 201,
|
||||
"result": "laser_point_set_failed",
|
||||
"reason": str(e),
|
||||
},
|
||||
2,
|
||||
)
|
||||
hardware_manager.start_idle_timer()
|
||||
elif inner_cmd == 46: # 开关射箭原图保存
|
||||
inner_data = data_obj.get("data", {}) if isinstance(data_obj, dict) else {}
|
||||
enabled = True
|
||||
if isinstance(inner_data, dict) and "enable" in inner_data:
|
||||
enabled = bool(inner_data.get("enable"))
|
||||
config.SAVE_RAW_SHOT_IMAGE_ENABLED = enabled
|
||||
self.logger.info(f"[RAW_IMAGE] 射箭原图保存开关: {enabled}")
|
||||
self.safe_enqueue({"result": "raw_image_save", "enabled": enabled}, 2)
|
||||
hardware_manager.start_idle_timer() # 重新计时
|
||||
elif inner_cmd == 41:
|
||||
self.logger.info(f"[TEST] 收到TCP射箭触发命令, {time.time()}")
|
||||
self._manual_trigger_flag = True
|
||||
@@ -2042,7 +2118,7 @@ class NetworkManager:
|
||||
pass
|
||||
break
|
||||
|
||||
# 发送激光校准结果
|
||||
# 发送激光校准结果(cmd=2 等传统校准)
|
||||
if logged_in:
|
||||
from laser_manager import laser_manager
|
||||
result = laser_manager.get_calibration_result()
|
||||
@@ -2050,6 +2126,21 @@ class NetworkManager:
|
||||
x, y = result
|
||||
self.safe_enqueue({"result": "ok", "x": x, "y": y}, 2)
|
||||
|
||||
# 发送远程激光识别结果(cmd=200,会话持续至 cmd=201)
|
||||
if logged_in:
|
||||
from laser_manager import laser_manager
|
||||
rd = laser_manager.get_remote_detect_result()
|
||||
if rd and isinstance(rd, dict) and rd.get("status") == "ok":
|
||||
self.safe_enqueue(
|
||||
{
|
||||
"cmd": 200,
|
||||
"result": "laser_detect_ok",
|
||||
"x": rd.get("x"),
|
||||
"y": rd.get("y"),
|
||||
},
|
||||
2,
|
||||
)
|
||||
|
||||
# 定期发送心跳
|
||||
current_time = time.ticks_ms()
|
||||
if logged_in and current_time - last_heartbeat_send_time > config.HEARTBEAT_INTERVAL * 1000:
|
||||
|
||||
Reference in New Issue
Block a user