@miniknife
2020-03-17T11:48:14.000000Z
字数 40089
阅读 38629
已不进行更新,最新版请查看: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 then
toast("中控版本"..ret.version..',build:'..ret.build)
else
--
toast('获取失败')
end
end
参数 | 类型 | 说明 |
---|---|---|
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 then
local account_tab = {}
local account = f:read()
while account do
table.insert(account_tab,account)
account = f:read()
end
f:close()
if #account_tab > 0 then
local f = io.open("script/account.txt", "w")
if f then
for i = 2,#account_tab do
f:write(account_tab[i].."\n")
end
f:close()
end
return account_tab[1]
else
return false
end
end
return false
]]
)
assert(ok,account)
if account then
nLog("获取账号:"..account)
toast("获取账号:"..account)
else
nLog("获取账号失败")
toast("获取账号失败")
end
mSleep(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 then
toast("设备即将重启")
else
toast("设备重启失败:"..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 then
toast("读成功:"..data)
else
toast("读失败:"..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 = [[
1111
2222
3333
]]
-- 写入远程文件
local ok,msg = ts_enterprise_lib:remote_file_save(filename,filedata)
if ok then
toast("写入成功")
else
toast("写入失败:"..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 then
toast("上传成功")
else
toast(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 then
toast("下载成功")
else
toast(err)
return
end
--测试速度结果: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 do
local var1 = i
local var2 = math.random()
local var3 = var1+var2
local 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 then
dialog("创建成功")
else
dialog("创建失败 : " .. 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 then
if ret1 then
nLog("get_data 成功:"..ret2)
else
nLog("get_data 失败:"..ret2)
end
else
nLog("get_data 失败:"..ret1)
end
mSleep(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 then
if ret1 then
--返回一个数组table
nLog("batch_data 成功:"..json.encode(ret2))
else
nLog("batch_data 失败:"..ret2)
end
else
nLog("batch_data 失败:"..ret1)
end
mSleep(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 then
if ret1 then
nLog("get_remain_count 成功,剩余有效数据数量为:"..ret2)
else
nLog("get_remain_count 失败:"..ret2)
end
else
nLog("get_remain_count 失败:"..ret1)
end
mSleep(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 then
if ret1 then
nLog("insert_data 成功")
else
nLog("insert_data 失败:"..ret2)
end
else
nLog("insert_data 失败:"..ret1)
end
mSleep(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 then
if ret1 then
nLog("revert_data 成功:")
else
nLog("revert_data 失败:"..ret2)
end
else
nLog("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 then
if ret1 then
dialog("删除成功", 5)
return true
else
dialog("ret1 失败:"..ret1)
end
else
dialog("ok 失败:"..ret1)
end
mSleep(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 then
nLog("重置成功!")
toast("重置成功!")
else
nLog("重置失败!"..msg)
toast("重置失败!"..msg)
end
mSleep(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 then
dialog("创建成功")
else
dialog("创建失败 : " .. ret1)
end
toast("插入数据 测试")
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 then
if ret1 then
dialog("插入数据 insert_data 成功")
else
dialog("插入数据 insert_data 失败:"..ret2)
end
else
dialog("插入数据 insert_data 失败:"..ret1)
end
toast("获取数据 测试")
mSleep(1000)
local ok,ret1,ret3 = ts_enterprise_lib:plugin_api_call("DataCenter","get_data",category)
if ok then
if ret1 then
dialog("获取数据 get_data 成功:"..ret3)
else
dialog("获取数据 get_data 失败:"..ret3)
end
else
dialog("获取数据 get_data 失败:"..ret1)
end
toast("还原数据 测试")
mSleep(1000)
local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","revert_data",category,ret3)
if ok then
if ret1 then
dialog("还原数据 revert_data 成功:")
else
dialog("还原数据 revert_data 失败:"..ret2)
end
else
dialog("还原数据 revert_data 失败:"..ret1)
end
toast("批量获取数据 测试") mSleep(1000)
local count = 2 --取数据数量
local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","batch_data",category,count)
if ok then
if ret1 then
dialog("批量获取数据 batch_data 成功:"..json.encode(ret2))
else
dialog("批量获取数据 batch_data 失败:"..ret2)
end
else
dialog("批量获取数据 batch_data 失败:"..ret1)
end
toast("重置数据中心 测试") mSleep(1000)
local ok,msg = ts_enterprise_lib:clear_dataCenterUser(category)
assert(ok)
if ok then
dialog("重置数据中心 重置成功!")
else
dialog("重置数据中心 重置失败!"..msg)
end
toast("剩余有效数据 测试")
mSleep(1000)
local ok,ret1,ret2 = ts_enterprise_lib:plugin_api_call("DataCenter","get_remain_count",category)
if ok then
if ret1 then
dialog("剩余有效数据 get_remain_count 成功,剩余有效数据数量为:"..ret2)
else
dialog("剩余有效数据 get_remain_count 失败:"..ret2)
end
else
dialog("剩余有效数据 get_remain_count 失败:"..ret1)
end
toast("删除数据 测试")
mSleep(1000)
local ok,ret1,ret2= ts_enterprise_lib:plugin_api_call("DataCenter","delete_data",category,ret3)
if ok then
if ret1 then
dialog("删除数据 删除成功", 5)
else
dialog("删除数据 ret1 失败:"..ret1)
end
else
dialog("删除数据 ok 失败:"..ret1)
end
此功能模块为云控用户提供云端文件存储、调用服务
云盘访问地址: http://pan.touchsprite.com/
参数 | 类型 | 说明 |
---|---|---|
file | string | 需要获取文件的文件夹路径 |
返回值 | 类型 | 说明 |
---|---|---|
ret | table | true/fale和文件列表 |
脚本实例:
local ts = require("ts")
local json = ts.json
ts_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.json
ts_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.json
ts_enterprise_lib = require("ts_enterprise_lib")
--修改 a1 文件夹下 1.txt 文件名称为 2.txt
dialog(json.encode({ts_enterprise_lib:cloud_file_rename("/a1/1.txt","2")}))
--修改 a1 文件夹下的 1 文件夹名称为 2
dialog(json.encode({ts_enterprise_lib:cloud_file_rename("/a1/1/","2")}))
参数 | 类型 | 说明 |
---|---|---|
file | string | 需要删除文件(夹)的路径 |
返回值 | 类型 | 说明 |
---|---|---|
ret | table | 成功 - true,失败 - false |
脚本实例:
local ts = require("ts")
local json = ts.json
ts_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 then
dialog("成功")
else
dialog(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 then
dialog("loal success:"..data)
else
dialog("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 then
dialog("成功")
else
dialog(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 then
dialog("成功")
else
dialog(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 then
dialog("成功")
else
dialog(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' --表id
local where = {a=3} --条件(可多个条件)
local timeout_seconds = 30 --超时
local ok,err = ts_enterprise_lib:cloud_db_delete(table_id,where,timeout_seconds)
if ok then
dialog("成功")
else
dialog(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' --表id
local 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 then
dialog("成功")
else
dialog(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' --表id
local where = {a=5 } --条件
local timeout_seconds = 30 --超时
local ok,ret = ts_enterprise_lib:cloud_db_query(table_id,where,timeout_seconds)
if ok then
dialog("成功:"..ts_enterprise_lib.json.encode(ret))
else
dialog(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' --表id
local 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 then
dialog("成功:"..ts_enterprise_lib.json.encode(ret))
else
dialog(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' --表id
local 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 then
dialog("成功:"..ts_enterprise_lib.json.encode(ret))
else
dialog(ret)
end
脚本实例4:模糊条件查询
--引入中控库
ts_enterprise_lib = require("ts_enterprise_lib")
assert(ts_enterprise_lib,"无法引入企业专用库")
local ts = require("ts")--使用扩展库前必须插入这一句
local json = ts.json--使用 JSON 模块前必须插入这一句
--表id
local 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 then
dialog("成功:"..ts_enterprise_lib.json.encode(ret))
else
dialog(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 模块前必须插入这一句
--表id
local table_id = '58a522d7f502b1263083b74b'
--表中包括两个字段,data字段为取号的内容,used_device 为使用号的设备,如果为空,表示此号未使用
--取号可以通过以下代码完成
if ts_enterprise_lib.build and ts_enterprise_lib.build >=100 then
local ok,ret = ts_enterprise_lib:cloud_db_query_update(
table_id, --table id
{used_device=""}, --未使用的号的条件
{used_device=getDeviceID()}, --修改used_device为当前设备号,给该记录设置了使用标记
60
)
if ok then
if #ret > 0 then
dialog("成功取号:"..ts_enterprise_lib.json.encode(ret))
--nLog(ts_enterprise_lib.json.encode(ret))
else
dialog("没号了")
end
else
dialog(ret)
end
else
dialog('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.redis
assert(redis,"无法引入redis库")
local red = redis:new()
red:set_timeout(5) -- 5 sec
assert(red:connect())
assert(red:set("dog", "an animal"))
local ret,msg = red:get("dog")
if ret then
nLog("dog is "..ret)
else
nLog("redis get error"..msg)
end
assert(red:set("params", {aaa=111,bbb=222}))
local params,msg = red:get("params")
if params then
nLog("params.aaa="..params.aaa..",params.bbb="..params.bbb)
else
nLog("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 then
nLog("params="..msg)
else
nLog("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 then
nLog("params="..msg)
else
nLog("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*b
end
--多参数示例
function api.multi_param(task,p1,p2,p3,p4)
return p1,p2,p3,p4
end
--阻塞api示例
local 退出条件 = false
function api.block(task)
while true do
if 退出条件 then
break
end
--在可能阻塞的代码段,必须调用task.sleep(x),其中x为等待x毫秒
task.sleep(100)
end
end
--获取设备号和脚本id示例
function api.get_device(task)
return task.deviceid
end
function api.get_tspid(task)
return task.tspid
end
return 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 = 1
local p2 = 2
local p3 = 3
local p4 = 4
--设置调用api等待的时间,缺省是5秒,对于立即返回的api,可以不用设置,如果是阻塞较长时间的api,根据需要调整大小,
ts_enterprise_lib.timeout = 5
local success,ret1,ret2,ret3,ret4 = ts_enterprise_lib:plugin_api_call(plugin_id,api_name,p1,p2,p3,p4)
if success then
toast("调用成功:"..ret1..ret2..ret3..ret4)
else
toast("调用失败:"..ret1)
end
local function init_plugin(task)
-- todo 插件初始化
end
local function loop(task)
-- todo 插件后台循环
end
return function(task)
init_plugin(task)
while true do
loop(task)
task.sleep(100)
end
end
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/