@miniknife
2020-03-17T03:48:14.000000Z
字数 40089
阅读 41476
已不进行更新,最新版请查看:http://helpdoc.touchsprite.com/dev_docs/2181/2149.html
开发手册 企业版
Windows 平台按 Ctrl + F 打开快捷搜索
Mac 平台按 command + F 打开快捷搜索
※右侧文本列表可以找到全部手册
函数功能:获取产品类型、用户ID、用户邮箱
| 参数 | 类型 | 说明 |
|---|---|---|
| TSUserType | number | 产品类型 |
| TSUserID | number | 用户 ID |
| TSUserEmail | number | 用户邮箱 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| text | number | 产品类型,1 为云控,2 为中控,nil 为未知连接方式;用户 ID,nil 为未获取到用户 ID;用户邮箱,nil 为未获取到用户邮箱 |
函数用例:
local text = (TSUserType == 1 and "云控" or TSUserType == 2 and "中控" or "未知连接方式").."\r\n"..(TSUserID == nil and "未获取到用户 ID" or "ID : " .. TSUserID).."\r\n"..(TSUserEmail == nil and "未获取到用户邮箱" or "邮箱 : " .. TSUserEmail)dialog(text)
注意事项:
获取的是当前运行脚本所在的企业产品类型、用户 ID、用户邮箱
| 参数 | 类型 | 说明 |
|---|---|---|
| title | string | 提示框标题 |
| text | string | 提示框内容 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")ts_enterprise_lib:messageBox("提示","我是来自脚本的提示!")
| 参数 | 类型 | 说明 |
|---|---|---|
| sec | number | 超时时间,单位为秒,默认为5秒 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")ts_enterprise_lib.timeout = 60 -- 设置超时时间为 60 秒
| 参数 | 类型 | 说明 |
|---|---|---|
| ret | table | ret.build - 中控build号,ret.version - 中控版本号 |
脚本实例:
--取中控版本号和 build 号--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")if ts_enterprise_lib.version then--判断 version 函数是否存在,旧版的中控(build 1080前)没有这个函数local ret = ts_enterprise_lib:version()-- ret :失败 ret=false-- 成功 ret 返回table,ret.build build号,ret.version=版本字符串if ret thentoast("中控版本"..ret.version..',build:'..ret.build)else--toast('获取失败')endend
| 参数 | 类型 | 说明 |
|---|---|---|
| code | string | 注入代码内容 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| msg | string | 操作结果详情,失败返回失败原因 |
脚本实例:
--[[请注意注入代码的安全,不安全的代码会导致中控器崩溃简单的发账号示例script/account.txt内保存账号密码--]]local ok,account = ts_enterprise_lib:controller_injection([[local f = io.open("script/account.txt", "r")if f thenlocal account_tab = {}local account = f:read()while account dotable.insert(account_tab,account)account = f:read()endf:close()if #account_tab > 0 thenlocal f = io.open("script/account.txt", "w")if f thenfor i = 2,#account_tab dof:write(account_tab[i].."\n")endf:close()endreturn account_tab[1]elsereturn falseendendreturn false]])assert(ok,account)if account thennLog("获取账号:"..account)toast("获取账号:"..account)elsenLog("获取账号失败")toast("获取账号失败")endmSleep(1000)
- 更多示例代码可参考这里 → 注入中控器简单的发账号示例
| 参数 | 类型 | 说明 |
|---|---|---|
| x1 | number | 左上角顶点屏幕横坐标 |
| y1 | number | 左上角顶点屏幕纵坐标 |
| x2 | number | 右下角顶点屏幕横坐标 |
| y2 | number | 右下角顶点屏幕纵坐标 |
| text | string | 文字打码内容 |
| timeout | timeout | 超时时间,单位秒,可缺省,默认 60 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 成功返回 true,失败返回 false |
| msg | string | 返回打码结果,超时未处理返回"timeout" |
脚本实例:
-- 中控端打码,发送图片ts_enterprise_lib = require("ts_enterprise_lib")assert( ts_enterprise_lib,"无法引入企业专用库")local x1 = 1 --打码左上角坐标local y1 = 1 --打码左上角坐标local x2 = 200 --打码右下角坐标local y2 = 100 --打码右下角坐标local timeout = 300 --打码超时,单位秒,缺省60,如果中控器超时没有处理,会返回false,"timeout"local ok,msg = ts_enterprise_lib:controller_ocr(x1,y1,x2,y2,timeout)assert(ok,msg)nLog("打码成功!"..msg)toast("打码成功!"..msg)mSleep(1000)
-- 中控端打码,发送字符串ts_enterprise_lib = require("ts_enterprise_lib")assert( ts_enterprise_lib,"无法引入企业专用库")local text = "test!"local timeout = 300 --打码超时,单位秒,缺省60,如果中控器超时没有处理,会返回false,"timeout"local ok,msg = ts_enterprise_lib:controller_txt(text,timeout)assert(ok,msg)nLog("打码成功!"..msg)toast("打码成功!"..msg)mSleep(1000)
| 返回值 | 类型 | 说明 |
|---|---|---|
| ret | boolean | 操作结果,成功返回 true,失败返回 false |
| msg | string | 操作结果详情,失败返回失败原因 |
脚本实例:
--设备重启期间不要关闭中控器ts_enterprise_lib = require("ts_enterprise_lib")local ret,msg = ts_enterprise_lib:reboot_restart()if ret thentoast("设备即将重启")elsetoast("设备重启失败:"..msg)end
| 参数 | 类型 | 说明 |
|---|---|---|
| path | string | 文件路径,可以是相对中控器文件夹的相对路径,也可以是绝对路径 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| data | string | 当 ok 等于 true,返回文件数据,当 ok等于 false,返回错误原因 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--文件名:中控器上的文件名,可以是相对中控器文件夹的相对路径,也可以是绝对路径--如果文件名所在的文件夹不存在,或者没有权限,或者文件名存在非法字符,文件会创建失败local filename = "abc" --这是相对路径local filename = "c:\\abc" --这是 win 绝对路径local filename = "/Users/xxxx/Documents/abc" --这是 mac 绝对路径-- 读取远程文件local ok,data = ts_enterprise_lib:remote_file_load(filename)if ok thentoast("读成功:"..data)elsetoast("读失败:"..data)end-- 返回值 ok:调用是否成功,如果 true,第二个参数返回文件数据,如果 false,第二个返回值返回错误原因
| 参数 | 类型 | 说明 |
|---|---|---|
| filepath | string | 文件路径,可以是相对中控器文件夹的相对路径,也可以是绝对路径 |
| filedata | string | 需要写入的文件数据 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| data | string | 当 ok 等于 true,无返回值;当 ok 等于 false,返回错误原因 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--文件名:中控器上的文件名,可以是相对中控器文件夹的相对路径,也可以是绝对路径--如果文件名所在的文件夹不存在,或者没有权限,或者文件名存在非法字符,文件会创建失败local filename = "abc" --这是相对路径local filename = "c:\\abc" --这是 win 绝对路径local filename = "/Users/xxxx/Documents/abc" --这是 mac 绝对路径--文件数据,支持二进制数据local filedata = [[111122223333]]-- 写入远程文件local ok,msg = ts_enterprise_lib:remote_file_save(filename,filedata)if ok thentoast("写入成功")elsetoast("写入失败:"..msg)end-- 返回值 ok:调用是否成功,如果 true,没有第二个返回值,如果 false,第二个返回值返回错误原因
- 更多脚本示例代码可参考这里 → 封装中控器读写函数
| 参数 | 类型 | 说明 |
|---|---|---|
| local_file | string | 设备的文件路径 |
| remote_file | string | 中控的文件路径,可以是相对中控器文件夹的相对路径,也可以是绝对路径 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| err | string | 当 ok 等于 true,无返回值;当 ok 等 于false,返回错误原因 |
脚本实例:
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")toast("开始测试")--上传文件到中控器local local_file = userPath().."/res/aaa/test2.zip" --本地的文件名(手机上)local remote_file = 'test2.zip' --中控的文件名(相对于中控器的根路径)local ok,err = ts_enterprise_lib:push_file(local_file,remote_file)-- 返回:ok :true or false-- error: 失败原因if ok thentoast("上传成功")elsetoast(err)end--测试速度结果:80M 文件 11 - 18秒--此功能需要配合 1069 以上版本中控器方可使用
| 参数 | 类型 | 说明 |
|---|---|---|
| local_file | string | 设备的文件路径 |
| remote_file | string | 中控的文件路径,可以是相对中控器文件夹的相对路径,也可以是绝对路径 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| err | string | 当 ok 等于 true,无返回值;当 ok 等于 false,返回错误原因 |
脚本实例:
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")toast("开始测试")--从中控器下载文件local local_file = userPath().."/res/aaa/test.zip" --本地的文件名(手机上)local remote_file = 'test.zip' --中控的文件名(相对于中控器的根路径)local ok,err = ts_enterprise_lib:pull_file(local_file,remote_file)-- 返回:ok :true or false-- error: 失败原因if ok thentoast("下载成功")elsetoast(err)returnend--测试速度结果:80M 文件 11 - 18 秒--此功能需要配合 1069 以上版本中控器方可使用
| 参数 | 类型 | 说明 |
|---|---|---|
| action | string | 设置模式, 填写 "set_column" 为设置变量监控列名, 填写 "set_variable" 为上传每列列值 |
| *str | string | 列名或列值 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| msg | string | 当 ok 等于 true,无返回值;当 ok 等于 false,返回错误原因 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--设置变量监控列信息local ok,msg = ts_enterprise_lib:plugin_api_call("VariableMonitor","set_column","序号","随机数","序号+随机数","序号*随机数")toast(ok and "set_column 成功" or "set_column 失败:"..msg)mSleep(1000)math.randomseed(os.time())for i = 1 , 100 dolocal var1 = ilocal var2 = math.random()local var3 = var1+var2local var4 = var1*var2--上传每列数据local ok,msg = ts_enterprise_lib:plugin_api_call("VariableMonitor","set_variable",var1,var2,var3,var4)toast(ok and "set_variable 成功" or "set_variable 失败:"..msg)mSleep(1000)end
当调用企业库 plugin_api_call 方法第一个参数填写"DataCenter"时,可以调用企业版数据中心的相关函数功能,第二个参数为函数名称。
| 参数 | 类型 | 说明 |
|---|---|---|
| category | string | 数据中心分类名 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| ret1 | string/boolean | 当 ok 等 于 true,创建成功;当 ok 等于 false,创建成功 |
| ret2 | string | 当 ret1 等 true,返回成功;当 ret1 等于 false,返回失败原因 |
函数用例:
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local category = "分类"local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","add_category",category)if ok thendialog("创建成功")elsedialog("创建失败 : " .. ret1)end
| 参数 | 类型 | 说明 |
|---|---|---|
| category | string | 数据中心分类名 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| ret1 | string/boolean | 当 ok 等 于 true,返回数据获取状态;当 ok 等于 false,返回错误原因 |
| ret2 | string | 当 ret1 等 于true,返回数据;当 ret1 等于 false,返回失败原因 |
函数用例:
---- Date: 16/8/1-- Time: 下午6:10-- 本例子为设备脚本调用 api 示例-- 本例子所调用的api,在中控根目录 plugin/DataCenter/api.lua 中都有实现源码,可根据自己的实际需要做功能调整--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local category = "测试分类"-- 取数据操作,每 5 秒取一次数据,取 100 次for i = 1 , 100 do-- 使用中控库的插件 api 调用接口-- DataCenter 是插件 id-- get_data 是 api name-- category api 参数,这个 api 是分类名local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","get_data",category)-- 返回 ok 表示插件 api 是否调用成功,ret1,ret2 是 api 的返回值if ok thenif ret1 thennLog("get_data 成功:"..ret2)elsenLog("get_data 失败:"..ret2)endelsenLog("get_data 失败:"..ret1)endmSleep(5000)end
| 参数 | 类型 | 说明 |
|---|---|---|
| category | string | 数据中心分类名 |
| count | number | 获取数据数量 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| ret1 | string/boolean | 当 ok 等于 true,返回数据获取状态;当 ok 等于 false,返回错误原因 |
| ret2 | string/table | 当 ret1 等于 true,返回 table 格式的数据;当 ret1 等于 false,返回失败原因 |
函数用例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local ts = require("ts")--使用扩展库前必须插入这一句local json = ts.json--使用 JSON 模块前必须插入这一句--批量取数据local count = 10 --取数据数量local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","batch_data",category,count)if ok thenif ret1 then--返回一个数组tablenLog("batch_data 成功:"..json.encode(ret2))elsenLog("batch_data 失败:"..ret2)endelsenLog("batch_data 失败:"..ret1)endmSleep(5000)
| 参数 | 类型 | 说明 |
|---|---|---|
| category | string | 数据中心分类名 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| ret1 | string/boolean | 当 ok 等于 true,返回数据获取状态;当 ok 等于 false,返回错误原因 |
| ret2 | string | 当 ret1 等于 true,返回剩余数据数量;当 ret1 等于 false,返回失败原因 |
函数用例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--获取剩余有效数据数量(未使用)local ok,ret1,ret2 =ts_enterprise_lib:plugin_api_call("DataCenter","get_remain_count",category)if ok thenif ret1 thennLog("get_remain_count 成功,剩余有效数据数量为:"..ret2)elsenLog("get_remain_count 失败:"..ret2)endelsenLog("get_remain_count 失败:"..ret1)endmSleep(5000)
| 参数 | 类型 | 说明 |
|---|---|---|
| category | string | 数据中心分类名 |
| data | string | 要插入的数据 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| ret1 | string/boolean | 当 ok 等于 true,返回数据获取状态;当 ok 等于 false,返回错误原因 |
| ret2 | string | 当 ret1 等于 true,无返回;当 ret1 等 于false,返回失败原因 |
函数用例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--添加一个数据local data = "要插入的数据"local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","insert_data",category,data)if ok thenif ret1 thennLog("insert_data 成功")elsenLog("insert_data 失败:"..ret2)endelsenLog("insert_data 失败:"..ret1)endmSleep(5000)
| 参数 | 类型 | 说明 |
|---|---|---|
| category | string | 数据中心分类名 |
| data | string | 要还原的数据 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| ret1 | string/boolean | 当 ok 等于 true,返回数据获取状态;当 ok 等于 false,返回错误原因 |
| ret2 | string | 当 ret1 等于 true,无返回;当 ret1 等于 false,返回失败原因 |
脚本实例:
--注意: 以下函数在中控器 build 1081 及以后的版本才支持--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--归还数据操作local data = "要归还的数据"local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","revert_data",category,data)if ok thenif ret1 thennLog("revert_data 成功:")elsenLog("revert_data 失败:"..ret2)endelsenLog("revert_data 失败:"..ret1)end
| 参数 | 类型 | 说明 |
|---|---|---|
| category | string | 数据中心分类名 |
| data | string | 要删除的数据 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回 true,失败返回 false |
| ret1 | string/boolean | 当 ok 等于 true,返回数据获取状态;当 ok 等于 false,返回错误原因 |
| ret2 | string | 当 ret1 等于 true,无返回;当 ret1 等于 false,返回失败原因 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--删除一个分类下的某个数据local data="13321638994";local ok,ret1,ret2= ts_enterprise_lib:plugin_api_call("DataCenter","delete_data",category,data)if ok thenif ret1 thendialog("删除成功", 5)return trueelsedialog("ret1 失败:"..ret1)endelsedialog("ok 失败:"..ret1)endmSleep(5000)
| 参数 | 类型 | 说明 |
|---|---|---|
| category | string | 数据中心分类名 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| msg | string | 当ok等于true,无返回值;当ok等于false,返回错误原因 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--重置某个分类下的数据local ok,msg = ts_enterprise_lib:clear_dataCenterUser(category)assert(ok)if ok thennLog("重置成功!")toast("重置成功!")elsenLog("重置失败!"..msg)toast("重置失败!"..msg)endmSleep(1000)
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local category = "insert_data"local ts = require("ts")--使用扩展库前必须插入这一句local json = ts.json--使用 JSON 模块前必须插入这一句toast("创建分类名 测试")local category = "分类"local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","add_category",category)if ok thendialog("创建成功")elsedialog("创建失败 : " .. ret1)endtoast("插入数据 测试")mSleep(1000)local data = "要插入的数据"local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","insert_data",category,data..os.date("%H%M%S"))if ok thenif ret1 thendialog("插入数据 insert_data 成功")elsedialog("插入数据 insert_data 失败:"..ret2)endelsedialog("插入数据 insert_data 失败:"..ret1)endtoast("获取数据 测试")mSleep(1000)local ok,ret1,ret3 = ts_enterprise_lib:plugin_api_call("DataCenter","get_data",category)if ok thenif ret1 thendialog("获取数据 get_data 成功:"..ret3)elsedialog("获取数据 get_data 失败:"..ret3)endelsedialog("获取数据 get_data 失败:"..ret1)endtoast("还原数据 测试")mSleep(1000)local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","revert_data",category,ret3)if ok thenif ret1 thendialog("还原数据 revert_data 成功:")elsedialog("还原数据 revert_data 失败:"..ret2)endelsedialog("还原数据 revert_data 失败:"..ret1)endtoast("批量获取数据 测试") mSleep(1000)local count = 2 --取数据数量local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","batch_data",category,count)if ok thenif ret1 thendialog("批量获取数据 batch_data 成功:"..json.encode(ret2))elsedialog("批量获取数据 batch_data 失败:"..ret2)endelsedialog("批量获取数据 batch_data 失败:"..ret1)endtoast("重置数据中心 测试") mSleep(1000)local ok,msg = ts_enterprise_lib:clear_dataCenterUser(category)assert(ok)if ok thendialog("重置数据中心 重置成功!")elsedialog("重置数据中心 重置失败!"..msg)endtoast("剩余有效数据 测试")mSleep(1000)local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","get_remain_count",category)if ok thenif ret1 thendialog("剩余有效数据 get_remain_count 成功,剩余有效数据数量为:"..ret2)elsedialog("剩余有效数据 get_remain_count 失败:"..ret2)endelsedialog("剩余有效数据 get_remain_count 失败:"..ret1)endtoast("删除数据 测试")mSleep(1000)local ok,ret1,ret2= ts_enterprise_lib:plugin_api_call("DataCenter","delete_data",category,ret3)if ok thenif ret1 thendialog("删除数据 删除成功", 5)elsedialog("删除数据 ret1 失败:"..ret1)endelsedialog("删除数据 ok 失败:"..ret1)end
此功能模块为云控用户提供云端文件存储、调用服务
云盘访问地址: http://pan.touchsprite.com/
| 参数 | 类型 | 说明 |
|---|---|---|
| file | string | 需要获取文件的文件夹路径 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ret | table | true/fale和文件列表 |
脚本实例:
local ts = require("ts")local json = ts.jsonts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")dialog(json.encode({ts_enterprise_lib:cloud_file_list("/")}))
| 参数 | 类型 | 说明 |
|---|---|---|
| file | string | 需要创建的文件(夹)路径,创建文件请写明后缀,否则将无法显示后缀 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ret | table | 成功 - true,失败 - false |
脚本实例:
local ts = require("ts")local json = ts.jsonts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--创建 a1 文件夹dialog(json.encode({ts_enterprise_lib:cloud_file_new("/a1/")}))--在 a1 文件夹下创建 1.txt 文件dialog(json.encode({ts_enterprise_lib:cloud_file_new("/a1/1.txt")}))
| 参数 | 类型 | 说明 |
|---|---|---|
| file | string | 需要修改的文件(夹)路径 |
| rename | string | 需要修改的文件(夹)名称 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ret | table | 成功 - true,失败 - false |
脚本实例:
local ts = require("ts")local json = ts.jsonts_enterprise_lib = require("ts_enterprise_lib")--修改 a1 文件夹下 1.txt 文件名称为 2.txtdialog(json.encode({ts_enterprise_lib:cloud_file_rename("/a1/1.txt","2")}))--修改 a1 文件夹下的 1 文件夹名称为 2dialog(json.encode({ts_enterprise_lib:cloud_file_rename("/a1/1/","2")}))
| 参数 | 类型 | 说明 |
|---|---|---|
| file | string | 需要删除文件(夹)的路径 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ret | table | 成功 - true,失败 - false |
脚本实例:
local ts = require("ts")local json = ts.jsonts_enterprise_lib = require("ts_enterprise_lib")--删除 a1 文件夹下的 2 文件夹dialog(json.encode({ts_enterprise_lib:cloud_file_del("/a1/2/")}))--删除 a1 文件夹下的 2.txt 文件dialog(json.encode({ts_enterprise_lib:cloud_file_del("/a1/2.txt")}))
| 参数 | 类型 | 说明 |
|---|---|---|
| cloud_file_name | string | 写入文件路径,需包含完整文件名 |
| file_data | string | 文件内容 |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| err | string | 当ok等于true,无返回值;当ok等于false,返回错误原因 |
脚本实例:
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local cloud_file_name = "/aaa/bbb/脚本2.lua" --云文件名,包含目录的完整文件名local file_data = "123" --文件数据local timeout_seconds = 30; --超时秒数,数据较大时,适当延长local ok,err = ts_enterprise_lib:cloud_file_save(cloud_file_name,file_data,timeout_seconds)if ok thendialog("成功")elsedialog(err)end
| 参数 | 类型 | 说明 |
|---|---|---|
| cloud_file_name | string | 读取文件路径,需包含完整文件名 |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| err | string | 当ok等于true,无返回值;当ok等于false,返回错误原因 |
脚本实例:
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local cloud_file_name = "/aaa/bbb/脚本2.lua" --云文件名,包含目录的完整文件名local timeout_seconds = 30; --超时秒数,数据较大时,适当延长local ok,data = ts_enterprise_lib:cloud_file_load(cloud_file_name,timeout_seconds)if ok thendialog("loal success:"..data)elsedialog("fail:"..data)end
| 参数 | 类型 | 说明 |
|---|---|---|
| local_file | string | 本地文件路径,需包含完整文件名 |
| cloud_file_name | string | 云盘文件路径,需包含完整文件名 |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| err | string | 当ok等于true,无返回值;当ok等于false,返回错误原因 |
脚本实例:
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local local_file = userPath().."/1.lua" --本地文件名local cloud_file_name = "/aaa/bbb/脚本2.lua" --云文件名,包含目录的完整文件名local timeout_seconds = 30; --超时秒数,数据较大时,适当延长local ok,err = ts_enterprise_lib:cloud_file_pull(local_file,cloud_file_name,timeout_seconds)if ok thendialog("成功")elsedialog(err)end
| 参数 | 类型 | 说明 |
|---|---|---|
| local_file | string | 本地文件路径,需包含完整文件名 |
| cloud_file_name | string | 云盘文件路径,需包含完整文件名 |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| err | string | 当ok等于true,无返回值;当ok等于false,返回错误原因 |
脚本实例:
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local local_file = userPath().."/1.lua" --本地文件名local cloud_file_name = "push.lua" --云文件名,包含目录的完整文件名local timeout_seconds = 30; --超时秒数,数据较大时,适当延长local ok,err = ts_enterprise_lib:cloud_file_push(local_file,cloud_file_name,timeout_seconds)if ok thendialog("成功")elsedialog(err)end
- 此功能模块需配合触动精灵企业版使用
此功能模块为云控用户提供云端数据存储、查询等功能
云数据库访问地址: http://cloud-db.touchsprite.com/
云数据库开发教程:http://v.youku.com/v_show/id_XMzE4MTY4MTc1Mg==.html?qq-pf-to=pcqq.c2c
- 用户可在数据库管理平台中对已经有操作权限的表进行导入、添加、修改、删除等操作(导入数据大小限制为5m,仅支持 txt 格式文件导入,文件中数据需以空格进行列分割、以回车进行行分割)
- 用户可在数据库管理平台为已经有操作权限的表添加视图,可针对视图设置权限(公开、私有)
- 开发者可在数据库管理平台建立表结构供脚本用户使用
- 开发者需设置数据库中每条记录的大小(单位:kb)
- 开发者需设置允许访问表的用户列表(关联企业用户账号至该表)
- 添加列名(用于在脚本中访问,必须为英文)
- 添加列显示名(用于在用户视图中展示数据时使用,仅限使用中英文)
| 参数 | 类型 | 说明 |
|---|---|---|
| table_id | string | 云数据库表ID,可在数据库管理平台查看 |
| data | table | 需要插入的数据,格式为键值对,对应列名和数据 |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| err | string | 当 ok 等于 true,返回用户查询的实际结果;当ok等于false,返回错误原因 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--添加数据local table_id = '58b7968986d4e24f4a0cf4e5' --可在数据库管理平台查看local data = {a=1,b=1} --需要写入的数据local timeout_seconds = 30 --超时设置,单位:秒local ok,err = ts_enterprise_lib:cloud_db_add(table_id,data,timeout_seconds)if ok thendialog("成功")elsedialog(err)end
| 参数 | 类型 | 说明 |
|---|---|---|
| table_id | string | 云数据库表ID,可在数据库管理平台查看 |
| where | table | 删除条件,格式为键值对,对应列名和数据 可写多个条件,条件更多写法参考查询数据 |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| err | string | 当 ok 等于 true,返回用户查询的实际结果;当ok等于false,返回错误原因 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--删除数据local table_id = '58b7968986d4e24f4a0cf4e5' --表idlocal where = {a=3} --条件(可多个条件)local timeout_seconds = 30 --超时local ok,err = ts_enterprise_lib:cloud_db_delete(table_id,where,timeout_seconds)if ok thendialog("成功")elsedialog(err)end
| 参数 | 类型 | 说明 |
|---|---|---|
| table_id | string | 云数据库表ID,可在数据库管理平台查看 |
| where | table | 删除条件,格式为键值对,对应列名和数据 可写多个条件,条件更多写法参考查询数据 |
| data | table | 修改数据,格式为键值对,对应列名和数据 |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| err | string | 当 ok 等于 true,返回用户查询的实际结果;当ok等于false,返回错误原因 |
脚本实例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")--修改数据local table_id = '58b7968986d4e24f4a0cf4e5' --表idlocal where = {a=2} --条件local data= {a=5}local timeout_seconds = 30 --超时local ok,err = ts_enterprise_lib:cloud_db_update(table_id,where,data,timeout_seconds)if ok thendialog("成功")elsedialog(err)end
| 参数 | 类型 | 说明 |
|---|---|---|
| table_id | string | 云数据库表ID,可在数据库管理平台查看 |
| where | table | 删除条件,格式为键值对,对应列名和数据 可写多个条件,条件写法参考脚本示例 |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| ret | string/table | 当 ok 等于 true,返回用户查询的实际结果;当ok等于false,返回错误原因 |
脚本实例1:普通查询
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local ts = require("ts")--使用扩展库前必须插入这一句local json = ts.json--使用 JSON 模块前必须插入这一句--查询数据local table_id = '58b7968986d4e24f4a0cf4e5' --表idlocal where = {a=5 } --条件local timeout_seconds = 30 --超时local ok,ret = ts_enterprise_lib:cloud_db_query(table_id,where,timeout_seconds)if ok thendialog("成功:"..ts_enterprise_lib.json.encode(ret))elsedialog(ret)end
脚本实例2:分页查询
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local ts = require("ts")--使用扩展库前必须插入这一句local json = ts.json--使用 JSON 模块前必须插入这一句--分页查询数据local table_id = '58b7968986d4e24f4a0cf4e5' --表idlocal where = {a=5 } --条件local option = {pageSize=1,pageIndex=0} --pageSize分页大小(<1000,default:50),pageIndex分页序号(default:0),local timeout_seconds = 30 --超时local ok,ret = ts_enterprise_lib:cloud_db_query(table_id,where,option,timeout_seconds)if ok thendialog("成功:"..ts_enterprise_lib.json.encode(ret))elsedialog(ret)end
脚本实例3:排序查询
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local ts = require("ts")--使用扩展库前必须插入这一句local json = ts.json--使用 JSON 模块前必须插入这一句--排序查询数据local table_id = '58b7968986d4e24f4a0cf4e5' --表idlocal where = {} --条件local option = {sort={a=-1 -- -1:从大到小、1:从小到大}}local timeout_seconds = 30 --超时local ok,ret = ts_enterprise_lib:cloud_db_query(table_id,where,option,timeout_seconds)if ok thendialog("成功:"..ts_enterprise_lib.json.encode(ret))elsedialog(ret)end
脚本实例4:模糊条件查询
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local ts = require("ts")--使用扩展库前必须插入这一句local json = ts.json--使用 JSON 模块前必须插入这一句--表idlocal table_id = '58a522d7f502b1263083b74b'local where = {a={lt=2},b={lte=1},c={gt=1},d={gte=1},e={ne=1},f={regex = "b", type="first" } }--条件--说明--小于:lt,小于或等于:lte,大于:gt,大于或等于:gte,不等于:ne--模糊: regex="b" type="first" 开头匹配 type="all" 任意匹配local timeout_seconds = 30 --超时local ok,ret = ts_enterprise_lib:cloud_db_query(table_id,where,timeout_seconds)if ok thendialog("成功:"..ts_enterprise_lib.json.encode(ret))elsedialog(ret)end
| 参数 | 类型 | 说明 |
|---|---|---|
| table_id | string | 云数据库表ID,可在数据库管理平台查看 |
| where | table | 获取条件,填写为{used_device=""}即可 |
| data | table | 更新数据,填写为{used_device=getDeviceID()} |
| timeout_seconds | number | 超时时间,单位秒。数据较大时,应适当延长 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | 操作结果,成功返回true,失败返回false |
| ret | string/table | 当ok等于true,返回查询到的数据;当ok等于false,返回错误原因 |
脚本实例
--获取数据--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local ts = require("ts")--使用扩展库前必须插入这一句local json = ts.json--使用 JSON 模块前必须插入这一句--表idlocal table_id = '58a522d7f502b1263083b74b'--表中包括两个字段,data字段为取号的内容,used_device 为使用号的设备,如果为空,表示此号未使用--取号可以通过以下代码完成if ts_enterprise_lib.build and ts_enterprise_lib.build >=100 thenlocal ok,ret = ts_enterprise_lib:cloud_db_query_update(table_id, --table id{used_device=""}, --未使用的号的条件{used_device=getDeviceID()}, --修改used_device为当前设备号,给该记录设置了使用标记60)if ok thenif #ret > 0 thendialog("成功取号:"..ts_enterprise_lib.json.encode(ret))--nLog(ts_enterprise_lib.json.encode(ret))elsedialog("没号了")endelsedialog(ret)endelsedialog('ts_enterprise_lib版本太低')end
启动参数有两种设置方式:
1. 在开发者平台的脚本参数设置内设置
2. 使用script.json文件配置
script.json文件放到脚本文件夹下即可生效
※json需要按照规范编写,不可以添加注释,否则会导致解析错误
※文件编码方式选择UTF-8,其他模式会导致中文乱码
※当两种方式都设置的时候,以json文件配置为准
每个参数需定义 name 以做标识,在脚本中以name字段值为变量名调用即可
调用示例:
每个参数需定义 name 以做标识,在脚本中以 name 字段值为变量名调用即可
调用示例:
json:
{"params": [{"display_name": "选项","default": "1","name": "mode","type": 2}],"name": "lua 脚本测试变量监控"}
lua:
dialog(mode,time)
| 参数 | 类型 | 说明 |
|---|---|---|
| params | - | 脚本参数模板 |
| display_name | 文本型 | 脚本显示名 |
| name | 文本型 | 变量名 |
| default | 文本型 | 该选项缺省值,即默认选项 |
| type | 数字型 | 指定选项类型,1 - 数字;2 - 字符串 |
json示例1:
{"params":[{"display_name": "1游戏模式(1:升级模式,2:打怪模式)","default": "1","name": "mode","type": 2},{"display_name": "登录用户名","default": "test","name": "user","type": 2},{"display_name": "登录密码","default": "123456","name": "password","type": 2}],"name":"lua脚本测试变量监控" --修改脚本名称为 lua脚本测试变量监控}
json示例2:
{"params": [{"display_name": "数字","name": "number","type": 1,"default": "1"},{"display_name": "字符串","name": "string","type": 2,"default": "string"},{"display_name": "单选","name": "radio","type": 3,"options": [{"name": "1","value": 0},{"name": "2","value": 1},{"name": "3","value": 2},{"name": "4","value": 3}],"default": "0"},{"display_name": "多选","name": "checkbox","type": 4,"options": [{"name": "1","value": 0},{"name": "2","value": 1},{"name": "3","value": 2},{"name": "4","value": 3},{"name": "5","value": 4}],"default": "0@1@2"},{"name": "4m7yf7FJVxBPnlqY9ZFKyKLtrYoCduhc","type": 5,"value": "<p>这是文字说明<br></p>","default": "<p>这是文字说明<br></p>"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写switches |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| list | 文本型 | 开关名称,可写多项,用“,”隔开 |
| select | 文本型 | 选中项,可写多项,用“@”隔开,选项编号从0开始 |
json示例:
{"params": [{"id": "kg","type": "switches","list": "开关1,开关2,开关3","select": "0@2"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写RadioGroup |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| list | 文本型 | 开关名称,可写多项,用“,”隔开 |
| select | 文本型 | 选中项,选项编号从0开始 |
json示例:
{"params": [{"id": "dx","type": "RadioGroup","list": "选项1,选项2,选项3","select": "1"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写CheckBoxGroup |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| list | 文本型 | 开关名称,可写多项,用“,”隔开 |
| select | 文本型 | 选中项,选项编号从0开始,可写多项,用“@”隔开 |
json示例:
{"params": [{"id": "ceshi9","type": "CheckBoxGroup","list": "选项1,选项2,选项3,选项4","select": "0@3"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写Label |
| text | 文本型 | 标题 |
| size | 文本型 | 字体大小 |
| align | 文本型 | 对齐方式,center-居中,left-左,right-右 |
| color | 文本型 | 字体颜色,格式:“255,255,255” |
json示例:
{"params": [{"type": "Label","text": "文字标签","size": 18,"align": "center","color": "0,168,233"},{"id": "ceshi9","type": "CheckBoxGroup","list": "选项1,选项2,选项3,选项4","select": "0@3"}]}
- 注意:当json中只有label时无法显示,需要和其他控件一起使用
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写Edit |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| prompt | 文本型 | 提示内容 |
| text | 文本型 | 默认内容 |
| row | 文本型 | 编辑框行数,可缺省,默认为一行 |
| kbtype | 文本型 | 编辑框类型,填写ascii |
json示例:
{"params": [{"id": "input","type": "Edit","prompt": "请输入一个字母","text": "默认值","row": "5","kbtype": "ascii"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写Edit |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| prompt | 文本型 | 提示内容 |
| text | 文本型 | 默认内容 |
| kbtype | 文本型 | 编辑框类型,填写password |
json示例:
{"params": [{"id": "ceshi8","type": "Edit","prompt": "请输入密码","text": "hhkjkjh","kbtype": "password"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写Edit |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| prompt | 文本型 | 提示内容 |
| text | 文本型 | 默认内容 |
| kbtype | 文本型 | 编辑框类型,填写number |
json示例:
{"params": [{"id": "num","type": "Edit","prompt": "请输入一个数字","text": "2","kbtype": "number"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写Edit |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| kbtype | 文本型 | 编辑框类型,填写range |
| max | 文本型 | 最大值 |
| min | 文本型 | 最小值 |
json示例:
{"params": [{"id": "num","type": "Edit","kbtype": "range","max": "100","min": "0"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写ComboBox |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| list | 文本型 | 选择项,多个可选项目之间用英文半角逗号分割 |
| select | 文本型 | 选中项,选项编号从0开始 |
json示例:
{"params": [{"id": "ceshi11","type": "ComboBox","list": "选项1,选项2,选项3,选项4,选项5,选项6,选项7","select": "1"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写ComboBox |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| list | 文本型 | 一级下拉框选择项,多个可选项目之间用英文半角逗号分割 |
| data | 文本型 | 二级下拉框选择项,选择项有几项,需要用#号分割成几项 |
| select | 文本型 | 选中项,选项编号从0开始,一级和二级选项间用#分割 |
json示例:
{"params": [{"id": "ceshi10","type": "ComboBox","list": "选项1,选项2,选项3","select": "2#1","data": "子选项1,子选项2,子选项3,子选项4#子选项5,子选项6,子选项7#子选项8,子选项9","source": "test"}]}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | 文本型 | 控件类型,填写Image |
| id | 文本型 | 控件标识,脚本调用的变量名 |
| scr | 文本型 | 图片地址,填写图片url地址 |
json示例:
{"params": [{"type": "Image","src": "http://www.touchsprite.com/wp-content/uploads/2016/10/banner2_790x230-790x0.png"}]}
{"params": [{"type": "Label","text": "标题1","size": 18,"align": "center","color": "0,168,233"}, {"type": "Image","src": "http://www.touchsprite.com/wp-content/uploads/2016/10/banner2_790x230-790x0.png"}, {"type": "Label","text": "switches控件","size": 16,"align": "left","color": "0,168,233"}, {"id": "kg","type": "switches","list": "开关1,开关2,开关3","select": "0@2"}, {"type": "Label","text": "RadioGroup控件","size": 16,"align": "left","color": "0,168,233"}, {"id": "dx","type": "RadioGroup","list": "选项1,选项2,选项3","select": "1"}, {"type": "Label","text": "Edit控件(普通)","size": 16,"align": "left","color": "0,168,233"}, {"id": "input","type": "Edit","prompt": "请输入一个字母","text": "默认值","kbtype": "ascii"}, {"type": "Label","text": "Edit控件(多行)","size": 16,"align": "left","color": "0,168,233"}, {"id": "shuru","type": "Edit","prompt": "请输入一个字母","text": "默认值","row": "5","kbtype": "ascii"}, {"type": "Label","text": "Edit控件(滑块)","size": 16,"align": "left","color": "0,168,233"}, {"id": "num","type": "Edit","prompt": "请输入一个数字","text": "2","kbtype": "range","max": "100","min": "0"}, {"type": "Label","text": "Edit控件(数字)","size": 16,"align": "left","color": "0,168,233"}, {"id": "num1","type": "Edit","prompt": "请输入一个数字","text": "123456","kbtype": "number"}, {"type": "Label","text": "Edit控件(密码)","size": 16,"align": "left","color": "0,168,233"}, {"id": "ceshi8","type": "Edit","prompt": "请输入密码","text": "hhkjkjh","kbtype": "password"}, {"type": "Label","text": "CheckBoxGroup控件","size": 16,"align": "left","color": "0,168,233"}, {"id": "ceshi9","type": "CheckBoxGroup","list": "选项1,选项2,选项3,选项4","select": "0@3"}, {"type": "Label","text": "ComboBox控件(二级)","size": 16,"align": "left","color": "0,168,233"}, {"id": "ceshi10","type": "ComboBox","list": "选项1,选项2,选项3","select": "2#1","data": "子选项1,子选项2,子选项3,子选项4#子选项5,子选项6,子选项7#子选项8,子选项9","source": "test"}, {"type": "Label","text": "ComboBox控件(一级)","size": 16,"align": "left","color": "0,168,233"}, {"id": "ceshi11","type": "ComboBox","list": "选项1,选项2,选项3,选项4,选项5,选项6,选项7","select": "1"}]}
{"params": {"width":590,"height":550,"titles":"第1页,第2页,第3页","pages": [[{"type": "Label","text": "标题1","size": 18,"align": "center","color": "0,168,233"},{"type": "Image","src": "http://www.touchsprite.com/wp-content/uploads/2016/10/banner2_790x230-790x0.png"},{"type": "Label","text": "switches控件","size": 16,"align": "left","color": "0,168,233"},{"type": "switches","list": "开关1,开关2,开关3","select": "0@2","id":"swk"},{"type": "Label","text": "RadioGroup控件","size": 16,"align": "left","color": "0,168,233"},{"id": "ceshi4","type": "RadioGroup","list": "选项1,选项2,选项3","select": "1"},{"type": "Label","text": "Edit控件(普通)","size": 16,"align": "left","color": "0,168,233"},{"id": "ceshi5","type": "Edit","prompt": "请输入一个字母","text": "默认值","kbtype": "ascii"},{"type": "Label","text": "Edit控件(多行)","size": 16,"align": "left","color": "0,168,233"},{"id": "ceshi6","type": "Edit","prompt": "请输入一个字母","text": "默认值","row": "5","kbtype": "ascii"},{"type": "Label","text": "Edit控件(滑块)","size": 16,"align": "left","color": "0,168,233"},{"type": "Edit","prompt": "请输入一个数字","text": "2","kbtype": "range","max": "100","min": "0","id":"hk"},{"type": "Label","text": "Edit控件(数字)","size": 16,"align": "left","color": "0,168,233"},{"id": "ceshi7","type": "Edit","prompt": "请输入一个数字","text": "123456","kbtype": "number"},{"type": "Label","text": "Edit控件(密码)","size": 16,"align": "left","color": "0,168,233"},{"id": "ceshi8","type": "Edit","prompt": "请输入密码","text": "hhkjkjh","kbtype": "password"},{"type": "Label","text": "CheckBoxGroup控件","size": 16,"align": "left","color": "0,168,233"},{"id": "ceshi9","type": "CheckBoxGroup","list": "选项1,选项2,选项3,选项4","select": "0@3"},{"type": "Label","text": "ComboBox控件(二级)","size": 16,"align": "left","color": "0,168,233"},{"id": "ceshi10","type": "ComboBox","list": "选项1,选项2,选项3","select": "2#1","data": "子选项1,子选项2,子选项3,子选项4#子选项5,子选项6,子选项7#子选项8,子选项9","source": "test"},{"type": "Label","text": "ComboBox控件(一级)","size": 16,"align": "left","color": "0,168,233"},{"id": "ceshi11","type": "ComboBox","list": "选项1,选项2,选项3,选项4,选项5,选项6,选项7","select": "1"}],[{"type": "Label","size": 25,"text": "第二页设置","align": "center","color": "0,0,0"},{"text": "默认值","type": "Edit","kbtype": "ascii","prompt": "请输入一个字母"},{"text": "默认值","type": "Edit","kbtype": "number","prompt": "请输入一个数字"}],[{"type": "Label","size": 25,"text": "第三页设置","align": "center","color": "0,0,0"},{"type": "CheckBoxGroup","list": "选项1,选项2,选项3,选项4,选项5,选项6,选项7","select": "3@5"},{"list": "选项1,选项2,选项3","source": "test","type": "ComboBox","data": "子选项1,子选项2,子选项3,子选项4#子选项5,子选项6,子选项7#子选项8,子选项9","select": "1"},{"dataSource": "test","type": "ComboBox","select": "1"}]]}}
以下功能仅在1200之前版本的中控版本可以使用,新版本已弃用
--引入中控库local ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_libb,"无法引入企业专用库")local redis = ts_enterprise_lib.redisassert(redis,"无法引入redis库")local red = redis:new()red:set_timeout(5) -- 5 secassert(red:connect())assert(red:set("dog", "an animal"))local ret,msg = red:get("dog")if ret thennLog("dog is "..ret)elsenLog("redis get error"..msg)endassert(red:set("params", {aaa=111,bbb=222}))local params,msg = red:get("params")if params thennLog("params.aaa="..params.aaa..",params.bbb="..params.bbb)elsenLog("redis get params error"..msg)end
以下功能仅在 1267之后版本的中控版本可以使用
函数名称:保存数据交换的值
函数功能:保存数据交换的值
函数方法:
assert(ts_enterprise_lib:variable_save("k","v"))
| 参数 | 类型 | 说明 |
|---|---|---|
| k | string | 必填,对应是 key |
| v | string/number | 选填,对应是 value |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ret | boolean | true - 成功,false - 失败 |
| msg | string | 操作结果或者错误信息 |
函数用例:
--引入中控库local ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")assert(ts_enterprise_lib:variable_save("k","v"))if ret thennLog("params="..msg)elsenLog("get params error")end
函数名称:获取数据交换的值
函数功能:获取数据交换的 value 的值
函数方法:
local ret,msg = ts_enterprise_lib:variable_get("k")
| 参数 | 类型 | 说明 |
|---|---|---|
| k | string | 必填,对应是 key |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ret | boolean | true - 成功,false - 失败 |
| msg | string | 查询结果或者错误信息 |
函数用例:
--引入中控库ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")local ret,msg = ts_enterprise_lib:variable_get("k")if ret thennLog("params="..msg)elsenLog("get params error")end
|____plugin| |____test --目录名为插件id| | |____1.png| | |____api.js| | |____api.lua| | |____EquipmentAuthor.css| | |____EquipmentAuthor.js| | |____main.lua| | |____plugin.json --插件配置文件| | |____plugin_index.html| | |____html.html
{"name": "插件演示", //插件显示名(桌面下的图标名)"window": {"title":"测试插件", //窗体的标题"width":1000, //窗体宽"height":500 //窗体高},"icon":"1.png", //桌面图标文件"index":"index.html", //桌面入口文件"main":"mail.lua", //插件的主函数入口"api":"api.lua" //插件api文件}
<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title></title><!--引入api调用的接口--><script src="api"></script></head><body><h1>测试插件</h1></body><script><!--调用插件api,名字abc,参数10,10,返回值ret1,ret2,ret3-->api_call("abc",function(success,ret1,ret2,ret3){console.info(success,ret1,ret2,ret3)alert(ret1)},10,10)</script></html>
local api = {}--取当前时间function api.current_time(task)return os.time()end--计算乘积function api.multiplication(task,a,b)return a*bend--多参数示例function api.multi_param(task,p1,p2,p3,p4)return p1,p2,p3,p4end--阻塞api示例local 退出条件 = falsefunction api.block(task)while true doif 退出条件 thenbreakend--在可能阻塞的代码段,必须调用task.sleep(x),其中x为等待x毫秒task.sleep(100)endend--获取设备号和脚本id示例function api.get_device(task)return task.deviceidendfunction api.get_tspid(task)return task.tspidendreturn api
<!--引入api调用的接口--><script src="api"></script>
<script><!--调用插件api,名字abc,参数1,2,3,4,返回值ret1,ret2,ret3,ret4-->api_call("multi_param",function(success,ret1,ret2,ret3,ret4){console.info(success,ret1,ret2,ret3,ret4)alert(ret1)},1,2,3,4)</script>
<!--引入api调用的接口--><script src="angular_api"></script><script><!--调用插件api,名字abc,参数1,2,3,4,返回值ret1,ret2,ret3,ret4-->angular_api_call($http,"multi_param",function(success,ret1,ret2,ret3,ret4){console.info(success,ret1,ret2,ret3,ret4)alert(ret1)},1,2,3,4)</script>
ts_enterprise_lib = require("ts_enterprise_lib")assert(ts_enterprise_lib,"无法引入企业专用库")-- 插件id(插件的目录名)local plugin_id = "test"-- 调用api的名字local api_name = "multi_param"local p1 = 1local p2 = 2local p3 = 3local p4 = 4--设置调用api等待的时间,缺省是5秒,对于立即返回的api,可以不用设置,如果是阻塞较长时间的api,根据需要调整大小,ts_enterprise_lib.timeout = 5local success,ret1,ret2,ret3,ret4 = ts_enterprise_lib:plugin_api_call(plugin_id,api_name,p1,p2,p3,p4)if success thentoast("调用成功:"..ret1..ret2..ret3..ret4)elsetoast("调用失败:"..ret1)end
local function init_plugin(task)-- todo 插件初始化endlocal function loop(task)-- todo 插件后台循环endreturn function(task)init_plugin(task)while true doloop(task)task.sleep(100)endend
https://www.zybuluo.com/miniknife/note/288009
showUI 不能弹出、点击没反应、滑动失效等问题有可能是由于安装了冲突插件引起的
https://www.zybuluo.com/miniknife/note/307651#已知与触动精灵冲突的插件列表
远程调试、运行脚本
TouchSprite Studio(v1.1.7):http://pan.baidu.com/s/1bn5b9Vp 密码:k9yf
远程截图、取色、生成代码
触动精灵抓色工具(v1.7.10):http://dev.touchsprite.com/