AMX语法.docx
- 文档编号:4691501
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:18
- 大小:31.37KB
AMX语法.docx
《AMX语法.docx》由会员分享,可在线阅读,更多相关《AMX语法.docx(18页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AMX 语法
![提示](https://static.bdocx.com/images/bang_tan.gif)