(***********************************************************) (* 希望对从事AMX编程的你有所帮助*)
(***********************************************************)
PROGRAM_NAME='BEIJING 15-07-2000 TRAINING 2' (*程序文件名,最后修改日期、时间*)
(* DATE:07/15/00 TIME:18:14:34 *)
(***********************************************************) (* System Type : 系统类型 *)
(***********************************************************) (***********************************************************) (* DEVICE NUMBER DEFINITIONS GO BELOW *)
(***********************************************************) DEFINE_DEVICE (*定义_设备号*)
PROJ=1 (*定义投影机_1#*) RELAY=7 (*定义继电器_7#*) VCD=8 (*定义VCD_8#*) VOL=85 (*定义调音合_85#*) WP=87 (*定义墙身按键_87*)
TP=128 (*定义触摸屏_128#*)
DEFINE_CONNECT_LEVEL (*定义拉条与设备值相关联*)
(TP,1,VOL,1,VOL,2) (*定义TP,1分别VOL,1T和VOL,2相关联*)
(***********************************************************) (* CONSTANT DEFINITIONS GO BELOW *)
(***********************************************************) DEFINE_CONSTANT (*定义_常量*)
SCREEN_UP_B=1 (*定义电动幕_向上_按键=1*) SCREEN_STOP_B=2 (*定义电动幕_停止_按键=2*)
SCREEN_DOWN_B=3 (*定义电动幕_向下_按键=3*)
SCREEN_UP_FB=101 (*定义电动幕_向上_按键反馈=101*)利用RELAY7的9~255空余的地址
SCREEN_STOP_FB=102 (*定义电动幕_停止_按键反馈=102*) 存储反馈信息 SCREEN_DOWN_FB=103 (*定义电动幕_向下_按键反馈=103*)
PLAY_B=11 (*定义播放_按键=11*) STOP_B=12 (*定义停止_按键=12*)
PAUSE_B=13 (*定义暂停_按键=13*)
SKIP_FWD_B=14 (*定义跳转_快进_按键=14*) SKIP_REW_B=15 (*定义跳转_快退_按键=15*)
SCAN_FWD_B=16 (*定义搜索_快进=16*) SCAN_REW_B=17 (*定义搜索_快退_按键=17*) POWER_B=19 (*定义电源_按键=19*)
VOL_UP_B=21 (*音量_增加_按键=21*) VOL_DOWN_B=22 (*音量_减少_按键=22*) VOL_MUTE_B=23 (*音量_静音_按键=23*) VOL_SLIDER=24 (*音量_拉条按钮号=24*) VOL_PRESET_B=25 (*音量_预置_按键=25*)
PROJ_ON_B=31 (*投影机_开_按键=21*) PROJ_OFF_B=32 (*投影机_关_按键=21*)
PROJ_VIDEO_B=33 (*投影机_切换视频_按键=21*) PROJ_RGB_B=34 (*投影机_切换VGA_按键=21*)
PROJ_ON_FB=104 (*投影机_开_按键反馈=21*) PROJ_OFF_FB=105 (*投影机_开_按键反馈=21*)
(***********************************************************) (* VARIABLE DEFINITIONS GO BELOW *)
(***********************************************************) DEFINE_VARIABLE (*设置变量*)
CURRENT_VOL_LEVEL (*定义音量值变量*) PRESET_VOL_LEVEL
STORE_MODE
PROJ_BUSY (*定义投影机输入端子*)
(***********************************************************) (* LATCHING DEFINITIONS GO BELOW *)
(***********************************************************) DEFINE_LATCHING
(***********************************************************) (* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *)
(***********************************************************) DEFINE_MUTUALLY_EXCLUSIVE (*定义互锁*)
([RELAY,SCREEN_UP_FB]..[RELAY,SCREEN_DOWN_FB]) (*定义电动幕上_停_下按钮反馈互锁*)
([7,101],[7,102],[7,103]) ([7,101]..[7,103]) ([RELAY,PROJ_ON_FB],[RELAY,PROJ_OFF_FB]) (*定义投影机开_关按钮反馈互锁*)
(***********************************************************) (* SUBROUTINE DEFINITIONS GO BELOW *) (*定义子程序*)
(***********************************************************)
(*当在IF判断语句里用OR时必须在DEFINE_START语句里将其另一种状态先置为开,*) (*否则在第一次的起动时其按键会没有响应*)
DEFINE_CALL 'SCREEN UP' (*定义电动幕_向上子程序为\
{
IF (NOT[RELAY,SCREEN_UP_FB]) (*判断电动幕向上反馈铵钮不是开则运行以下程序*) {
CANCEL_WAIT 'SCREEN WAIT' (*取消等待“SCREEN WAIT”命令*) ON[RELAY,SCREEN_UP_FB] (*将电动幕向上反馈按钮置为开*) OFF[RELAY,1] (*将继电器1置为关*) OFF[RELAY,2] (*将继电器2置为关*) WAIT 5 (*等待0.5秒执行下行程序*) {
ON[RELAY,1] (*将继电器1置为开*)
}
(*下面的一段程序是执行屏幕下降10秒钟后将继电器1,2关闭,这样可防止继电器长时间处于通电状态*)
WAIT 100 'SCREEN WAIT' (*等待10秒,并将其定义为?SCREEN WAIT?子程序*) {
OFF[RELAY,1] (*将继电器1置为关*) OFF[RELAY,2] (*将继电器2置为关*) ON[RELAY,SCREEN_STOP_FB] (*将电动幕停止反馈按钮置为开*) } }
}
DEFINE_CALL 'SCREEN STOP' (*定义电动幕_停止子程序为\{
ON[RELAY,SCREEN_STOP_FB] (*将电动幕停止反馈按钮置为开*) OFF[RELAY,1] (*将继电器1置为关*) OFF[RELAY,2] (*将继电器2置为关*)
}
DEFINE_CALL 'SCREEN DOWN' (*定义电动幕_下降子程序为\{
IF (NOT[RELAY,SCREEN_DOWN_FB]) (*判断电动幕向下反馈铵钮不是开则运行以下程序*)
{
CANCEL_WAIT 'SCREEN WAIT' (*取消等待“SCREEN WAIT”命令*) ON[RELAY,SCREEN_DOWN_FB] (*将电动幕向下反馈按钮置为开*) OFF[RELAY,1] (*将继电器1置为关*)
OFF[RELAY,2] (*将继电器2置为关*) WAIT 5 (*等待0.5秒执行下行程序*)
{
ON[RELAY,2] (*将继电器2置为开*) 这时是先将非供电继电器打开 WAIT 1 (*等待0.1秒) 等待0.1秒使非供电继电器动作完成 ON[RELAY,1] (*将继电器1置为开*) 再将供电继电器打开
}
WAIT 100 'SCREEN WAIT' (*等待10秒, 并将其定义为?SCREEN WAIT?子程序*) {
OFF[RELAY,1] (*将继电器1置为关*) OFF[RELAY,2] (*将继电器2置为关*)
ON[RELAY,SCREEN_STOP_FB] (*将电动幕停止反馈按钮置为开*) } } }
(***********************************************************) (* STARTUP CODE GOES BELOW *)
(***********************************************************) DEFINE_START (*设定初使状态*)
SEND_COMMAND PROJ,'SET BAUD 19200,N,8,1' (*向投影机发射通信设置指令*) PROJ_BUSY=0
ON[RELAY,SCREEN_STOP_FB] (*将电动幕反馈按钮预置为开*) PRESET_VOL_LEVEL=50 (*开机预置音量为50*)
CREATE_LEVEL VOL,1,CURRENT_VOL_LEVEL CURRENT_VOL_LEVEL 变量*)
(***********************************************************) (* THE ACTUAL PROGRAM GOES BELOW *)(*主程序*)
(***********************************************************) DEFINE_PROGRAM (*主程序*)
PUSH[TP,SCREEN_UP_B] (*当按下触摸屏(TP),电动幕上升键(SCREEN_UP_B)执行下面的程序*)
PUSH[WP,SCREEN_UP_B] (*当按下墙身面板(WP),电动幕上升键(SCREEN_UP_B)执行下面的程序*)
{
CALL 'SCREEN UP' (*用CALL命令调用电动幕上升子程序?SCREEN UP?*) }
PUSH[TP,SCREEN_STOP_B] (*当按下触摸屏(TP),电动幕停止键执行下面的程序*)
(*
将
VOL1
路
值
送
到