calculation and UI scripting manual

(taoism 3 )

使用说明

 

Snooper taoism 2的界面脚本是指用文本工具编写的、简单易用、可嵌套使用多种常见算法、实现不同逻辑组合、可在线动态升级、快速搭建数据处理界面的一种脚本语言。

Snooper taoism 2 的界面脚本功能比较简单,主要针对算法使用,不涉及复杂控制逻辑。

Snooper 界面脚本完全是unicode表现,使用非unicode字符时必须使用函数转换。

界面脚本与常规脚本不兼容,且有很多函数类似,使用时要特别小心。

本手册中涉及的软件是Snooper taoism 2软件0.0.3.9版及以上版本。


 

   

calculation and UI scripting manual.. 1

目    .... 2

更新变化.... 3

0.0.3.9----在界面脚本中加入简单的流程控制功能,支持了简单的标号。... 3

数据表示.... 3

入门... 3

打开辅助计算功能... 3

界面脚本示例... 4

顶部工具条简介... 4

注释... 4

变量... 4

界面脚本语法.... 5

控件.... 5

内存变量.... 5

换行.... 5

函数.... 5

函数内的控制语句.... 6

界面脚本示例.... 6

创建控件、编写响应信息.... 6

 


 

更新变化

0.0.3.9----在界面脚本中加入简单的流程控制功能,支持了简单的标号。

数据表示

未经说明,本文档中所有的数值都是16进制形式,比如E9表示值为0xe9的数值的16进制数。

入门

打开辅助计算功能

 

点击说明: E:\microissuer\code\static\0024_img\image001.png说明: E:\microissuer\code\static\0024_img\image002.png,则可弹出辅助计算工具菜单,内置了部分算法组合,可显示输入参数与输出结果,英文版菜单如下

说明: E:\microissuer\code\static\0024_img\image003.png说明: E:\microissuer\code\static\0024_img\image004.png

 user 01 08供用户自己编写界面脚本,界面脚本可以完成各种逻辑算法的逻辑组合,尤其适用于各种需要人工计算、核验数据的情况。

界面脚本示例

 

 说明: E:\microissuer\code\static\0024_img\image005.png

顶部工具条简介

l  说明: E:\microissuer\code\static\0024_img\image006.png

n  界面脚本中mac的长度,一般是48,默认是4.

n  是否显示函数调用名称和内部执行过程

n  是否显示函数调用过程和最终结果

n  是否用C格式输出最终结果(输出结果不能被再次使用)

注释

两个相连的斜杠//后面的字符被认为是注释,注释用于解释该程序是做什么的。//后面的的字符序列在编译时被忽略掉,它们可以在程序中自由地使用,目的是为了使程序更易于理解。注释可以出现在任何空格、制表符或换行符可以出现的地方。

界面脚本语言不支持块注释

变量

变量无类型,变量实质是自带长度的16进制数据串,界面脚本中变量的值存储界面的控件或在内存中,所有关键字不能作为变量名而保留,不可任意使用。

界面脚本语法

 

控件

控件共6

static

edit

button

check

group

radio

 

static

static 控件名称 = “标题” position = 逻辑位置% width = 逻辑宽度% height = 行数

edit

edit 控件名称 filename = “保存文件的名字” position = 逻辑位置% width = 逻辑宽度 height = 行数

button

button 控件名称 = “标题” position = 逻辑位置% width = 逻辑宽度% height = 行数

check

static

group

static

radio

static

内存变量

内存变量只有一种

var

 

var

var input

换行

换行

crlf

从下一行开始

 

 

函数

function

按钮名称

 

edit控件 = 内置的函数( 参数,参数… )

end function

 

 

函数内的控制语句

 

 

语句

作用

string

表明输出是字符串

multiline

表明输入是按行区分的,否则输入数据会忽略分行

assume

Assume控件名称 is input,当要处理的数据是多行的时候,必须使用此语句指定输入数据源

addsrc

输出结果包含输入内容

escape

字符转义

unescape

字符反转义

结果 = 函数(数据)

结果是edit控件的名称,输入数据可以是控件内容、常量、函数的组合。

 

注:

1.       当处理函数按行区分时,有且只能有一个assume语句指定唯一一个数据源。当处理函数不按行区分时,每行处理语句可以有自己的数据源。

2.       当目标控件为NULLnothing时,不进行赋值操作。

3.       当输入数据为hex格式时,需要在表达式中使用$ + 控件名称表示,当输入数据当做字符串时,需要在表达式中使用@ + 控件名称表示。

4.       脚本界面不区分大小写

5.       所有输入的hex格式数据不能使用“0x

6.       所有输入的hex格式数据不能使用“,

7.       如果选择了C格式输出,因为结果中有0x“,”,使用时要注意。

 

