KMScript.com
KMS介绍
KMS下载
KMS市场
伙伴
帮助
DIGITIZED as KMScript
联系我们
扫码到手机
关联类目
最后更新
概念
kmscript 是一个以驱动特定硬件为结果,以特定算法为逻辑的开发套件
kmscript 主用功能是构建并运行一个
KMS
,一个 KMS 由多个模块组成,每个模块由多个步骤组成,如同
积木操作
:
kmscript 提供了许多功能函数,每一个函数即一个步骤,每一个步骤如同一个积木(见下方图1)
每个步骤都有成功和失败,根据这个结果进行特定的跳转形成流程
多个步骤积木连接组成一个大的积木,即模块积木,多个模块个组成一个KMS脚本。举例来讲:
积木1,
匹配颜色
设别目标区域是否为红色,成功则继续运行,失败则循环运行(直到成功匹配到红色)
积木2,
发送GPIO信号
,对引脚A输出高电平;该引脚连接着一个
继电器
A以控制高压电路;该继电器A另一端连接着一个电机用于拉起卷帘门;由于此时引脚输出高电平而使继电器A触合电机开始工作拿起卷帘门。
积木3,
等待
30秒以完成门帘完全拉起
积木4,发送GPIO信号,对引脚A输出低电平;由于此时引脚输出低电平而使继电器断开从而关闭电机。
以上4块积木组成一个模块,命名为开门模块积木
如上操作匹配目的地颜色判断目标物已到达,成功则输出GPIO高电平信号给引脚B,引脚B的继电器B触合接通电机反向转动从而关闭卷帘门。即完成关门模块积木
或者用红外信号感应器模块
提供一个高低电平
,
通知 KMS
目标物已到达
开门模块积木和关门模块积木即组成一个 KMS,该KMS 可以编译、运行、转让、销售
每一个步骤和模块都如同积木可以被随意移动、分割和合并,形成水流一样的流程
可以通过
变量检查
判定特定情况从而跳过特定几个步骤积木或直接跳转到特定模块积木里的特定步骤积木
开发者与最终用户均一样的软件系统,即用户也可以创建脚本变成开发者
最终用户不需要关心 kmscript 的机制,他/她们甚至不需要访问 kmscript 的 web 界面
开发者可以预先设置好相关参数,例如启动脚本,然后打包发送给用户,用户只需要双击启动它
kmscript 允许被不做修改的内置于其它软件包,开发者可以转发、销售给其它开发者或最终用户,具体请查阅
kmscript 部署和集成指南
原则
开发者只做任务需要的操作,不应该获取更多无关任务的用户信息
在
变量
使用完成后应当移除该变量,只需要调用
对象变量模块的保存变量
,以一个空值调用即可。特别是一个图像变量它不清空将永久保留在内存且不会被重新利用
如果最终用户的 kmscript 由开发者提供需要遵守
kmscript 部署和集成指南
,特别是其安全配置里的规则
保留好原始 .kms 和
.kmsz.json
文件,这是拥有著作权的主要依据
养成存盘的习惯,即每过一会就要保存脚本以免出现意外
入门步骤
简要了解
帮助
里的大部分文档
掌握
kmscript 日志文件
和
kmscript 脚本调试
了解如何掌控脚本运行情况并进行调试
保持
kmscript 函数方法帮助
页面打开(鼠标指向方法帮助按钮也有函数提示)
尽可能的把过程录制为
kmsi
,之后可以在"文件管理"里播放、分析和提取(每一帧都是无损可以另存为PNG图像),或者
作为图像源重放
将原始需求整理形成目的、原则和实现步骤
设计相关硬件(如果有),并以
GPIO
、
网络
、
运行特定指令
等方式与脚本交互
编辑 kms
点击菜单 "KMS配置" 进入编辑模式
点击"新模块"按钮,再点击 "新步骤" 创建一个步骤
在步骤内容顶部选择一个功能函数,点击 "添加步骤"
填入或变更各内容参数,点击 "提交步骤"
此时需要为该步骤起一个名称,该名称在发布时从 kmsz 被移除替换为一个顺序编号,因此可以放心输入原始意图而不用担心泄露
该名称会保存在 .kms 源文件以便下次编辑,同时也会在发布时保存在 .kmsz.json,在启用 .kmsz.json 时显示在控制台,详情参见
kmscript 脚本调试
继续点击新步骤,如上操作直到当前模块的全部步骤都已完成,点选最后一个步骤,点右下方的 "结束步骤" 完成一个模块
此时需要为该模块起一个名称,该名称如同步骤名称一样在 kmsz 被移除
如上操作即完成一个模块,再次点击新模块继续创建其它步骤直到完成整个脚本
点击上方的"保存脚本" 将所有模块和步骤保存为一个 kms 源文件
进入"文件管理" 菜单,找到刚才保存的kms 源文件,右边有一个 "发布" 链接即可产生可运行且可销售的
.kmsz
文件
发布过程会编译 kms 到 kmsz,并打包所有资源文件到 kmsz
kms 可以引用任意路径文件(而不仅限于 pub 目录),例如匹配图片的文件可以是 d:\1.png,打包时会把它复制到 kmsz
kmsz
运行过程中该路径会被替换成资源文件,因此不能在运行时访问用户的文件
有关发布时"锁和钥匙"请参见
kmscript 锁和钥匙
在遵守《
kmscript 集成许可协议
》的前提下
您可以将钥匙、kmsz 连同 kmscript 一起提供给客户
,详情参见
kmscript 部署和集成指南
备注说明
脚本顺序执行,从第一个模块的第一个步骤开始,得出结果为成功或失败,然后根据该步骤在步骤内容所选的成功和失败选项处理
默认情况下成功时继续执行,失败为中止警报
中止警报将停止脚本的运行并产生一个
警报日志信息
可以在成功或失败时进行跳转实现如同程序的逻辑判断流程
成功或失败的跳转不能跳转到自己
多数情况下要跳转的步骤尚未编写,可保持默认等到该步骤完成后再回到刚才的步骤选择跳转
有关整个 kmsz 跳转到其它 kmsz 请参见
kmsz 的跳转机制
进行任意图像操作之前,建议先进行 "
区域定位
" 在图像源裁剪出一个工作区域
,进行过区域定位后图像源会变成裁剪后的区域。
例如摄像头只针对门区域做移动侦测,则只需要对门区域的特征(例如门的门框部分)做
区域定位
。
区域定位成功后摄像头图像源会变成只有该区域的图像而去除其它区域以减少计算量。
区域定位的图片的高宽将作为工作区域的高宽。
区域定位的图片应保留特征其他部分为透明,
在 KMScript 中被匹配目标的所有透明像素均被忽略(认为成功)
,例如:
用图像处理软件(例如
GIMP
)打开图像源原始图片(例如经由
保存图片
)
为图像添加透明图层,以确保后面的删除会保留成透明而不是黑色
选中特征部分,例如整个门部分
裁剪到选区,只保留需要的尺寸
继续编辑,选中要忽略的部分(门框内的其它细节)
删除选中的部分直到要忽略的部分都已删除(删除的部分都变成透明),以确保区域定位时只专注于门框的匹配
保存为PNG,例如 d:\1.png
在 kms 添加该图片文件的区域定位,今后图像源每次的图像会裁剪成目标区域
区域定位的原理和步骤为:
在图像源进行图片匹配,忽略图片的透明部分
记录找到的坐标作为未来的工作区域坐标
记录匹配图片(本段步骤 2.7 的图片)的高宽作为未来的工作区域高宽
此后例如“
移动侦测
”以区域0,0 高宽 0,0 即实现仅侦测这个工作区(因为有人进入该门必定会出现身体遮盖门框因而触发移动侦测);“
图像查找
”等等同理。
相关方法也提供了区域定义,因此不做区域定位也可精确定义区域实现类似效果。
如果同时在区域定义后相关方法还指定了区域,例如 x 为 10 且 y为5,那么实际操作区域会是区域定位后的工作区再次偏移 10,5 并且宽高都会 -10和-5,即等于工作区中再次裁减。
如上效果可用于定义一个特定窗口大小的图片,仅保留其特征其它部分删除为透明,然后拿该图做区域定位,即可将工作区变成该窗口;之后在窗口内进行相关操作都是相对于窗口内进行偏移。
例如游戏1窗口固定为800*600,上方是游戏LOGO,下方有用户名密码输入框。
可对该窗口截图,删除除了LOGO之外的所有内容为透明。
拿该图片做区域定位,将工作区变更为该窗口。
编辑之前的截图,找到用户名输入框的相对坐标(x和y),用“
鼠标移动
”方法移动到该坐标,并点击使用户名输入框成为焦点
利用“
输入多个字符
”方法输入用户名...
在鼠标引擎启动时,会自动进行一次"鼠标定位",
将从取得的当前鼠标位置逐步相对移动直到到达结果坐标。因此过程中若有其它方移动了鼠标应重新
进行该操作
。
本机窗口系统(Windows/X11)图像源进行鼠标定位,会从API读取鼠标位置。
非本机窗口,会对鼠标进行复位,不能复位的会进行移动侦测以确定鼠标位置。
骨骼配置:ui,值:li_tag