Lua脚本
Lua标准手册
VG3扩展功能手册
VG3 Lua脚本Demo
VG3 Lua手册索引
Lua脚本公共库
PublicDataFunc
PublicMathFunc
LuaModbus读写应用示例
通过TCP触发流程与写入全局变量
【技术文档】VG3 Lua API 技术文档
【技术文档】LuaGlobalVar — 全局变量操作
【技术文档】ZMotion - 运动控制模块
本站点使用 MrDoc 构建
-
+
PublicDataFunc
```lua local PublicDataFunc={} --说明: 获取结构数据中指定元素的值 --输入 structVal 需要获取的结构体数据 CMvVariant --输入 structMemberName 指定的元素 字符串 --返回值 isSuc 获取是否成功 布尔值 --返回值 val 指定元素的值 function PublicDataFunc:GetValInStruct(structVal,structMemberName) local isSuc=false local val=CMvVariant() local type=structVal:getDataType() --点 x y if(type==cyDType.cyDT_RealPoint)then if(structMemberName=="x")then val=structVal.x isSuc=true elseif(structMemberName=="y")then val=structVal.y isSuc=true end end --姿态 x y angle if(type==cyDType.cyDT_Posture)then if(structMemberName=="x")then val=structVal.x isSuc=true elseif(structMemberName=="y")then val=structVal.y isSuc=true elseif(structMemberName=="angle")then val=structVal.angle isSuc=true end end --直线 xStart yStart xEnd yEnd if(type==cyDType.cyDT_Line)then if(structMemberName=="xStart")then val=structVal.xStart isSuc=true elseif(structMemberName=="yStart")then val=structVal.yStart isSuc=true elseif(structMemberName=="xEnd")then val=structVal.xEnd isSuc=true elseif(structMemberName=="yEnd")then val=structVal.yEnd isSuc=true end end --矩形 left top width height if(type==cyDType.cyDT_Rect)then if(structMemberName=="left")then val=structVal.left isSuc=true elseif(structMemberName=="top")then val=structVal.top isSuc=true elseif(structMemberName=="width")then val=structVal.width isSuc=true elseif(structMemberName=="height")then val=structVal.height isSuc=true end end --斜距形矩形 x y angle width height if(type==cyDType.cyDT_RotatedRect)then if(structMemberName=="x")then val=structVal.x isSuc=true elseif(structMemberName=="y")then val=structVal.y isSuc=true elseif(structMemberName=="angle")then val=structVal.angle isSuc=true elseif(structMemberName=="width")then val=structVal.width isSuc=true elseif(structMemberName=="height")then val=structVal.height isSuc=true end end --圆形 x y radius if(type==cyDType.cyDT_Circle)then if(structMemberName=="x")then val=structVal.x isSuc=true elseif(structMemberName=="y")then val=structVal.y isSuc=true elseif(structMemberName=="radius")then val=structVal.radius isSuc=true end end --范围 if(type==cyDType.cyDT_Range)then if(structMemberName=="min")then val=structVal.min isSuc=true elseif(structMemberName=="max")then val=structVal.max isSuc=true end end return isSuc,val end --说明: 设置结构数据中指定元素的值 --输入 structVal 需要获取的结构体数据 CMvVariant --输入 structMemberName 指定的元素 字符串 --输入 val 需要修改的值 --返回值 isSuc 获取是否成功 布尔值 function PublicDataFunc:SetValInStruct(structVal,structMemberName,val) local isSuc=false local type=structVal:getDataType() --点 x y if(type==cyDType.cyDT_RealPoint)then if(structMemberName=="x")then structVal.x=val isSuc=true elseif(structMemberName=="y")then structVal.y=val isSuc=true end end --姿态 x y angle if(type==cyDType.cyDT_Posture)then if(structMemberName=="x")then structVal.x=val isSuc=true elseif(structMemberName=="y")then structVal.y=val isSuc=true elseif(structMemberName=="angle")then structVal.angle=val isSuc=true end end --直线 xStart yStart xEnd yEnd if(type==cyDType.cyDT_Line)then if(structMemberName=="xStart")then structVal.xStart=val isSuc=true elseif(structMemberName=="yStart")then structVal.yStart=val isSuc=true elseif(structMemberName=="xEnd")then structVal.xEnd=val isSuc=true elseif(structMemberName=="yEnd")then structVal.yEnd=val isSuc=true end end --矩形 left top width height if(type==cyDType.cyDT_Rect)then if(structMemberName=="left")then structVal.left=val isSuc=true elseif(structMemberName=="top")then structVal.top=val isSuc=true elseif(structMemberName=="width")then structVal.width=val isSuc=true elseif(structMemberName=="height")then structVal.height=val isSuc=true end end --斜距形矩形 x y angle width height if(type==cyDType.cyDT_RotatedRect)then if(structMemberName=="x")then structVal.x=val isSuc=true elseif(structMemberName=="y")then structVal.y=val isSuc=true elseif(structMemberName=="angle")then structVal.angle=val isSuc=true elseif(structMemberName=="width")then structVal.width=val isSuc=true elseif(structMemberName=="height")then structVal.height=val isSuc=true end end --圆形 x y radius if(type==cyDType.cyDT_Circle)then if(structMemberName=="x")then structVal.x=val isSuc=true elseif(structMemberName=="y")then structVal.y=val isSuc=true elseif(structMemberName=="radius")then structVal.radius=val isSuc=true end end --范围 if(type==cyDType.cyDT_Range)then if(structMemberName=="min")then structVal.min=val isSuc=true elseif(structMemberName=="max")then structVal.max=val isSuc=true end end return isSuc end --说明: 获取数组数据中指定index的值 --输入 structVal 需要获取的数组数据 CMvVariant --输入 index 指定的index 整数 --返回值 error 获取是否成功 0--成功;-1--不是数组;-2--index越界 --返回值 val 指定元素的值 function PublicDataFunc:GetValInArray(arrayVal,index) local error=0 local val=CMvVariant() if(not arrayVal:isArray())then error=-1 else local len=arrayVal:length() if(index>=0 and index<len)then val=arrayVal:get(index) else error=-2 end end return error,val end --说明: 获取数组数据中指定index的值 --输入 structVal 需要获取的数组数据 CMvVariant --输入 index 指定的index 整数 --返回值 val 需要设置的值 --返回值 error 获取是否成功 0--成功;-1--不是数组;-2--index越界 function PublicDataFunc:SetValInArray(arrayVal,index,val) local error=0 if(not arrayVal:isArray())then error=-1 else local len=arrayVal:length() if(index>=0 and index<len)then arrayVal:set(index,val) else error=-2 end end return error end --说明: 获取结构类型全局变量中指定元素的值 --输入 blockName 全局变量所在块名称 字符串 --输入 varName 全局变量名称 字符串 --输入 structMemberName 指定的元素 字符串 --返回值 isSuc 获取是否成功 0--成功;-1--不存在全局变量;-2--全局变量无效;-3--输入的指定的元素错误 --返回值 val 指定元素的值 function PublicDataFunc:ReadStructGlobalVal(blockName,varName,structMemberName) local error=0 local val=CMvVariant() local isExit=LuaGlobalVar:IsExistGlobal(blockName,varName) if(not isExit)then error=-1 else local isValid=LuaGlobalVar:IsValidGlobal(blockName,varName) if(not isValid)then error=-2 else local globalVal=CMvVariant() LuaGlobalVar:ReadGlobal(blockName,varName,globalVal) local isSuc isSuc,val=self:GetValInStruct(globalVal,structMemberName) if(not isSuc)then error=-3 end end end return error,val end --说明: 设置结构类型全局变量中指定元素的值 --输入 blockName 全局变量所在块名称 字符串 --输入 varName 全局变量名称 字符串 --输入 structMemberName 指定的元素 字符串 --返回值 val 指定元素的值 --返回值 isSuc 获取是否成功 0--成功;-1--不存在全局变量;-2--全局变量无效;-3--输入的指定的元素错误 function PublicDataFunc:WriteStructGlobalVal(blockName,varName,structMemberName,val) local error=0 local isExit=LuaGlobalVar:IsExistGlobal(blockName,varName) if(not isExit)then error=-1 else local isValid=LuaGlobalVar:IsValidGlobal(blockName,varName) if(not isValid)then error=-2 else local globalVal=CMvVariant() LuaGlobalVar:ReadGlobal(blockName,varName,globalVal) local isSuc=self:SetValInStruct(globalVal,structMemberName,val) if(not isSuc==0)then error=-3 else LuaGlobalVar:WriteGlobal(blockName,varName,globalVal) end end end return error end --说明: 获取结构类型全局变量中指定index的值 --输入 blockName 全局变量所在块名称 字符串 --输入 varName 全局变量名称 字符串 --输入 index 指定的index,从0开始 整数 --返回值 isSuc 获取是否成功 0--成功;-1--不存在全局变量;-2--全局变量无效;-3--全局变量不是数组类型;-4--index越界 --返回值 val 指定元素的值 function PublicDataFunc:ReadArrayGlobalVal(blockName,varName,index) local error=0 local val=CMvVariant() local isExit=LuaGlobalVar:IsExistGlobal(blockName,varName) if(not isExit)then error=-1 else local isValid=LuaGlobalVar:IsValidGlobal(blockName,varName) if(not isValid)then error=-2 else local globalVal=CMvVariant() LuaGlobalVar:ReadGlobal(blockName,varName,globalVal) local error error,val=self:GetValInStruct(globalVal,index) if(error==-1)then error=-3 elseif(error==-2)then error=-4 end end end return error,val end --说明: 设置结构类型全局变量中指定元素的值 --输入 blockName 全局变量所在块名称 字符串 --输入 varName 全局变量名称 字符串 --输入 index 指定的index 整数 --返回值 val 指定元素的值 --返回值 isSuc 获取是否成功 0--成功;-1--不存在全局变量;-2--全局变量无效;-3--输入的指定的元素错误 function PublicDataFunc:WriteArrayGlobalVal(blockName,varName,index,val) local error=0 local isExit=LuaGlobalVar:IsExistGlobal(blockName,varName) if(not isExit)then error=-1 else local isValid=LuaGlobalVar:IsValidGlobal(blockName,varName) if(not isValid)then error=-2 else local globalVal=CMvVariant() LuaGlobalVar:ReadGlobal(blockName,varName,globalVal) local isSuc=self:SetValInArray(globalVal,index,val) if(not isSuc==0)then error=-3 else LuaGlobalVar:WriteGlobal(blockName,varName,globalVal) end end end return error end return PublicDataFunc ```
唐红
2025年12月15日 13:37
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码