AMX语法.docx

上传人:b****6 文档编号:4691501 上传时间:2022-12-07 格式:DOCX 页数:18 大小:31.37KB
下载 相关 举报
AMX语法.docx_第1页
第1页 / 共18页
AMX语法.docx_第2页
第2页 / 共18页
AMX语法.docx_第3页
第3页 / 共18页
AMX语法.docx_第4页
第4页 / 共18页
AMX语法.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

AMX语法.docx

《AMX语法.docx》由会员分享,可在线阅读,更多相关《AMX语法.docx(18页珍藏版)》请在冰豆网上搜索。

AMX语法.docx

AMX语法

特别符号

{}大括号多条命令集的结合

[]中括号设备,通道号[DEVICE,CHANNEL];

数组的定义,如:

INTEGERVOL[NUMBER];

SYSTEM_CALL系统调用,如:

SYSTEM_CALL[1]'COSX'(45)

()小括号IF条件语句;定义互锁语句

(**)或/**/注释对程序的必要起任何作用

//注释单句注释

 

运算符号

符号

功能

符号

功能

+

加号

<

小于

减号

>

大于

*

乘号

=

等于

/

除号

<=

小于等于

%

模数

>=

大于等于

&&

逻辑与

AND

逻辑与

||

逻辑或

OR

逻辑或

^^

逻辑异或

XOR

逻辑异或

!

逻辑非

NOT

逻辑非

&

位逻辑与

BAND

位逻辑与

|

位逻辑或

BOR

位逻辑或

^

位逻辑异或

BXOR

位逻辑异或

~

位逻辑非

BNOT

位逻辑非

<<

位左移

LSHIFT

位左移

>>

位右移

RSHIFT

位右移

 

常用关键字

ON[DEVICE,CHANNEL]//开

OFF[DEVICE,CHANNEL]//关

PULSE[DEVICE,CHANNEL]//发送脉冲

TO[DEVICE,CHANNEL]//按住多长时间执行多长

SEND_COMMANDDEV,''

SEND_STRINGDEV,''

事件处理:

BUTTON_EVENT

这个关键字规定了一个按钮事件的处理。

它包括按下、释放、持续三个事件,在一个指定的设备通道上,这三个事件与按下和释放按钮是紧密相连的,按钮事件包含一个可选择的反馈信息处理,它在事件处理完成之后立即运行。

在任何时候主线运行了,这个反馈信息处理也被执行。

定义格式如下:

BUTTON_EVENT[,]

