程序控制
启动任务
启动新任务,等待新任务开始运行后返回新任务的task_id。
串行任务会排队执行,同一时间最多只能运行一个串行任务,需等待前面的任务完成、失败或终止后,才会运行后续任务;
并行任务会立即执行,可以同时运行多个并行任务,环境变量相互独立,类似于多线程执行;
注意
- 当被启动的场景里包含运动相关接口时,务必以串行任务启动(
is_parallel为false) - 在串行任务中,务必以并行任务启动(
is_parallel为true),否则将阻塞住
- 函数名:[Robot]下的方法
start_task - 参数:
- scene: [str] 场景 ID
- params: [list[str]] 传递参数,字符串数组。可选,默认空
- dir: [str] 工作空间名称。可选,默认根目录
- is_parallel: [bool] 是否并列执行。可选,默认串行
- loop_to: [int] 重复执行次数。可选,默认 1 次,0 代表无限次
- 返回: [int] 任务 ID
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "start_task", "params": [{"name": "", "params": [""], "dir": "", "is_parallel": false, "loop_to": 1}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {"id": 1}, "id": 1 }
示例程序
task_id = lebai:start_task("10000", {}, "", false, 1)
task_id = lebai.start_task("10000", [], "", False, 1)
获取全部任务ID
- 函数名:[Robot]下的方法
get_task_list - 参数:无
- 返回: [list[int]] 全部未完成的任务的ID
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "load_task_list", "params": [{}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {"ids": []}, "id": 1 }
示例程序
tasks = lebai:get_task_list()
tasks = lebai.get_task_list()
获取串行任务ID
- 函数名:[Robot]下的方法
get_main_task_id - 参数:无
- 返回: [int] 串行任务的ID。无串行任务时返回
None
示例程序
task = lebai:get_main_task_id()
task = lebai.get_main_task_id()
等待任务完成
阻塞等待任务结束,返回任务状态字符串和所有输出。
- 函数名:[Robot]下的方法
wait_task - 参数:
- id: [int] start_task 返回的 task_id。可选,默认串行任务
- 返回: [str] 任务状态字符串
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "wait_task", "params": [{"id": 1}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {"done": true, "stdout": ""}, "id": 1 }
示例程序
task_id = lebai:start_task("10000", {}, "", false, 1)
stdout = lebai:wait_task(task_id)
task_id = lebai.start_task("10000", [], "", False, 1)
stdout = lebai.wait_task(task_id)
获取任务状态
- 函数名:[Robot]下的方法
get_task_state - 参数:
- id: [int] 任务 ID。可选,默认串行任务
- 返回: [str] 任务状态:"NONE"无任务;"WAIT"排队中;"RUNNING"运行中;"PAUSE"暂停中;"SUCCESS"运行成功;"INTERRUPTING"停止中;"INTERRUPT"已停止;"FAIL"运行失败
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "load_task", "params": [{"id": 1}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {"state": ""}, "id": 1 }
示例程序
task_id = lebai:start_task("10000", {}, "", false, 1)
state = lebai:get_task_state(task_id)
task_id = lebai.start_task("10000", [], "", False, 1)
state = lebai.get_task_state(task_id)
停止任务
停止指定任务。当停止串行任务时,会自动调用stop_move停止运动
- 函数名:[Robot]下的方法
cancel_task - 参数:
- id: [int] 任务 ID。可选,默认串行任务
- 返回:无
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "cancel_task", "params": [{"id": 1}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }
示例程序
lebai:cancel_task(task_id)
lebai.cancel_task(task_id)
暂停任务
暂停指定任务。当暂停串行任务时,会自动调用pause_move暂停运动
- 函数名:[Robot]下的方法
pause_task - 参数:
- id: [int] 任务 ID。可选,默认串行任务
- 返回:无
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "pause_task", "params": [{"id": 1}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }
示例程序
lebai:pause_task(task_id)
lebai.pause_task(task_id)
恢复任务
恢复指定任务。当恢复串行任务时,会自动调用resume_move恢复运动
- 函数名:[Robot]下的方法
resume_task - 参数:
- id: [int] 任务 ID。可选,默认串行任务
- 返回:无
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "resume_task", "params": [{"id": 1}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }
示例程序
lebai:resume_task(task_id)
lebai.resume_task(task_id)
