@lisaisacat
2019-07-16T18:04:33.000000Z
字数 46521
阅读 3055
开发手册
企业版
Windows 平台按 Ctrl + F 打开快捷搜索
Mac 平台按 command + F 打开快捷搜索
※右侧文本列表可以找到全部手册
返回值 | 类型 | 说明 |
---|---|---|
text | number | 产品类型,1 为云控,2 为中控,nil 为未知连接方式 |
函数用例:
local text = (TSUserType == 1 and "云控" or TSUserType == 2 and "中控" or "未知连接方式")
dialog(text)
注意事项:
获取的是当前运行脚本所在的企业产品类型。
函数功能:获取用户 ID
返回值:number,用户 ID
函数用例:
dialog(TSUserID)
注意事项:
获取的是当前运行脚本所在使用产品的用户 ID。
函数功能:获取企业用户邮箱
返回值:number,用户邮箱账号
函数用例:
dialog(TSUserEmail)
注意事项:
获取的是当前运行脚本所在的企业用户邮箱。
完整示例:
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)
参数 | 类型 | 说明 |
---|---|---|
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,"无法引入企业专用库")
-- 设置超时时间为 60 秒
ts_enterprise_lib.timeout = 60
参数 | 类型 | 说明 |
---|---|---|
ret | table | 必填,ret.version - 中控版本号,ret.build - 中控 build 号 |
脚本实例:
--取中控版本号和 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 | 操作结果详情,失败返回失败原因 |
脚本实例:
--[[
请注意注入代码的安全,不安全的代码会导致中控器崩溃
简单的发账号示例
测试/account.txt 文件中内保存账号密码,文件格式为 UTF-8(默认存放路径为 TouchSpriteENT_Files 文件夹下)
--]]
ts_enterprise_lib = require("ts_enterprise_lib")
assert(ts_enterprise_lib,"无法引入企业专用库")
local ok,account = ts_enterprise_lib:controller_injection(
[[
local f = io.open("测试/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("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
参数 | 类型 | 说明 |
---|---|---|
filepath | string | 必填,文件路径,可以是相对中控器文件夹的相对路径,也可以是绝对路径 |
返回值 | 类型 | 说明 |
---|---|---|
ok | boolean | 操作结果,成功返回 true,失败返回 false |
data | string | 当 ok 等于 true,返回文件数据;当 ok等于 false,返回错误原因 |
脚本实例:
--引入中控库
ts_enterprise_lib = require("ts_enterprise_lib")
assert(ts_enterprise_lib,"无法引入企业专用库")
--文件名:中控器上的文件名,可以是相对中控器文件夹的相对路径,也可以是绝对路径
--如果文件名所在的文件夹不存在,或者没有权限,或者文件名存在非法字符,文件会读取
--这是相对路径,v1.2.5 以上版本中控默认为 TouchSpriteENT_Files 文件夹下
local filepath = "123.txt"
--[[
--这是 win 绝对路径
local filepath = "E:\\上传脚本\\测试\\数据中心.txt"
--这是 Mac 绝对路径
local filepath = "/Users/xxxx/Documents/abc"
]]--
-- 读取远程文件
local ok,data = ts_enterprise_lib:remote_file_load(filepath)
if ok then
toast("读成功:"..data)
else
toast("读失败:"..data)
end
-- 返回值 ok:调用是否成功,如果 true,第二个参数返回文件数据,如果 false,第二个返回值返回错误原因
参数 | 类型 | 说明 |
---|---|---|
filepath | string | 必填,文件路径,可以是相对中控器文件夹的相对路径,也可以是绝对路径 |
filedata | table | 必填,需要插入的内容,内容不能为空 |
--是否可以为空
返回值 | 类型 | 说明 |
---|---|---|
ok | boolean | 操作结果,成功返回true,失败返回false |
data | string | 当 ok 等于 true,无返回值;当 ok 等于 false,返回错误原因 |
脚本实例:
--引入中控库
ts_enterprise_lib = require("ts_enterprise_lib")
assert(ts_enterprise_lib,"无法引入企业专用库")
--文件名:中控器上的文件名,可以是相对中控器文件夹的相对路径,也可以是绝对路径
--如果电脑/手机的文件名所在的文件夹不存在,或者没有权限,或者文件名存在非法字符,文件会创建失败
--这是相对路径,v1.2.5 以上版本中控默认为 TouchSpriteENT_Files 文件夹下
local filepath = "123.txt"
--[[
--这是 Win 绝对路径
local filepath = "E:\\上传脚本\\测试\\1.txt"
--这是 Mac 绝对路径
local filepath = "/Users/xxxx/Documents/abc"
]]--
--文件数据,支持二进制数据
local filedata = [[
1111
2222
3333
]]
-- 写入远程文件
local ok,msg = ts_enterprise_lib:remote_file_save(filepath,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"
--中控的文件路径(相对于中控器的根路径),v1.2.5 以上版本中控相对路径默认为 TouchSpriteENT_Files 文件夹下
local remote_file = 'test2.zip'
--[[
--这是 Win 绝对路径
local remote_file = "E:\\上传脚本\\测试\\1.txt"
--这是 Mac 绝对路径
local remote_file = "/Users/xxxx/Documents/abc"
]]--
local ok,err = ts_enterprise_lib:push_file(local_file,remote_file)
if ok then
toast("上传成功")
else
toast(err)
end
--测试速度结果:80M 文件 11 - 18 秒
--此功能需要配合 v1069 以上版本中控器方可使用
参数 | 类型 | 说明 |
---|---|---|
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"
--中控的文件名(相对于中控器的根路径),v1.2.5 以上版本中控相对路径默认为 TouchSpriteENT_Files 文件夹下
local remote_file = 'test.zip'
--[[
--这是 Win 绝对路径
local remote_file = "E:\\上传脚本\\测试\\1.txt"
--这是 Mac 绝对路径
local remote_file = "/Users/xxxx/Documents/abc"
]]--
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
toast("创建成功")
else
toast("创建失败 : " .. 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 category = "测试分类"
--添加一个数据
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 | 必填,数据中心分类名 |
返回值 | 类型 | 说明 |
---|---|---|
ok | boolean | 操作结果,成功返回 true,失败返回 false |
ret1 | string/boolean | 当 ok 等 于 true,返回数据获取状态;当 ok 等于 false,返回错误原因 |
ret2 | string | 当 ret1 等于 true,返回数据;当 ret1 等于 false,返回失败原因 |
函数用例:
-- 本例子所调用的 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 调用接口
-- category 是分类名
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")
--使用 JSON 模块前必须插入这一句
local json = ts.json
--批量取数据
--数据中心分类名
local category = "测试分类"
--需要获取数据的数量
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
参数 | 类型 | 说明 |
---|---|---|
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","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
参数 | 类型 | 说明 |
---|---|---|
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 category = "测试分类"
--需要还原的数据
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 category = "测试分类"
--删除一个分类下的某个数据
--需要删除的数据
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 category = "测试分类"
local ok,msg = ts_enterprise_lib:clear_dataCenterUser(category)
assert(ok)
if ok then
nLog("重置成功!")
toast("重置成功!")
else
nLog("重置失败!"..msg)
toast("重置失败!"..msg)
end
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://yun.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 | 选填,超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
---是否可以为空
返回值 | 类型 | 说明 |
---|---|---|
ok | boolean | 操作结果,成功返回true,失败返回false |
err | string | 当ok等于true,无返回值;当ok等于false,返回错误原因 |
脚本实例:
ts_enterprise_lib = require("ts_enterprise_lib")
assert(ts_enterprise_lib,"无法引入企业专用库")
--云文件名,包含目录的完整文件名
--云盘文件路径不存在会创建路径下的文件及文件夹,即创建 aaa 文件夹下的 bbb 文件夹下的 2.lua 文件,并插入数据:123
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 | 选填,超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
返回值 | 类型 | 说明 |
---|---|---|
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("success:"..data)
else
dialog("fail:"..data)
end
参数 | 类型 | 说明 |
---|---|---|
local_file | string | 必填,本地文件路径,需包含完整文件名 |
cloud_file_name | string | 必填,云盘文件路径,需包含完整文件名 |
timeout_seconds | number | 选填,超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
返回值 | 类型 | 说明 |
---|---|---|
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 | 选填,超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
返回值 | 类型 | 说明 |
---|---|---|
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/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 | 选填,超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
返回值 | 类型 | 说明 |
---|---|---|
ok | boolean | 操作结果,成功返回 true,失败返回 false |
err | string | 当 ok 等于 true,返回用户查询的实际结果;当 ok 等于 false,返回错误原因 |
脚本实例:
--引入中控库
ts_enterprise_lib = require("ts_enterprise_lib")
assert(ts_enterprise_lib,"无法引入企业专用库")
--添加数据
--云数据库表 ID,可在云数据库管理平台查看
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 | 超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
返回值 | 类型 | 说明 |
---|---|---|
ok | boolean | 操作结果,成功返回 true,失败返回 false |
err | string | 当 ok 等于 true,返回用户查询的实际结果;当 ok 等于 false,返回错误原因 |
脚本实例:
--引入中控库
ts_enterprise_lib = require("ts_enterprise_lib")
assert(ts_enterprise_lib,"无法引入企业专用库")
--删除数据
--云数据库表 ID,可在云数据库管理平台查看
local table_id = '58b7968986d4e24f4a0cf4e5'
--条件(可多个条件)
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 | 超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
返回值 | 类型 | 说明 |
---|---|---|
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 | 超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
返回值 | 类型 | 说明 |
---|---|---|
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 | 超时时间,单位秒。数据较大时,应适当延长,默认为 5 秒 |
返回值 | 类型 | 说明 |
---|---|---|
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字段值为变量名调用即可
调用示例:
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/
https://www.zybuluo.com/miniknife/note/307651#脚本加密
标签(空格分隔): 企业版
-- 获取文件列表
ts_enterprise_lib:cloud_file_list("/b1/")
-- 创建文件
ts_enterprise_lib:cloud_file_new("/b1/a3")
-- 重命名
-- 文件夹
ts_enterprise_lib:cloud_file_rename("/b1/a3","b3")
-- 文件
ts_enterprise_lib:cloud_file_rename("/b1/a3.txt","b3")
-- 删除文件
ts_enterprise_lib:cloud_file_del("/ipa/aa/bb/")
参数 | 类型 | 说明 |
---|---|---|
file | string | 必填,文件路径 |
返回值 | 类型 | 说明 |
---|---|---|
bool | boolean | 路径存在 - true,路径不存在 - false |
type | string | bool 为 true 时 file - 文件,folder - 文件夹 |
函数名称:getRndStr 生成随机字符串
函数名称:生成随机字符串
函数功能:生成随机字符串
len = getRndStr(lib,num,len)
参数:
1.lib:string,必填,需要生成字符串的库
2.num:number,选填,需要生成的随机字符串中的字符数量,值为 6
3.len:number,选填,每个字符的长度,默认值为 1
返回值:
str:string生成的随机字符串
随机字符串 = string.random(字符池 [, 生成字符个数, 每字符的字节数 ])
字符池
文本型,需要生成字符串的字典
生成字符个数
整数型,可选参数,需要生成的随机字符串中的字符个数,默认 6
每字符的字节数
整数型,可选参数,每个字符的长度,默认 1
随机字符串
文本型,返回生成的随机字符串
去除掉文本前的 UTF8-BOM (string.strip_utf8_bom)
声明
处理后文本 = string.strip_utf8_bom(处理前文本)
参数及返回值
处理前文本
文本型,需要剔除掉 UTF8-BOM 字符的文本
处理后文本
文本型,返回已经剔除掉 UTF8-BOM 字符的文本
说明
UTF8-BOM 的表现形式是文档开头的三个看不见的字符 "\xEF\xBB\xBF" (在 Lua 源码中,字符串中 \x 开头,后面跟两位 16 进制数表示以该数字编码的单个字节。例如:\x58 表示 X 这个字符,可打印字符部分参考《ASCII 编码》)
这个函数在 1.1.3-1 版以上方可使用
函数名称:reTxtUtf8 过滤文本前的 UTF8-BOM 内容
功能:过滤文本前的 UTF8-BOM 内容
str2 = reTxtUtf8(str1)
参数: str1:需要过滤 UTF8-BOM 字符的内容
返回值:str2:过滤 UTF8-BOM 字符后的内容
发起 GET 请求 (http.get)
声明
HTTP状态码, 返回头JSON文本, 返回主体 = http.get(URL [, 超时秒, 请求头, URL不ESCAPE ])
参数及返回值
URL
文本型,需要请求的 URL 地址,该方法默认会对 URL 进行百分号 escape 处理,如不需要可参考 URL不ESCAPE 参数说明
超时秒
实数型,可选参数,请求超时时间,单位秒,默认 2
*1.2-3 版以上默认超时改为 10 秒
请求头
表型,可选参数,发出的请求的头部信息,形式 {field1 = value1, field2 = value2, ...},默认 {}
URL不ESCAPE *1.1.3-1 新增
布尔型,可选参数,true 表示不对 URL 进行 escape 直接请求,默认 false
对 URL 进行自定义 escape 可参考 lcurl 模块 的 easy:escape、easy:unescape
HTTP状态码
整数型,返回当次请求的 http 状态码,请求超时返回 -1
返回头JSON文本
文本型 或 nil,请求完成返回的 JSON 形式头部信息,请求超时返回 nil
返回主体
字符串型 或 nil,请求完成返回的内容,请求超时返回 nil
说明
使用 HTTP/1.1 协议的 GET 方法请求获取网络资源
这个函数不会将资源存储到磁盘上,如果需要下载较大的网络资源,建议使用 http.download
这个函数可能会让出,在这个函数返回之前,其它的 线程 可能会得到运行机会
若服务器协议版本为 HTTP/1.0 或 HTTP/0.9,可使用
返回主体 = httpGet(URL, 超时秒)
这个方法替代
函数:httpGet 获取网页数据
函数功能:获取网页数据信息
函数方法
webdata = httpGet(url,bool);
参数
url:string,必填,请求的网页地址 url
bool:boolean,选填,默认 false,表示对 URL 进行转码,true 表示不对 URL 进行解码
返回值
webdata :string/boolean,成功返回网页内容,失败返回空
函数: ts.httpGet 发送 httpGET 请求
函数方法
status_resp,body_resp = ts.httpGet(url, header_send, body_send,bool);
参数:
url:string,请求 URL,必填
header_send:table,请求头部内容,选填,本参数必须与请求体一起填写
body_send:table,请求内容,选填,本参数必须与头部一起填写
bool:bool:boolean,选填,默认 false,表示对 URL 进行转码,true 表示不对 URL 进行解码
函数:httpPost 提交网页数据增加参数:bool
函数方法
str=httpPost(url,data,bool)
参数:
url:string ,必填,访问的网页地址 url
data:string,必填,要提交的 Post 参数数据
bool:boolean,选填,默认 false,表示对 URL 进行转码,true 表示不对 URL 进行解码
函数名称:ts.tsDownload 下载文件新增参数
函数名称:下载文件
函数功能:下载文件到设备,支持 http 和 ftp
函数方法
code,msg = ts.tsDownload(path,url,mode,block,size);
参数:
path:string,保存路径
url:string,下载 URL
mode:boolean,是否需要支持断点续传,默认 false,需要 - true,不需要- false
block:默认为空,为 true 时停止这次下载
size:number,缓冲区大小字节数,默认自动最优配置
返回值
code:number,状态码,200 为下载成功
msg:table/string,如果连接成功则返回下载信息,失败返回连接失败原因。
返回值为 table 时
-- 第二个返回值下载信息结构如下
{
resource_size = 远端资源总字节数,
start_pos = 本次下载从资源的开始的位置,
size_download = 本次下载的字节数,
speed_download = 本次下载的速度(单位:字节/秒),
}
函数: ts.ftp.download 下载文件增加参数
函数功能:下载服务器文件到本地
函数方法
status,msg = ts.ftp.download(localfilepath,severfilepath,type,mode,block,size);
参数:
localfilepath string 本地文件路径
severfilepath string FTP 文件路径
type number 选填,默认值非 0 表示文本类型,0 表示非文本类型
mode:boolean,是否需要支持断点续传,默认 false,需要 - true,不需要- false
block:默认为空,为 true 时停止这次下载
size:number,缓冲区大小字节数,默认自动最优配置
返回值:
status boolean 成功返回 true 失败,返回 false
msg:table/string,如果连接成功则返回下载信息,失败返回连接失败原因。
返回值为 table 时
-- 第二个返回值下载信息结构如下
{
resource_size = 远端资源总字节数,
start_pos = 本次下载从资源的开始的位置,
size_download = 本次下载的字节数,
speed_download = 本次下载的速度(单位:字节/秒),
}
函数: ts.ftp.upload 上传文件增加参数
函数功能:上传本地文件到服务器
函数方法
status,msg = ts.ftp.upload(localfilepath,severfilepath,type,type,mode,block,size);
参数:
localfilepath string 本地文件路径
severfilepath string FTP 文件路径
type number 选填,默认值非 0 表示文本类型,0 表示非文本类型
mode:boolean,是否需要支持断点续传,默认 false,需要 - true,不需要- false
block:默认为空,为 true 时停止这次下载
size:number,缓冲区大小字节数,默认自动最优配置
返回值:
status boolean 成功返回 true 失败,返回 false
msg:table/string,如果连接成功则返回上传信息,失败返回连接失败原因。
函数: ts.ftp.upload 上传文件增加参数
函数功能:上传本地文件到服务器
函数方法
status,msg = ts.ftp.upload(localfilepath,severfilepath,type,type,mode,block,size);
参数:
localfilepath string 本地文件路径
severfilepath string FTP 文件路径
type number 选填,默认值非 0 表示文本类型,0 表示非文本类型
mode:boolean,是否需要支持断点续传,默认 false,需要 - true,不需要- false
block:默认为空,为 true 时停止这次下载
size:number,缓冲区大小字节数,默认自动最优配置
返回值:
status boolean 成功返回 true 失败,返回 false
msg:table/string,如果连接成功则返回上传信息,失败返回连接失败原因。
说明
-- 第二个返回值为 table 时下载信息结构如下
{
resource_size = 本地文件总字节数,
start_pos = 本次上传从本地文件的开始的位置,
size_upload = 本次上传的字节数,
speed_upload = 本次上传的速度(单位:字节/秒),
}
函数:ts.binaryzation 屏幕二值化
ts.binaryzation(x1,y1,x2,y2,{color,maxicolor})
参数:
x1:number 左上角顶点屏幕横坐标
y1:number 左上角顶点屏幕纵坐标
x2:number 右下角顶点屏幕横坐标
y2:number 右下角顶点屏幕纵坐标
color:number,颜色值白名单,十六进制颜色值,是颜色值本身
maxicolor:number,颜色值白名单,十六进制颜色值,是颜色值的最大色差值
ts.binaryzation(x1,y1,x2,y2,"cx-cox")
参数:
x1:number 左上角顶点屏幕横坐标
y1:number 左上角顶点屏幕纵坐标
x2:number 右下角顶点屏幕横坐标
y2:number 右下角顶点屏幕纵坐标
cx :number,是颜色值本身的十进制数据
cox:number,是颜色值本身最大色差值十进制数据
函数名称 plist.read PLIST 文件读取增加参数
函数方法:
tb = plist.read(str)
参数:
str:string,需要读取的 xml 数据
返回值:
tb:table或 nil,加载成功则返回内容返回表,否则返回 nil
函数:plist.read PLIST 文件读取
函数方法:
str = plist.read(tb)
参数:
tb:需要转换的 table 数据
返回值:
tb:string 或 nil,加载成功则返回内容返回 xml 数据,否则返回 nil
函数名称:plist.load xml 数据转换 table 数据
函数功能:xml 数据转换 table 数据
函数方法:
tb = plist.load(str)
参数:
str:string,需要读取的 xml 数据
返回值:
tb:table或 nil,加载成功则返回内容返回表,否则返回 nil
函数名称:plist.dump table 数据转换 xml 数据
函数功能:xml 数据转换 table 数据
函数方法:
str = plist.load(tb)
参数:
tb:需要转换的 table 数据
返回值:
tb:string 或 nil,加载成功则返回内容返回 xml 数据,否则返回 nil
增加函数:ocrObject 识别图片对象
方法:
text,tid = ocrObject(object,type,timeout,scale);
参数:
object:图片对象,需要打码的图片对象(具体参数可以详见 https://touchsprite.5upm.com/story-view-520.html)
type:打码类型
timeout:超时时间
scale:缩放比例
返回值:
text:string.boolean 正确返回打码结果,错误返回 nil
tid:string 正常返回 id,错误返回错误信息