信号量
信号量主要用于进程间或和外部系统进行通信。
系统内置 256 个信号量,下标从 0 开始到 255。每个信号量都可以存储一个 32 位整数类型值,取值范围 -2147483648~2147483647。
系统重新启动后,所有信号量都会被重新置为 0。
设置信号量
- 函数名:[Robot]下的方法
set_signal - 参数:
- index: [int] 信号量下标
- value: [int] 待设置的信号量值
- 返回:无
示例程序
lebai:set_signal(0, 1)
lebai.set_signal(0, 1)
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "set_signal", "params": [{"key": 0, "value": 0}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }
设置多个信号量
从起始下标起批量设置信号量。
- 函数名:[Robot]下的方法
set_signals - 参数:
- index: [int] 信号量起始下标
- values: [list[int]] 待设置的信号量值
- 返回:无
示例程序
lebai:set_signals(1, {1,2,3})
lebai.set_signals(1, [1, 2, 3])
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "set_signals", "params": [{"key": 0, "values": [1, 2, 3]}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }
获取信号量
- 函数名:[Robot]下的方法
get_signal - 参数:
- index: [int] 信号量下标
- 返回:[int] 对应信号量的值
示例程序
value = lebai:get_signal(0)
print(value)
value = lebai.get_signal(0)
print(value)
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "get_signal", "params": [{"key": 0}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {"value": 0}, "id": 1 }
获取多个信号量
从起始下标起连续获取多个信号量。
- 函数名:[Robot]下的方法
get_signals - 参数:
- index: [int] 信号量起始下标
- len: [int] 待获取的信号量数量
- 返回:[list[int]] 连续多个信号量对应的值
示例程序
values = lebai:get_signals(0, 3)
print(values)
values = lebai.get_signals(0, 3)
print(values)
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "get_signals", "params": [{"key": 0, "len": 3}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {"values": [1, 2, 3]}, "id": 1 }
等待信号量满足条件
阻塞等待指定信号量满足条件,满足后立即返回。
函数名:[Robot]下的方法
wait_signal参数:
- index: [int] 信号量下标
- value: [int] 待比较的值
- relation: [Relation] 关系判断操作符,可选,默认
EQ等于
返回:无
relation取值如下:EQ等于NEQ不等于LT小于LTE小于等于GT大于GTE大于等于
示例程序
lebai:wait_signal(0, 1, "EQ")
lebai.wait_signal(0, 1, "EQ")
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "wait_signal", "params": [{"key": 0, "value": 1, "relation": "EQ"}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }
增加信号量数值
增加指定下标的信号量值。该操作注意增加值范围,有可能产生溢出。
- 函数名:[Robot]下的方法
add_signal - 参数:
- index: [int] 信号量下标
- value: [int] 待增加的信号量值,可为负
- 返回:无
示例程序
value = lebai:get_signal(0)
lebai:add_signal(0, 10)
value = lebai:get_signal(0)
value = lebai.get_signal(0)
lebai.add_signal(0, 10)
value = lebai.get_signal(0)
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "add_signal", "params": [{"key": 0, "value": 0}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }
