CoppeliaSim内部与外部通讯方式
信号(Signals)
sim.setIntegerSignal (Lua)
sim.getIntegerSignal (Lua)
sim.clearIntegerSignal (Lua)
sim.setDoubleSignal (Lua)
sim.getDoubleSignal (Lua)
sim.clearDoubleSignal (Lua)
sim.setStringSignal (Lua)
sim.getStringSignal (Lua)
sim.clearStringSignal (Lua)
sim.getSignalName (Lua)
sim.waitForSignal (Lua)
- 信号可以看作是全局变量。
- 当前支持四种类型的信号:整数,浮点,双精度和字符串型信号。
- 可以定义,重新定义,读取和清除信号。在仿真结束时,将清除由主脚本或任何子脚本创建的所有信号。
-- script 1 writes the data to string signal "mySignalName":
local myData={
1,2,{
"Hello","world",true,{
value1=63,value2="aString"}}}
sim.setStringSignal("mySignalName",sim.packTable(myData))
-- script 2 reads the data from string signal "mySignalName":
local myData=sim.getStringSignal("mySignalName")
if myData then
myData=sim.unpackTable(myData)
end
自定义数据块(Custom data blocks)
sim.readCustomDataBlock (Lua)
sim.readCustomDataBlockTags (Lua)
sim.writeCustomDataBlock (Lua)
sim.packUInt8Table (Lua)
sim.packDoubleTable (Lua)
sim.packFloatTable (Lua)
sim.packInt32Table (Lua)
sim.packUInt32Table (Lua)
sim.packUInt16Table (Lua)
sim.packTable (Lua)
sim.unpackUInt8Table (Lua)
sim.unpackDoubleTable (Lua)
sim.unpackFloatTable (Lua)
sim.unpackInt32Table (Lua)
sim.unpackUInt32Table (Lua)
sim.unpackUInt16Table (Lua)
sim.unpackTable (Lua)
sim.transformBuffer (Lua)
sim.setReferencedHandles (Lua)
sim.getReferencedHandles (Lua)
-
定制数据块是可以存储在对象内部或场景内部的数据。
-
可以用于存储要与模型或场景一起保存的自定义数据,也可以用作通信手段。
-- script 1 writes the data to the scene:
local myData={
1,2,{
"Hello","world",true,{
value1=63,value2="aString"}}}
sim.writeCustomDataBlock(sim.handle_scene,"myTag",sim.packTable(myData))
-- script 2 reads the data from the scene:
local myData=sim.readCustomDataBlock(sim.handle_scene,"myTag")
if myData then
myData=sim.unpackTable(