[RockWell FTPC]入门教程02_Pnuts

pnuts语言介绍

  Process Designer脚本语言pnuts是一种面向对象和基于事件的语言。您不必从脚本语言中实例化类。
JavaAPI中的任何公共方法都可以用于向应用程序添加功能。这些类中的大多数都必须导入。
基本和Java一致

  • 基于表达式

  脚本语言是基于表达式的,脚本在运行时由脚本解释器以交互方式进行评估。脚本环境按顺序计算表达式,然后将最后的结果传递给Java环境。

  • 原始数据

  基本数据将自动转换为对象。例如,如果您声明了一个变量a=1,它将转换为objectjava.lang.Integer 。算术运算使用包装器对象进行计算。

  • 函数

  脚本可以包含可以接受任意数量参数的函数,这些函数由它们的名称和参数的数量标识。可以将函数赋给变量。参数和结果按原样传递,但由Java对象包装的基元类型值除外。

脚本基础

关键字

关键字不可用作变量
在这里插入图片描述

注释

// text
 /* text */

特殊字符

在这里插入图片描述

事务密钥缓存

服务器上至少缓存3000个事务密钥。如果您有3000多个事务请求,工厂操作将自动为它们分配更多空间。此缓存机制不可配置。由于缓存了密钥块,因此不能保证密钥的顺序。如果希望了解事务的创建顺序,建议查看trx_时间值(包含毫秒数据),而不是trx_键值

内置函数

在这里插入图片描述

import( )

Example 1

import ("com.datasweep.compatibility.ui.*")

import ("java.io.*")

Example 2


import("com.datasweep.compatibility.ui.Color")

ctrlStartButton.setBackColor(Color::RED)

一开始时,“java.lang.”和默认包(“”)已被注册

import()

此函数用于获取导入的类和包名称的列表。
Example

import ("com.datasweep.compatibility.ui.*")
import ("java.io.*")
pkgs = import()
printAll(pkgs)

执行代码段后输出结果为

java.io.*
com.datasweep.compatibility.ui.*
com.jacob.com.*
java.lang.*
*

throw ( )

此函数抛出指定的异常。
传递字符串对象时,将引发RuntimeException。分配给RuntimeException的错误消息将是作为参数传递的字符串,而不是一般RuntimeException错误消息。

Example

function exceptionHandler(e)
{
    println(e.getMessage()) // Output is "ThereAreProblems"
}
catch(RuntimeException, exceptionHandler)

throw("ThereAreProblems")

catch ( , )

此函数在堆栈框架中定义异常处理程序。第一个参数是exception类(例如exception、NumberFormatException等)。第二个参数是抛出指定异常时要调用的用户脚本函数(处理程序)的名称。当抛出一个已注册的异常时,将执行相应的处理程序,catch函数将立即返回处理程序的结果。异常处理程序的作用域与变量的作用域相同
示例:声明多个Catch语句

function genericExceptionHandler(e)
{
    dialogError("Exception thrown: " + e.toString())
}
catch(Exception, genericExceptionHandler)
//做一些可能导致异常的事情

示例:捕获一般异常

//首先声明最通用的异常类
catch(类java.lang.Exception,catchGeneric)
//在之后声明更具体的异常类
catch(类java.lang.NumberFormatException,catchConvert)
catch(类java.lang.arithmetricException,catchCalc)

defined ( )

此函数有两个用途:

1.检查指定符号是否已在任意范围内定义。
Example 1

ok = defined("X") //ok evaluates to false
X = 100
ok = defined("X") //ok evaluates to true
X = null
ok = defined("X") //ok evaluates to true

如果从函数中调用,则defined()函数无法识别局部变量。例如:

a = "hello"
isDefA = defined("a") //isDefA is true

function hi()
{
	b = "hi"
	isDefB = defined("b") //isDefB is false
}
hi()

2.检查类的可用性。
Example 2

ok = defined("Window") //ok evaluates to false
import("com.datasweep.compatibility.ui.Color")
ok = defined("Color") //ok evaluates to true

class ( <class_name> )

此函数用于检查是否存在具有指定名称的类。如果类存在,则返回类对象。否则,它将返回null。

ok = class("com.datasweep.client.compatibility.Account") //returns the class 

quit ()

此函数用于终止对当前事件脚本的求值。

sleep (int msec)

此函数使当前执行的线程在执行下一条语句之前暂停指定的毫秒数。

CreateObject (String ProgId)

此函数是Microsoft Visual Basic函数CreateObject()的包装器,可用于创建指定应用程序类型的对象。例如:

xlApp=CreateObject(“Excel.Application”)//xlApp是Microsoft Excel应用程序。

有关此函数的详细信息,请参阅Microsoft Visual Basic帮助。

println (Object objects, …))

运行窗体时,此函数在调试窗口中打印对象的字符串或字符串表示形式
Example

println("UnitSaved")

println(vector.size())

a = [1,2,3]
println(a)

hex (Object integerOrByteArray)

此函数返回由指定整数或字节数组构造的十六进制格式字符串

//a evaluates to 310e
a = hex(12558)

数组/集合

数组创建

Example 1

arrArray1 = createArray(2)

arrArray1[0] = "Dog"

arrArray1[1] = 1.1

Example 2

list = createArray(2)

for (i=0; i<2; i++){

list[i]= i;

}

Example 3

arrArray1 = createArray(2)

arrArray1 = ["Cat",2]

数组连接

Example