界面脚本示例

 

创建控件、编写响应信息

打开文本编译器,输入如下内容

    // 提示控件001  控件的名字   “密钥输入处”是要显示的内容

    // 此控件从逻辑位置0开始,占满整个宽度,高度为1

    static 提示控件001 = "密钥输入处" position = 0% width = 100% height = 1

    crlf

 

保存为文本文件,拖动到脚界面工具的User page处,或者通过右键菜单打开

说明: E:\microissuer\code\static\0024_img\image007.png  说明: E:\microissuer\code\static\0024_img\image008.png

效果如下。

 

 说明: E:\microissuer\code\static\0024_img\image009.png

 

继续编辑脚本界面,如下内容

    // 提示控件001 是 控件的名字   “密钥输入处”是要显示的内容

    // 此控件从逻辑位置0开始,占满整个宽度,高度为1

    static 提示控件001 = "密钥输入处" position = 0% width = 100% height = 1

    crlf

   

    // 创建一个输入控件,名称为 密钥,另一属性为 “密钥存储文件”,将密钥

    // 的内容存储到  “密钥存储文件.txt” 下,下次打开此脚本时,可以自动加载文件的内容

    // 其他属性同上

    edit 密钥 filename = "密钥存储文件" position = 0% width = 100% height = 3

    crlf

 

重新加载

说明: E:\microissuer\code\static\0024_img\image010.png

加载效果如下

 

 说明: E:\microissuer\code\static\0024_img\image011.png

继续编辑脚本界面,如下内容

    // 提示控件001 是 控件的名字   “密钥输入处”是要显示的内容

    // 此控件从逻辑位置0开始,占满整个宽度,高度为1

    static 提示控件001 = "密钥输入处" position = 0% width = 100% height = 1

    crlf

   

    // 创建一个输入控件,名称为 密钥,另一属性为 “密钥存储文件”,将密钥

    // 的内容存储到  “密钥存储文件.txt” 下,下次打开此脚本时,可以自动加载控件的内容

    // 其他属性同上

    edit 密钥 filename = "密钥存储文件" position = 0% width = 100% height = 3

    crlf

 

    // 输入控件和输出控件

    static 提示控件002 = "数据输入处" position = 0% width = 100% height = 1

    crlf

    edit 输入数据 filename = "输入存储文件" position = 0% width = 100% height = 3

    crlf

 

    static 提示控件003 = "结果输出处" position = 0% width = 100% height = 1

    crlf

    edit 输出结果 filename = "输出存储文件" position = 0% width = 100% height = 3

    crlf

 

 

    // 声明一个按钮,其基本属性与static相同

    button des加密演示 = "des  加密演示 按钮" position = 20 % width = 60% height = 1

    crlf

   

 

加载效果如下

 

 说明: E:\microissuer\code\static\0024_img\image012.png

 

此时按钮因为没有执行函数,所以点击按钮没有任何效果,下面编写按钮响应事件。

    // 格式 function  按钮名

    function des加密演示

        // 结果控件名 =  函数名           数据

        // 函数可嵌套

        输出结果 = des_encode_ecb$输入数据, $密钥 )

    end function

 

在输入框里输入密钥,数据,点击按钮即可执行des加密。

 

  说明: E:\microissuer\code\static\0024_img\image013.png

 

界面脚本的函数可任意嵌套,如图所示,密钥为8字节的aa,数据为20字节的bb,选中主界面上的

说明: E:\microissuer\code\static\0024_img\image014.png

这两个按钮,可以显示函数调用原型和调用堆栈。

 

正面就是选中后的主界面log

 

//des_encode_ecb ( dup ( int ( 20 ) , bb ) , dup ( int ( 8 ) , aa ) )

//------int

//------  input = 20  hex = 00 00 00 14

//

//--------int

//--------  input = 08  hex = 00 00 00 08

//

//----dup repeat the specified number of times the input data

//----  result = BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB

//

//----dup repeat the specified number of times the input data

//----  result = AA AA AA AA AA AA AA AA

//

//--single des ecb encrypt

//--key = AA AA AA AA AA AA AA AA

//--plain = BB BB BB BB BB BB BB BB   cipher = 9B FF 13 C8 DC 46 20 72

//--plain = BB BB BB BB BB BB BB BB   cipher = 9B FF 13 C8 DC 46 20 72

//--plain = BB BB BB BB 00 00 00 00   cipher = 8D E2 BC E0 4B 2F 9B D4

//

//-----Final result --- 9B FF 13 C8 DC 46 20 72 9B FF 13 C8 DC 46 20 72 8D E2 BC E0 4B 2F 9B D4

//

 

脚本界面工具窗口如下

说明: E:\microissuer\code\static\0024_img\image015.png