第十八章  宏指令(macro)使用说明
宏指令提供了应用程式之外所需的附加功能。在MT8000触摸屏运行时,宏指令可以自动的执行这些命令。它可以担负执行例如复杂的运算、字符串处理和用户与工程之间的交流等功能。本章主要介绍宏指令的语法、如何使用和编辑方法等。希望通过本章的说明,能够使各位快速的掌握EB8000软件提供的强大的宏指令功能。
18.1  宏指令的结构
宏指令是由各种语句组成的。这些语句包含常量、变量和各种运算符号。这些语句放置在特定的顺序位置以便执行后达到一个希望的执行结果。
宏指令的结构一般为以下格式:
一个宏指令必须有一个且只有一个主函数,用来开始宏指令的执行。格式为:
macro_command 函数名称()
end macro_command
变量声明必须放在宏指令语句的前面,否则如果语句放置在变量声明的前面,将会造成宏指令无法编译通过。
局部变量一般用在宏指令主函数或者自定义的子函数中。他的合法性只在指定的函数中有效。
总体变量一般是定义在所有宏指令函数的前面,且它在整个宏指令中均具有效性。在同一个函数中,当局部变量和总体变量被定义为相同的名称时,只有局部变量有效。
下面就是一个简单的宏指令,其中就包含了变量声明和函数调用。
macro_command main()
short pressure = 10 //  局部变量声明
SetData(pressure, “Allen-Bradley DF1”, N7, 0, 1)      //  函数调用
end macro_command
此章节将说明宏指令的语法与编写的方式,包含以下几个部分:
18.2  宏指令的语法
1. 常量与变量
a. 常量
常量是一个可以被各式语句直接使用的固定资料。有如下格式:
下面即为一个简单的常量使用的范例:
macro_command main()
short A, B //  声明A和B为短整型变量
A = 1234
B = 0x12 //  1234 和 0x12 即为常量
end macro_command
b. 变量
变量是程序执行时保存数据的量,在宏指令中,这些数据可以随着宏指令语句执行的结果而改变。
(1) 变量的命名规则
必须以英文字母为开头
变量名称长度不得超过32个字符
系统保留字名称不能作为变量名称
下面为8种不同的变量类型,前5种为有符号数据,后3种为无符号数据。
(2) 变量声明
变量必须在使用前声明,所以,在宏指令中,所有的变量都必须在语句使用前进行声明。声明变量时,先定义变量的类型,后面再跟上变量名称。
如下范例:
int    a
short b, switch
float  pressure
unsigned short  c
(3) 数组声明
宏指令支持一维数组(下标从0开始)。声明数组变量时 ,先定义数组变量的类型,变量名称,接着就是该数组变量元素的个数,元素个数必须放置在“[]”符号中,数组变量的长度为1~4096.,一个宏指令中只支持4096个变量。
如下范例:
int      a[10]
short  b[20], switch[30]
float  pressure[15]
数组的下标最小为0,最大下标为(数组的长度-1)
如下范例:
char data [100] //  数组变量的长度为100
所以:起始的数组元素为“data[0]”,最大下标的数组元素为“data[99]”
(4) 变量和数组的初始化
有两种方法可以让变量初始化
1、使用语句中的赋值语句(=)
如下范例:
int a
float b[3]
a = 10
b[0] = 1
2、声明变量时直接赋值
switch函数用法举例char    a =‘5’, b = 9
数组变量的声明是一个特殊的情况,一个完整的数组被初始化时,可以在数组变量声明时将资料放置在“{}”中,各资料使用逗号分开。
如下所示:
float data[4] = {11, 22, 33, 44} //这样data[0] = 11, data[1] = 22….
c. 运算符号
运算符通常被用来指定资料是如何被操作的,在任何一个语句中,运算符左边的变量结果均依据运算符右边的条件而获得。
移位运算符和位运算符通常被用来操作字符型变量、短整型变量和双整型变量的位。在一个语句中,这些运算符号的优先权是在从该语句的左边到右边依次执行的,即在语句中左边位置的优先执行,依次从左到右执行;
1) 所有运算符号的优先权:
上述所有运算符号的优先权从高到低详细如下所述:
位于圆括号里的运算符号最优先
数学运算符号
移位和位运算符号
比较运算符号
逻辑运算符号
赋值运算符号
2) 关键字
下面的关键字为宏指令保留使用。这些均不能用来作为变量名称、数组名或者函数名称等:+, -, *, /, %, >=, >, <=, <, <>, ==, and, or, xor, not, <<, >>,=, &, |, ^, ~
exit, macro_command, for, to, down, step, next, return, bool, short, int, char, float, void, if, then, else, break, continue, set, sub, end, while, wend, true, false
ACOS、ADDSUM、ASCII2DEC、ASCII2FLOAT、ASCII2HEX、ASIN、ASYNC_TRIG_MACRO、ATAN、BCD2BIN、Beep、BIN2BCD、COS、COT、CRC、CSC、CUBERT、DEC2ASCII、DELAY、FILL、FindDataSamplingDate、FindDataSamplingIndex、FindEventLogDate、FindEventLogIndex、FLOAT2ASCII、GETBIT、GetCTS、GetData、GetDataEx、GetError、HEX2ASCII、HIBYTE、HIWORD、

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。