{

PUSH:

{

/*当按钮按下去时执行的动作*/

}

RELEASE:

{

/*当按钮松手时执行的动作*/

}

HOLD[

{

/*当按钮按住时过了多长时间/或每隔多长时间重复执行的动作*/

}

}

Example:

BUTTON_EVENT[TP,1]

{

PUSH:

/*按下触摸屏第一个通道时执行的动作*/

{

ON[RELAY,1]

}

}

BUTTON_EVENT特性描述表:

PropertyName

Type

Description

Button.Input

DEVCHAN

Device+Channel

Button.Input.Channel

INTEGER

Channel

Button.Input.Device

DEV

Device

Button.Input.Device.Number

INTEGER

Devicenumber

Button.Input.Device.Port

INTEGER

Deviceport

Button.Input.Device.System

INTEGER

Systemnumber

Button.Holdtime

LONG

Currentholdtimein.10secondincrements.Note:

Button.Holdtimereturnsarein1msincrements.

Button.SourceDev

DEV

Sourcedeviceofbuttonevent

Button.SourceDev.Number

INTEGER

Sourcedevicenumber

Button.SourceDev.Port

INTEGER

Sourcedeviceport

Button.SourceDev.System

INTEGER

Sourcedevicesystem.

DATA_EVENT

这个关键字规定了一个数据事件的处理。

在一个系统中,触发信息传到主机或者

设备的时候,可分为五种类型:

1、设备接收到数据字符串(RS-232device)

2、设备从主机接收到SEND_COMMAND命令

3、主机检测到设备在线

4、主机检测到设备不在线

5、被控设备发生错误信息

这些事件仅仅与一个设备相连。

定义格式如下:

DATA_EVENT[]

{

COMMAND:

{

/*设备从主机接收到SEND_COMMAND命令*/

}

STRING:

{

/*设备接收到数据字符串(RS-232device)*/

}

ONLINE:

{

/*主机检测到设备在线*/

}

OFFLINE:

{

/*主机检测到设备不在线*/

}

ONERROR:

{

/*被控设备发生错误信息*/

}

}

Example:

DATA_EVENT[PROJECT]

{

ONLINE:

{

SEND_COMMANDPROJECT,'SET_BAUD19200,N,8,1'

}

}

DATA_EVENT特性描述表:

PropertyName

Type

Description

Data.Device

DEV

Device

Data.Device.Number

INTEGER

Devicenumber

Data.Device.Port

INTEGER

Deviceport

Data.Device.System

INTEGER

Systemnumber

Data.Number

LONG

Eventnumber

Data.Text

CHARArray

Textassociatedwiththeevent

LEVEL_EVENT

这个关键字规定了一个拉条事件的处理。

在一个指定的设备上,一个拉条的变化作为一个结果被接收,也就是拉条值的改变引发的事件。

定义格式如下:

LEVEL_EVENT[,]

{

/*当拉条发生变化时产生的语句*/

}

Example:

LEVEL_EVENT[TP,1]

{

IF(LEVEL.VALUE>=COOL_POINT)

{

ON[RELAY,FAN]

}

ELSEIF(LEVEL.VALUE<=HEAT_POINT)

{

OFF[RELAY,FAN]

}

}

注释:

LEVEL.VALUE表示拉条改变的值。

它可以代替一个需要创建的拉条作为一个临时设备。

LEVEL_EVENT特性描述表:

PropertyName

Type

Description

Level.Input

DEVLEV

Device+Levelthatcausedtheeventtooccur

Level.Input.Device

DEV

Device

Level.Input.Device.Number

INTEGER

Devicenumber

Level.Input.Device.Port

INTEGER

Deviceport

Level.Input.Device.System

INTEGER

Systemnumber

Level.Input.Level

INTEGER

Levelnumber

Level.SourceDev

DEV

SourceDeviceofLevelEvent

Level.SourceDev.Number

INTEGER

SourceDeviceNumber

Level.SourceDev.Port

INTEGER

SourceDevicePort

Level.SourceDev.System

INTEGER

SourceDeviceSystem

Level.Value

Numeric

Levelvalue

附加:

拉条的介绍

基本上AMX的触摸屏都具有拉条显示,和拉条控制

如:

可以用来反应当前灯光的亮度和音量的大小

CreatingLevels创建读取写入拉条的值

读取的值

要读取拉条的设备读取拉条数据的变量

CREATE_LEVELdevice,levelnumber,variable

要读取拉条的通道号

写入

要写入拉条的设备要写入拉条的值

SEND_LEVELTP,1,VOL_LEVEL

要写入拉条的通道号

DEFINE_CONNECT_LEVEL

这个关键字规定了拉条的联结。

定义格式如下:

DEFINE_CONNECT_LEVEL/*设备与拉条相关联*/

(device1,levelnumber1,device2,levelnumber2,...etc.)

Example:

DEFINE_CONNECT_LEVEL

(TP,1,VOL,1,VOL,2)//触摸屏按钮拉条,与音量盒第一路和第二路相关联

COMBINE_LEVELS(VIRTUAL1,1,TP1,1,TP2,1,TP3,1)//建立关联

UNCOMBINE_LEVELS(VIRTUAL1,1)//取消关联

CHANNEL_EVENT

这个关键字规定了一个通道事件的处理。

在一个指定的设备通道上,一个输出发生改变时,这个处理类型就被调用。

定义格式如下:

CHANNEL_EVENT[DEVICE,CHANNEL]

{

 ON:

{

  /*通道打开的事件处理*/

}

 OFF:

 {

  /*关闭通道的事件处理*/

}

}

CHANNEL_EVENT特性描述表:

PropertyName

Type

Description

Channel.Device

DEV

Device

Channel.Device.Number

INTEGER

Devicenumber

Channel.Device.Port

INTEGER

Deviceport

Channel.Device.System

INTEGER

Systemnumber

Channel.Channel

INTEGER

Devicechannel

Channel.SourceDev

DEV

SourceDeviceofChannelEvent

Channel.SourceDev.Number

INTEGER

SourceDeviceNumber

Channel.SourceDev.Port

INTEGER

SourceDevicePort

Channel.SourceDev.System

INTEGER

SourceDeviceSystem

TIMELINE_EVENT

当一个时间线的内置时间相当于在时间数组里指定时间的某一个时,这些事件被生成。

定义格式如下:

TIMELINE_EVENT[timelineID]

Example:

Define_Device

dvPanel=128:

1:

0

DEFINE_VARIABLE

LONGTimeArray[100]

DEFINE_CONSTANT

TL1=1

TL2=2

DEFINE_EVENT

TIMELINE_EVENT[TL1]/*捕获所有TL1的时间线*/

{

switch(Timeline.Sequence)/*按先后顺序找到相对应的时间*/

{

case1:

{

SEND_COMMANDdvPanel,"'TEXT1-11'"

}

case2:

{

SEND_COMMANDdvPanel,"'TEXT1-12'"

}

case3:

{

SEND_COMMANDdvPanel,"'TEXT1-13'"

}

case4:

{

SEND_COMMANDdvPanel,"'TEXT1-14'"

}

case5:

{

SEND_COMMANDdvPanel,"'TEXT1-15'"

}

}

}

TIMELINE_EVENT[TL2]/*捕获所有TL2的时间线*/

{

switch(Timeline.Sequence)/*按先后顺序找到相对应的时间*/

{

case1:

{

SEND_COMMANDdvPanel,"'TEXT2-21'"

}

case2:

{

SEND_COMMANDdvPanel,"'TEXT2-22'"

}

case3:

{

SEND_COMMANDdvPanel,"'TEXT2-23'"

}

case4:

{

SEND_COMMANDdvPanel,"'TEXT2-24'"

}

case5:

{

SEND_COMMANDdvPanel,"'TEXT2-25'"

}

}

}

DEFINE_PROGRAM

PUSH[dvPanel,1]

{

TimeArray[1]=1000

TimeArray[2]=2000

TimeArray[3]=3000

TimeArray[4]=4000

TimeArray[5]=5000

TIMELINE_CREATE(TL1,TimeArray,5,TIMELINE_ABSOLUTE,TIMELINE_REPEAT)

}

PUSH[dvPanel,2]

{

TimeArray[1]=1000

TimeArray[2]=1000

TimeArray[3]=1000

TimeArray[4]=1000

TimeArray[5]=1000

TIMELINE_CREATE(TL2,TimeArray,5,TIMELINE_RELATIVE,TIMELINE_ONCE)

}

继电器控制

ON[RELAY,1]/*打开继电器1*/

OFF[RELAY,1]/*关闭继电器1*/

BUTTON_EVENT[TP,1]

{

PUSH:

/*按下触摸屏第一个通道时执行的动作*/

{

ON[RELAY,1]

}

}

红外控制

PULSE[DVD,1]/*正常发出PLAY红外码*/

TO[DVD,6]/*发出SCAN-FFWD向前扫瞄红外码*/

BUTTON_EVENT[TP,11]

{

PUSH:

/*按下触摸屏第一个通道时DVD播放*/

{

PULSE[DVD,1]

}

}

串口控制

SEND_COMMANDSWITCHER,’SETBAUD9600,N,8,1’

/*设置串口的波特率为9600,奇偶校验位无,数据位8,停止位1*/

SEND_COMMANDSWITCHER,’SETBAUD9600,N,8,1485ENABLE’

/*启有485的模式,关闭422模式,如485DISABLE为关闭485模式启用422模式*/

SEND_STRINGSWITCHER,”$AB,$CC,$AD,$5B”

SEND_STRINGSWITCHER,“’CL0I1O2T‘,$0D”

SEND_STRINGSWITCHER,“’CL0I1O2T‘,13”

注释:

发出AB,CC,AD,5B的16进制码,所有16进制码以“$”所开始,所有SEND_STRING的内容使用双引号““作开始及终止,ASCII字符串以单引号‘’括起来,16进制码以$作开头*/

模拟量控制

SEND_COMMANDD:

P:

S,’P2L100T2’

BUTTON_EVENT[TP,12]

{

PUSH:

/*按下触摸屏第12通道时设置灯光的亮度*/

{

SEND_COMMANDD:

P:

S,’P2L100T2’

}

}

互锁

在定义了互锁的通道号中,在同一时间内只能有一个通道号打开

打开新的通道时,当前的通道号会被先关闭.

DEFINE_MUTUALLY_EXCLUSIVE

([RELAY,1],[RELAY,2])

([RELAY,3],[RELAY,4],[RELAY,5])

([RELAY,3]...[RELAY,5])

注释:

继电器1和继电器2两者同一时间内只能打开一个,同样的原理继电器3、4、5三者也只能打开一个,下面两句定义的继电器3、4、5是等值的。

*/

反馈

DEFINE_PROGRAM

这个程序段规定了主线代码。

这段代码不断地被执行(处理输入的数据和提供设

备反馈信息)。

能够实时反应出设备的状态。

如灯的开关。

DEFINE_PROGRAM

[TP,1]=[RELAY,1]

/*当继电器1开的时候,通道号为1的按钮也跟着开,反之为关*/

DEFINE_PROGRAM

[TP,1]=(POWERONOFF=1)

/*当变量POWERONOFF=1时候,通道号为1的按钮也跟着开,反之为关*/

&在程序执行过程中的反馈

ON[TP,1]

OFF[TP,1]

/*在程序执行过程中打开通道号为1的按钮,或关闭通道号为1的按钮*/

变量与等待

数据类型

Keyword

DataType

Sign

Size

Range

CHAR

Byte

Unsigned

8-bit

0-255

WIDECHAR

Integer

Unsigned

16-bit

0-65535

INTEGER

Integer

Unsigned

16-bit

0-65536

SINTEGER

Integer

Signed

16-bit

-32768to+32768

LONG

LongInteger

Unsigned

32-bit

4,294,967,295

SLONG

LongInteger

Signed

32-bit

+2,147,483,647

FLOAT

FloatingPoint

Signed

32-bit

1.79769313E+308to2.22507385E-308

DOUBLE

DoublePrecisionFloatingPoint

Signed

64-bit

3.40282347E+38to1.17549435E-38

数据类型之间的转换

ATOI/*字符转整数*/

ITOA/*整数转字符*/

ITOHEX/*十进制转十六进制*/

●如:

’CL0I1O1T’

●表示音视频输入第一路切换到输出第一路

表现类型

变量的的分类型可分为NON_VOLATILE,VOLATILEorPERSISTENT.

NON_VOLATILE

存储在不可变内存中,当系统关闭的时候,它的值是保持不变的;当程序重载时,它的值将被置为0。

除非特别注明,不然所有这种类型的变量将存储在不可变内存区域中。

DEFINE_VARIABLE/*设置变量*/

INTEGERCURRENT_VOL_LEVEL/*定义音量值变量*/

VOLATILE

存储在可变内存中,当系统关闭的时候,它的值就会丢失;它的使用相当灵活,适合存储大型数据。

-DEFINE_VARIABLE/*设置变量*/

VOLATILEINTEGERCURRENT_VOL_LEVEL/*定义音量值变量*/

PERSISTENT

存储在不可变内存中,程序第一次加载时,其值将被初始成0。

当系统关闭或重载,它的值不变;当与它相关的变量值发生变化时,它的值将丢失。

DEFINE_VARIABLE/*设置变量*/

PERSISTENTINTEGERCURRENT_VOL_LEVEL/*定义音量值变量*/

CONSTANT常量

DEFINE_CONSTANT

DLP_ON_FB=201

DLP_OFF_FB=202

局部变量和全局变量

变量可分为两种类型:

Localscope:

局部变量,只能使用在子程序中或者声名的某个函数当中

LOCAL_VARINTEGERn

Globalscope:

全局变量,可以在程序的任何一个位置使用

INTEGERm

WAIT&CANCEL_WAIT

这两个关键字分别规定了一个时间的延时和取消。

定义格式如下:

WAITtime[‘’]/*延迟*/

CANCEL_WAIT‘’/*取消延迟*/

—可以通过Wait指令来延迟程序的执行

Example:

Wait50

ON[RELAY,1]

Wait50’LIGHTOFF‘/*延迟5秒再关闭继电1*/

OFF[RELAY,1]

Wait50‘LIGHTON‘/*延迟5秒再关闭继电1*/

OFF[RELAY,1]

CANCEL_WAIT’LIGHTON‘/*取消延迟*/

条件语句

Conditionals条件语句(受限制的条件语句)

IF(conditionalexpression)/*判断条件表达式*/

{

/*执行语句1*/

}

注释:

判断条件(conditionalexpression)是否为真,如果是则执行语句1

IF(conditionalexpression)/*判断条件表达式*/

{

/*执行语句1*/

}

ELSE

{

/*执行语句2*/

}

注释:

判断条件(conditionalexpression)是否为真,如果是则执行语句1,否则执行语句2

IF(conditionalexpression)

/*执行语句1*/

ELSEIF(conditionalexpression)

/*执行语句2*/

ELSE

/*执行默认语句*/

Example:

BUTTON_EVENT[TP,1]

{

PUSH:

{

IF(X=1)

ON[RELAY,1]

ELSEIF

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1