《AMX语法功能说明.doc》由会员分享,可在线阅读,更多相关《AMX语法功能说明.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-作者xxxx-日期xxxxAMX语法功能说明【精品文档】特别符号 大括号 多条命令集的结合 中括号 设备,通道号DEVICE,CHANNEL; 数组的定义,如:INTEGER VOLNUMBER; SYSTEM_CALL系统调用,如:SYSTEM_CALL1 COSX (45) ( ) 小括号 IF条件语句;定义互锁语句(* *) 或/* */注释 对程序的必要说明,在程序中不起任何作用/ 注释 单句注释运算符号符号功能符号功能+加号大于*乘号=等于/除号=大于等于&逻辑与AND逻辑与|逻辑或OR逻辑或逻辑异或XOR逻辑异或!逻辑非NOT逻辑非&位逻辑与BAND位逻辑与|位逻辑或BOR位逻辑
2、或位逻辑异或BXOR位逻辑异或位逻辑非BNOT位逻辑非位右移RSHIFT位右移常用关键字ONDEVICE,CHANNEL / 开OFFDEVICE,CHANNEL / 关PULSEDEVICE,CHANNEL / 发送脉冲TO DEVICE,CHANNEL / 按住多长时间执行多长SEND_COMMAND DEV, SEND_STRING DEV, 事件处理:BUTTON_EVENT这个关键字规定了一个按钮事件的处理。它包括按下、释放、持续三个事件,在一个指定的设备通道上,这三个事件与按下和释放按钮是紧密相连的,按钮事件包含一个可选择的反馈信息处理,它在事件处理完成之后立即运行。在任何时候主线
3、运行了,这个反馈信息处理也被执行。定义格式如下:BUTTON_EVENT , PUSH: /* 当按钮按下去时执行的动作 */ RELEASE: /* 当按钮松手时执行的动作 */ HOLD ,REPEAT: /* 当按钮按住时过了多长时间/或每隔多长时间重复执行的动作 */ Example:BUTTON_EVENTTP,1 PUSH: /* 按下触摸屏第一个通道时执行的动作 */ ONRELAY,1 BUTTON_EVENT特性描述表:Property NameTypeDescriptionDEVCHANDevice + ChannelINTEGERChannelDEVDeviceINTEG
4、ERDevice numbertINTEGERDevice port INTEGERSystem numberLONGCurrent hold time in .10 second increments. Note:Button.Holdtime returns are in 1ms increments.DEVSource device of button eventINTEGERSource device numberINTEGERSource device portINTEGERSource device system.DATA_EVENT这个关键字规定了一个数据事件的处理。在一个系统中
5、,触发信息传到主机或者设备的时候,可分为五种类型:1、设备接收到数据字符串 (RS-232 device)2、设备从主机接收到 SEND_COMMAND 命令3、主机检测到设备在线4、主机检测到设备不在线5、被控设备发生错误信息 这些事件仅仅与一个设备相连。定义格式如下:DATA_EVENT COMMAND:/* 设备从主机接收到 SEND_COMMAND 命令 */STRING:/* 设备接收到数据字符串 (RS-232 device) */ ONLINE:/* 主机检测到设备在线 */ OFFLINE:/* 主机检测到设备不在线 */ ONERROR:/* 被控设备发生错误信息 */ Ex
6、ample:DATA_EVENTPROJECT ONLINE: SEND_COMMAND PROJECT, SET_BAUD 19200,N,8,1 DATA_EVENT特性描述表:Property NameTypeDescriptionDEVDeviceINTEGERDevice numberINTEGERDevice portINTEGERSystem numberLONGEvent numberCHAR ArrayText associated with the eventLEVEL_EVENT这个关键字规定了一个拉条事件的处理。在一个指定的设备上,一个拉条的变化作为一个结果被接收,也就
7、是拉条值的改变引发的事件。定义格式如下:LEVEL_EVENT , /* 当拉条发生变化时产生的语句 */Example:LEVEL_EVENT TP, 1 IF ( = COOL_POINT) ONRELAY,FAN ELSE IF ( = HEAT_POINT) OFFRELAY,FAN 注释:表示拉条改变的值。它可以代替一个需要创建的拉条作为一个临时设备。 LEVEL_EVENT特性描述表:Property NameTypeDescriptionDEVLEVDevice + Level that caused the event to occurDEVDeviceINTEGERDevic
8、e numberINTEGERDevice portINTEGERSystem numberINTEGERLevel numberDEVSource Device of Level EventINTEGERSource Device NumberINTEGERSource Device PortINTEGERSource Device SystemNumericLevel value附加:拉条的介绍基本上AMX的触摸屏都具有拉条显示,和拉条控制如:可以用来反应当前灯光的亮度和音量的大小Creating Levels创建读取写入拉条的值读取的值要读取拉条的设备读取拉条数据的变量CREATE_LE
9、VEL device, level number, variable要读取拉条的通道号写入要写入拉条的设备要写入拉条的值SEND_LEVEL TP, 1, VOL_LEVEL要写入拉条的通道号DEFINE_CONNECT_LEVEL这个关键字规定了拉条的联结。定义格式如下:DEFINE_CONNECT_LEVEL /* 设备与拉条相关联 */(device 1,level number 1,device 2,level number 2,.etc.)Example: DEFINE_CONNECT_LEVEL (TP ,1, VOL,1,VOL, 2) / 触摸屏按钮拉条,与音量盒第一路和第二路
10、相关联COMBINE_LEVELS(VIRTUAL1,1,TP1,1,TP2,1,TP3,1) / 建立关联UNCOMBINE_LEVELS(VIRTUAL1,1) / 取消关联 CHANNEL_EVENT这个关键字规定了一个通道事件的处理。在一个指定的设备通道上,一个输出发生改变时,这个处理类型就被调用。定义格式如下: CHANNEL_EVENTDEVICE,CHANNELON:/* 通道打开的事件处理 */OFF:/* 关闭通道的事件处理 */CHANNEL_EVENT特性描述表:Property NameTypeDescriptionDEVDeviceINTEGERDevice numb
11、erINTEGERDevice portINTEGERSystem numberINTEGERDevice channelChannel.SourceDevDEVSource Device of Channel EventINTEGERSource Device NumberINTEGERSource Device PortINTEGERSource Device SystemTIMELINE_EVENT当一个时间线的内置时间相当于在时间数组里指定时间的某一个时,这些事件被生成。定义格式如下:TIMELINE_EVENTtimelineID Example:Define_Device dvPa
12、nel = 128:1:0 DEFINE_VARIABLE LONG TimeArray100 DEFINE_CONSTANT TL1 = 1 TL2 = 2 DEFINE_EVENT TIMELINE_EVENTTL1 /* 捕获所有TL1 的时间线 */ switch(equence) /* 按先后顺序找到相对应的时间 */ case 1: SEND_COMMAND dvPanel, TEXT1-1 1 case 2: SEND_COMMAND dvPanel, TEXT1-1 2 case 3: SEND_COMMAND dvPanel, TEXT1-1 3 case 4: SEND_C
13、OMMAND dvPanel, TEXT1-1 4 case 5: SEND_COMMAND dvPanel, TEXT1-1 5 TIMELINE_EVENTTL2 /* 捕获所有TL2 的时间线 */ switch() /* 按先后顺序找到相对应的时间 */ case 1: SEND_COMMAND dvPanel, TEXT2-2 1 case 2: SEND_COMMAND dvPanel, TEXT2-2 2 case 3: SEND_COMMAND dvPanel, TEXT2-2 3 case 4: SEND_COMMAND dvPanel, TEXT2-2 4 case 5:
14、SEND_COMMAND dvPanel, TEXT2-2 5 DEFINE_PROGRAM PUSHdvPanel,1 TimeArray1 = 1000 TimeArray2 = 2000 TimeArray3 = 3000 TimeArray4 = 4000 TimeArray5 = 5000 TIMELINE_CREATE(TL1,TimeArray,5,TIMELINE_ABSOLUTE, TIMELINE_REPEAT) PUSHdvPanel,2 TimeArray1 = 1000 TimeArray2 = 1000 TimeArray3 = 1000 TimeArray4 =
15、1000 TimeArray5 = 1000 TIMELINE_CREATE(TL2,TimeArray,5,TIMELINE_RELATIVE, TIMELINE_ONCE)继电器控制ONRELAY,1 /* 打开继电器1 */OFFRELAY,1 /* 关闭继电器1 */BUTTON_EVENTTP,1 PUSH: /* 按下触摸屏第一个通道时执行的动作 */ ONRELAY,1 红外控制PULSEDVD,1 /* 正常发出 PLAY 红外码 */ TODVD,6 /* 发出 SCAN-FFWD 向前扫瞄红外码 */BUTTON_EVENTTP,11 PUSH: /* 按下触摸屏第一个通道
16、时DVD播放 */ PULSEDVD,1 串口控制SEND_COMMAND SWITCHER, SET BAUD 9600,N,8,1 /* 设置串口的波特率 为9600,奇偶校验位无,数据位8,停止位1 */SEND_COMMAND SWITCHER, SET BAUD 9600,N,8,1 485 ENABLE /* 启有485的模式,关闭422模式, 如485 DISABLE为关闭485模式启用422模式 */SEND_STRING SWITCHER, ”$AB,$CC,$AD,$5B”SEND_STRING SWITCHER, “CL0I1O2T,$0D” SEND_STRING SW
17、ITCHER, “CL0I1O2T,13” 注释: 发出 AB,CC,AD,5B 的16进制码,所有16进制码以 “$” 所开始 ,所有 SEND_STRING 的内容使用双引号 “ “ 作开始及终止,ASCII 字符串以单引号 括起来,16进制码以 $ 作开头 */模拟量控制SEND_COMMAND D:P:S, P2L100T2BUTTON_EVENTTP, 12 PUSH: /* 按下触摸屏第12通道时设置灯光的亮度 */ SEND_COMMAND D:P:S, P2L100T2 互锁在定义了互锁的通道号中,在同一时间内只能有一个通道号打开打开新的通道时,当前的通道号会被先关闭.DEFI
18、NE_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_PROGRAMTP,1 = RELAY,1 /* 当继电器1开的时候,通道号为1的按钮也跟着开,反之为关 */DEFINE_
19、PROGRAMTP,1 = (POWERONOFF=1)/* 当变量POWERONOFF=1时候,通道号为1的按钮也跟着开,反之为关*/&在程序执行过程中的反馈ONTP,1OFFTP,1/* 在程序执行过程中打开通道号为1的按钮,或关闭通道号为1的按钮 */ 变量 与 等待数据类型KeywordData TypeSignSizeRangeCHARByteUnsigned8-bit0 -255WIDECHARIntegerUnsigned16-bit0 - 65535INTEGERIntegerUnsigned16-bit0-65536SINTEGERIntegerSigned16-bit-32
20、768 to +32768LONGLong IntegerUnsigned32-bit4,294,967,295SLONGLong IntegerSigned32-bit+ 2,147,483,647FLOATFloating PointSigned32-bit1.79769313 E+308 to 2.22507385 E-308DOUBLEDouble Precision Floating PointSigned64-bit3.40282347 E+38 to 1.17549435 E-38数据类型之间的转换ATOI /* 字符转整数 */ITOA /* 整数转字符 */ITOHEX /*
21、 十进制转十六进制 */l 如:CL0I1O1Tl 表示音视频输入第一路切换到输出第一路表现类型变量的的分类型可分为 NON_VOLATILE, VOLATILE or PERSISTENT.NON_VOLATILE 存储在不可变内存中,当系统关闭的时候,它的值是保持不变的;当程序重载时,它的值将被置为0。除非特别注明,不然所有这种类型的变量将存储在不可变内存区域中。 DEFINE_VARIABLE /* 设置变量 */INTEGER CURRENT_VOL_LEVEL /* 定义音量值变量 */VOLATILE存储在可变内存中,当系统关闭的时候,它的值就会丢失;它的使用相当灵活,适合存储大型
22、数据。 -DEFINE_VARIABLE /* 设置变量 */VOLATILE INTEGER CURRENT_VOL_LEVEL /* 定义音量值变量 */PERSISTENT存储在不可变内存中,程序第一次加载时,其值将被初始成0。当系统关闭或重载,它的值不变;当与它相关的变量值发生变化时,它的值将丢失。DEFINE_VARIABLE /* 设置变量 */PERSISTENT INTEGER CURRENT_VOL_LEVEL /* 定义音量值变量 */CONSTANT常量DEFINE_CONSTANT DLP_ON_FB =201 DLP_OFF_FB =202局部变量和全局变量变量可分为
23、两种类型: Local scope: 局部变量,只能使用在子程序中或者声名的某个函数当中 LOCAL_VAR INTEGER n Global scope: 全局变量,可以在程序的任何一个位置使用 INTEGER m WAIT& CANCEL_WAIT 这两个关键字分别规定了一个时间的延时和取消。定义格式如下:WAIT time /* 延迟 */CANCEL_WAIT /* 取消延迟 */ 可以通过Wait 指令来延迟程序的执行Example:Wait 50 ONRELAY, 1Wait 50 LIGHT OFF /* 延迟5秒再关闭继电1 */ OFFRELAY, 1Wait 50 LIGH
24、T ON /* 延迟5秒再关闭继电1 */ OFFRELAY,1CANCEL_WAIT LIGHT ON /* 取消延迟 */条件语句Conditionals条件语句(受限制的条件语句)IF (conditional expression) /* 判断条件表达式 */ /* 执行语句1 */注释:判断条件(conditional expression)是否为真,如果是则执行语句1 IF (conditional expression) /* 判断条件表达式 */* 执行语句1 */ELSE /* 执行语句2 */注释:判断条件(conditional expression)是否为真,如果是则执
25、行语句1,否则执行语句2 IF (conditional expression) /* 执行语句1 */ELSE IF (conditional expression) /* 执行语句2 */ELSE /* 执行默认语句*/Example:BUTTON_EVENTTP,1 PUSH: IF(X=1) ONRELAY,1 ELSE IF(X=2) ONRELAY,2 ELSE ONRELAY,3 SELECTACTIVE条件语句SELECT ACTIVE (conditional expression 1): / 执行语句1 ACTIVE (conditional expression 2):
26、/ 执行语句2 ACTIVE (conditional expression 3): / 执行语句3 / .等等. ACTIVE (1): / 执行默认语句Example: BUTTON_EVENTTP,1 PUSH: SELECT ACTIVE (X=1): ONRELAY,1 ACTIVE (X=2): ONRELAY,2 ACTIVE (X=3): ONRELAY,3 ACTIVE (1):ONRELAY,4 Switch.Case条件语句SWITCH (X) CASE 10: /* 如果值等于10时,此语句被执行 */ CASE 11: /* 如果值等于11时,此语句被执行 */ DE
27、FAULT: /* 如果值不等于10或11时,此语句被执行 */ 子程序的调用调用子程序DEFINE_CALL (P1,P2,.) /* 子程序的主体 */ Example:DEFINE_CALL SCREEN STOP /* 定义电动幕_停止子程序为SCREEN UP */ ONRELAY,SCREEN_STOP_FB / 将电动幕停止反馈按钮置为开 OFFRELAY,1 / 将继电器1置为关 OFFRELAY,2 / 将继电器2置为关 调用函数 定义格式:DEFINE_FUNCTION FnName(Param1,Param2,.) /* 要执行的语句 */Example:/* 定义一个函数 */DEFINE_FUNCTION INTEGER ReadBuffer(CHAR Buffer, INTEGER BufSize) INTEGER nBytes = 0 / 函数类型初始化为0 /* 要执行的函数语句 */ RETURN nBytes / 返回该函数类型【精品文档】
限制150内