arrArray1 = createArray(1)
arrArray1[0] = 1.1

arrArray2 = createArray(2)
arrArray2[0] = "Dog"
arrArray2[1] = 9

arrMyArray = arrArray1 + arrArray2

The contents of arrMyArray are [1.1,Dog,9].

多维数组

Example 1

arrArray1 = createArray(2)
arrArray1[0] = 1.1
arrArray1[1] = "Dog"

arrArray2 = createArray(2)
arrArray2[0] = "0"
arrArray2[1] = "1"

arrNewArray = createArray(2)
arrNewArray[0] = arrArray1
arrNewArray[1] = arrArray2
//The contents of arrNewArray are [[1.1,Dog],[0,1]].

Example 2

arrArray1 = createArray(2)
arrArray1[0] = 1.1
arrArray1[1] = "Dog"

arrArray2 = createArray(2)
arrArray2[0] = "0"
arrArray2[1] = arrArray1[]
//The contents of arrArray2 are [0,[1.1,Dog]].

数组长度

length = arrArray1.length

填充数组

Example

arrArray1 = createArray(3)
arrArray1 = ["Cat",2,1.1]
arrArray1[0] = "Dog"
//The contents of arrArray1 are ["Dog",2,1.1].

从数组中获取值

•< array > [ < index > …]
返回处的数组元素。
•< array > [ < startIndex > …]
返回包含原始数组元素子集的辅助数组。元素子集从开始,一直到数组的最后一个元素。
•< array > [ < startIndex > … < finishIndex > ]
返回包含原始数组元素子集的辅助数组。元素子集从开始,包含小于等于的元素。
Example:

arrArray1 = createArray(4)
arrArray1 = ["Cat",2,1.1,"Dog"]
animalType = arrArray1[0]
moreValues = arrArray1[1..]
lastValues = arrArray1[2..3]

The variable animalType is a String, Cat.
The contents of moreValues are [2,1.1,“Dog”].
The contents of lastValues are [1.1,“Dog”].

集合

list = list()
list.add(1)
list.add(2)
printAll(list)

list2 = class java.util.ArrayList()
list2.add(11)
list2.add(22)
printAll(list2)

vec = vector()
vec.add("V1")
vec.add("V2")
printAll(vec)

htOne = hashtable()
htOne.put("Length", 10.12)
htOne.put("Width", 11.45)
htOne.put("Height", 34.23)
printAll(htOne)

ht2 = class java.util.HashMap()
ht2.put("Length2", 10.12)
ht2.put("Width2", 11.45)
ht2.put("Heigh2t", 34.23)
printAll(ht2)

数据类型

数据类型概述

以下数据类型在Process Designer脚本语言中可用。声明基元变量时,它将转换为相应的基元对象。

例子:
在声明中:
a=1
a转换为
Java.Lang.Integer.a
在这里插入图片描述

数据类型转换

可以使用Java方法转换基元类型,例如:

•toString()

•toHexString()

•toOctalString()

•toCharArray()

•toBinaryString()

•doubleToLongBits()

•floatToIntBits()

此外,还有许多函数和方法允许您转换数据类型:

•stringToInt()

•stringToDouble()

•stringToBoolean()

•stringToBigDecimal()

表达式

变量声明

变量不必声明。当解释器读取赋值语句时,变量会在其作用域内自动创建,并且可以绑定到任何类型的对象。

Example 1

newBoolean = true
newChar = 'A'
newString = "abc123"
newInt = -1
newDouble = 4.2345e+3
newNull = null

获取子字符串

可以从字符串中检索子字符串。

<string>[<index>]
<string>[<startIndex><endIndex>]

Example 1

w = "123456"
charOne = w[1]

变量charOne的值是2。

Example2

w = "123456"
nextString = w[1..]
anotherString = w[1..3]

变量nextString是字符串值23456。
变量anotherString是字符串值234。

instanceof

您可以使用instanceof来确定对象是否是某个类的实例。

instanceof

如果是的实例,则返回true,否则返回false。

Example

bool = "Hello" instanceof class java.lang.String

The variable bool is true: "Hello" is a String.

条件流

  • if-else
newArray = [1, 2, 3]
if (newArray.length > 5){
arraySize = "Large"
} else if (newArray.length > 4){
arraySize = "Medium"
} else {
arraySize = "Small"
}
  • foreach
sum = 0
vec = vector()
vec.addElement(1)
vec.addElement(2)
vec.addElement(3)

foreach i (vec.elements()) {
  sum = sum + i
}
  • while
sum = 5
while (sum > 0){
sum = sum - 1
}
1.1.4.	for
j = 0
for (i = 0; i < 5; ++i){
j = j + i
}
  • switch
month = 8
switch (month) {
case 1:  println("January"); break
case 2:  println("February"); break
case 3:  println("March"); break
case 4:  println("April"); break
case 5:  println("May"); break
case 6:  println("June"); break
case 7:  println("July"); break
case 8:  println("August"); break
case 9:  println("September"); break
case 10: println("October"); break
case 11: println("November"); break
case 12: println("December")
}
  • break
for (i = 0; i < 5; i++){
if (i == 2){
       break // exits the loop when i = 2
}
println(i)
}
  • continue
for (i = 0; i < 5; i++){
	if (i == 2){
		continue
	}
	println(i)
}
  • return

使用return语句终止当前脚本(事件)
通过使用获取值的返回形式,可以向调用事件/函数的语句返回值
return < expression >
不带的return等价于return null。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值