feat: 增加云台功能控制
This commit is contained in:
67
app.py
67
app.py
@@ -11,7 +11,8 @@ logger = logging.getLogger(__name__)
|
||||
# Flask 应用初始化
|
||||
app = Flask(__name__)
|
||||
app.config['SECRET_KEY'] = 'h2Ms4pw9GzvwiFHyNPhH' # 请更换为安全的密钥
|
||||
socketio = SocketIO(app, cors_allowed_origins="*")
|
||||
# socketio = SocketIO(app, cors_allowed_origins="*")
|
||||
socketio = SocketIO(app)
|
||||
|
||||
# 全局变量存储摇杆数据
|
||||
joystick_data = {}
|
||||
@@ -38,7 +39,7 @@ def handle_joystick_data(data):
|
||||
|
||||
# print(f"force: {force} x: {x}, y: {y}")
|
||||
ptz.set_pitch_speed(int(y * 100))
|
||||
ptz.set_yaw_speed(int(x * 100))
|
||||
ptz.set_yaw_speed(int(x * -100))
|
||||
|
||||
# direction = data.get('direction', '')
|
||||
# logger.info(f"收到摇杆数据:{direction}")
|
||||
@@ -85,27 +86,49 @@ def handle_ping():
|
||||
"""处理心跳检测"""
|
||||
emit('pong')
|
||||
|
||||
@app.route('/get_joystick_data')
|
||||
def get_joystick_data():
|
||||
"""API 端点:获取当前摇杆数据"""
|
||||
from flask import jsonify
|
||||
return jsonify(joystick_data)
|
||||
@socketio.on('gimbal_center')
|
||||
def handle_gimbal_center():
|
||||
"""处理云台中心"""
|
||||
ptz.center()
|
||||
logger.info(f"云台回中")
|
||||
|
||||
@app.route('/control/<action>')
|
||||
def robot_control(action):
|
||||
"""
|
||||
示例控制端点
|
||||
可用于直接控制机器人动作
|
||||
"""
|
||||
from flask import jsonify
|
||||
valid_actions = ['forward', 'backward', 'left', 'right', 'stop']
|
||||
@socketio.on('gimbal_pip')
|
||||
def handle_gimbal_pip(data):
|
||||
"""处理云台PIP"""
|
||||
mode = int(data)
|
||||
if mode >= 0 and mode <= 3:
|
||||
ptz.set_pip_mode(mode)
|
||||
logger.info(f"云台PIP {mode}")
|
||||
|
||||
@socketio.on('gimbal_ir_mode')
|
||||
def handle_gimbal_ir_mode(data):
|
||||
"""处理云台IR"""
|
||||
mode = int(data)
|
||||
if mode >= 0 and mode <= 9:
|
||||
ptz.set_ir_mode(mode)
|
||||
logger.info(f"云台IR {mode}")
|
||||
|
||||
# @app.route('/get_joystick_data')
|
||||
# def get_joystick_data():
|
||||
# """API 端点:获取当前摇杆数据"""
|
||||
# from flask import jsonify
|
||||
# return jsonify(joystick_data)
|
||||
|
||||
# @app.route('/control/<action>')
|
||||
# def robot_control(action):
|
||||
# """
|
||||
# 示例控制端点
|
||||
# 可用于直接控制机器人动作
|
||||
# """
|
||||
# from flask import jsonify
|
||||
# valid_actions = ['forward', 'backward', 'left', 'right', 'stop']
|
||||
|
||||
if action in valid_actions:
|
||||
logger.info(f"执行机器人控制:{action}")
|
||||
# 在这里添加实际的机器人控制逻辑
|
||||
return jsonify({'status': 'success', 'action': action})
|
||||
else:
|
||||
return jsonify({'status': 'error', 'message': '无效的动作'}), 400
|
||||
# if action in valid_actions:
|
||||
# logger.info(f"执行机器人控制:{action}")
|
||||
# # 在这里添加实际的机器人控制逻辑
|
||||
# return jsonify({'status': 'success', 'action': action})
|
||||
# else:
|
||||
# return jsonify({'status': 'error', 'message': '无效的动作'}), 400
|
||||
|
||||
if __name__ == '__main__':
|
||||
socketio.run(app, host='0.0.0.0', port=5000, debug=True)
|
||||
socketio.run(app, host='10.21.31.250', port=5000, debug=True)
|
||||
Reference in New Issue
Block a user