二维码位置配置
This commit is contained in:
+15
-5
@@ -1130,14 +1130,14 @@ def api_camera_capture():
|
||||
|
||||
@app.route("/api/camera/arm_refresh")
|
||||
def api_arm_camera_refresh():
|
||||
"""从机械臂拉一张 JPEG(流式读第一个完整帧,超时则降级)"""
|
||||
"""从机械臂拉一张 JPEG(流式读第一个完整帧)"""
|
||||
import requests
|
||||
try:
|
||||
r = requests.get(ARM_CAMERA_CONFIG["url"], stream=True, timeout=5)
|
||||
r = requests.get(ARM_CAMERA_CONFIG["url"], stream=True, timeout=8)
|
||||
if r.status_code != 200:
|
||||
return "", 404
|
||||
data = b""
|
||||
for chunk in r.iter_content(chunk_size=4096):
|
||||
for chunk in r.iter_content(chunk_size=8192):
|
||||
data += chunk
|
||||
# 在累积数据中找 JPEG 完整帧
|
||||
s = data.find(b"\xff\xd8")
|
||||
@@ -1145,8 +1145,8 @@ def api_arm_camera_refresh():
|
||||
if s >= 0 and e > s:
|
||||
r.close()
|
||||
return Response(data[s:e+2], mimetype="image/jpeg")
|
||||
# 数据太长还没找到 JPEG 也直接返回(可能是空流)
|
||||
if len(data) > 1024 * 1024:
|
||||
# 累积超过 5MB 还没找到完整帧,说明流异常,放弃
|
||||
if len(data) > 5 * 1024 * 1024:
|
||||
r.close()
|
||||
return "", 404
|
||||
r.close()
|
||||
@@ -1460,6 +1460,16 @@ if __name__ == "__main__":
|
||||
gs.qr_scanner = QRScanner(CAMERA_CONFIG["device_index"])
|
||||
gs.camera_opened = gs.qr_scanner.open()
|
||||
logger.info(f"AGV 摄像头初始化: {'成功' if gs.camera_opened else '失败'}")
|
||||
# 启动时自动检测机械臂摄像头
|
||||
try:
|
||||
import requests as _startup_req
|
||||
r = _startup_req.get(ARM_CAMERA_CONFIG["url"], stream=True, timeout=5)
|
||||
gs.arm_camera_opened = (r.status_code == 200)
|
||||
r.close()
|
||||
logger.info(f"机械臂摄像头检测: {'成功' if gs.arm_camera_opened else '失败'}")
|
||||
except Exception as _e:
|
||||
gs.arm_camera_opened = False
|
||||
logger.warning(f"机械臂摄像头检测失败: {_e}")
|
||||
app.run(
|
||||
host=SERVER_CONFIG["host"],
|
||||
port=SERVER_CONFIG["port"],
|
||||
|
||||
Reference in New Issue
Block a user