AMX AXCENT3编程案例
PROGRAM_NAME='BEIJING 15-07-2000 TRAINING 2' (*程序文件名,最后修改日期、时间*)<br>(* DATE:07/15/00 TIME:18:14:34 *)<br>
(***********************************************************)<br>
(* System Type : 系统类型 *)<br>
(***********************************************************)<br>
(***********************************************************)<br>
(* DEVICE NUMBER DEFINITIONS GO BELOW *)<br>
(***********************************************************)<br>
DEFINE_DEVICE (*定义_设备号*)<br>
<br>
PROJ=1 (*定义投影机_1#*)<br>
RELAY=7 (*定义继电器_7#*)<br>
VCD=8 (*定义VCD_8#*)<br>
VOL=85 (*定义调音合_85#*)<br>
WP=87 (*定义墙身按键_87*)<br>
<br>
TP=128 (*定义触摸屏_128#*)<br>
<br>
DEFINE_CONNECT_LEVEL (*定义拉条与设备值相关联*)<br>
(TP,1,VOL,1,VOL,2) (*定义TP,1分别VOL,1T和VOL,2相关联*)<br>
<br>
(***********************************************************)<br>
(* CONSTANT DEFINITIONS GO BELOW *)<br>
(***********************************************************)<br>
DEFINE_CONSTANT (*定义_常量*)<br>
<br>
SCREEN_UP_B=1 (*定义电动幕_向上_按键=1*)<br>
SCREEN_STOP_B=2 (*定义电动幕_停止_按键=2*)<br>
SCREEN_DOWN_B=3 (*定义电动幕_向下_按键=3*)<br>
<br>
SCREEN_UP_FB=101 (*定义电动幕_向上_按键反馈=101*)利用RELAY7的9~255空余的地址<br>
SCREEN_STOP_FB=102 (*定义电动幕_停止_按键反馈=102*) 存储反馈信息<br>
SCREEN_DOWN_FB=103 (*定义电动幕_向下_按键反馈=103*)<br>
<br>
PLAY_B=11 (*定义播放_按键=11*)<br>
STOP_B=12 (*定义停止_按键=12*)<br>
PAUSE_B=13(*定义暂停_按键=13*)<br>
SKIP_FWD_B=14 (*定义跳转_快进_按键=14*)<br>
SKIP_REW_B=15 (*定义跳转_快退_按键=15*)<br>
SCAN_FWD_B=16 (*定义搜索_快进=16*)<br>
SCAN_REW_B=17 (*定义搜索_快退_按键=17*)<br>
POWER_B=19 (*定义电源_按键=19*)<br>
<br>
VOL_UP_B=21 (*音量_增加_按键=21*)<br>
VOL_DOWN_B=22 (*音量_减少_按键=22*)<br>
VOL_MUTE_B=23 (*音量_静音_按键=23*)<br>
VOL_SLIDER=24 (*音量_拉条按钮号=24*)<br>
VOL_PRESET_B=25 (*音量_预置_按键=25*)<br>
<br>
PROJ_ON_B=31 (*投影机_开_按键=21*)<br>
PROJ_OFF_B=32 (*投影机_关_按键=21*)<br>
PROJ_VIDEO_B=33 (*投影机_切换视频_按键=21*)<br>
PROJ_RGB_B=34 (*投影机_切换VGA_按键=21*)<br>
<br>
PROJ_ON_FB=104 (*投影机_开_按键反馈=21*)<br>
PROJ_OFF_FB=105 (*投影机_开_按键反馈=21*)<br>
<br>
(***********************************************************)<br>
(* VARIABLE DEFINITIONS GO BELOW *)<br>
(***********************************************************)<br>
DEFINE_VARIABLE (*设置变量*)<br>
<br>
CURRENT_VOL_LEVEL (*定义音量值变量*)<br>
PRESET_VOL_LEVEL<br>
STORE_MODE<br>
PROJ_BUSY (*定义投影机输入端子*)<br>
<br>
<br>
(***********************************************************)<br>
(* LATCHING DEFINITIONS GO BELOW *) <br>
(***********************************************************)<br>
DEFINE_LATCHING<br>
<br>
(***********************************************************)<br>
(* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *)<br>
(***********************************************************)<br>
DEFINE_MUTUALLY_EXCLUSIVE (*定义互锁*)<br>
<br>
(..) (*定义电动幕上_停_下按钮反馈互锁*)<br>
(,,)<br>
(..)<br>
(,) (*定义投影机开_关按钮反馈互锁*)<br>
<br>
(***********************************************************)<br>
(* SUBROUTINE DEFINITIONS GO BELOW *) (*定义子程序*)<br>
(***********************************************************)<br>
(*当在IF判断语句里用OR时必须在DEFINE_START语句里将其另一种状态先置为开,*)<br>
(*否则在第一次的起动时其按键会没有响应*)<br>
DEFINE_CALL 'SCREEN UP' (*定义电动幕_向上子程序为"SCREEN UP"*)<br>
{<br>IF (NOT) (*判断电动幕向上反馈铵钮不是开则运行以下程序*)<br>{<br>CANCEL_WAIT 'SCREEN WAIT' (*取消等待“SCREEN WAIT”命令*)<br>ON (*将电动幕向上反馈按钮置为开*)<br>OFF (*将继电器1置为关*)<br>OFF (*将继电器2置为关*)<br>WAIT 5 (*等待0.5秒执行下行程序*)<br>{<br>ON (*将继电器1置为开*)<br>}<br>
(*下面的一段程序是执行屏幕下降10秒钟后将继电器1,2关闭,这样可防止继电器长时间处于通电状态*)<br>WAIT 100 'SCREEN WAIT' (*等待10秒,并将其定义为‘SCREEN WAIT’子程序*)<br>{<br>OFF (*将继电器1置为关*)<br>OFF (*将继电器2置为关*)<br>ON (*将电动幕停止反馈按钮置为开*)<br>}<br>}<br>
}<br>
<br>
DEFINE_CALL 'SCREEN STOP' (*定义电动幕_停止子程序为"SCREEN UP"*)<br>
{<br>ON (*将电动幕停止反馈按钮置为开*)<br>OFF (*将继电器1置为关*)<br>OFF (*将继电器2置为关*)<br>
}<br>
<br>
DEFINE_CALL 'SCREEN DOWN' (*定义电动幕_下降子程序为"SCREEN DOWN"*)<br>
{<br>IF (NOT) (*判断电动幕向下反馈铵钮不是开则运行以下程序*) <br>{<br>CANCEL_WAIT 'SCREEN WAIT' (*取消等待“SCREEN WAIT”命令*)<br>ON (*将电动幕向下反馈按钮置为开*)<br>OFF (*将继电器1置为关*)<br>OFF (*将继电器2置为关*)<br>WAIT 5 (*等待0.5秒执行下行程序*)<br>{<br>ON (*将继电器2置为开*) 这时是先将非供电继电器打开<br>WAIT 1 (*等待0.1秒) 等待0.1秒使非供电继电器动作完成<br>ON (*将继电器1置为开*) 再将供电继电器打开<br>}<br>WAIT 100 'SCREEN WAIT' (*等待10秒, 并将其定义为’SCREEN WAIT’子程序*)<br>{<br>OFF (*将继电器1置为关*)<br>OFF (*将继电器2置为关*)<br>ON (*将电动幕停止反馈按钮置为开*)<br>}<br>}<br>
}<br>
<br>
(***********************************************************)<br>
(* STARTUP CODE GOES BELOW *)<br>
(***********************************************************)<br>
DEFINE_START (*设定初使状态*)<br>
<br>
SEND_COMMAND PROJ,'SET BAUD 19200,N,8,1' (*向投影机发射通信设置指令*)<br>
PROJ_BUSY=0<br>
<br>
ON (*将电动幕反馈按钮预置为开*)<br>
PRESET_VOL_LEVEL=50 (*开机预置音量为50*)<br>
<br>
CREATE_LEVEL VOL,1,CURRENT_VOL_LEVEL (*将VOL1路值送到CURRENT_VOL_LEVEL 变量*)<br>
<br>
(***********************************************************)<br>
(* THE ACTUAL PROGRAM GOES BELOW *)(*主程序*)<br>
(***********************************************************)<br>
DEFINE_PROGRAM (*主程序*)<br>
<br>
PUSH (*当按下触摸屏(TP),电动幕上升键(SCREEN_UP_B)执行下面的程序*)<br>
PUSH(*当按下墙身面板(WP),电动幕上升键(SCREEN_UP_B)执行下面的程序*)<br>
{<br>CALL 'SCREEN UP' (*用CALL命令调用电动幕上升子程序’SCREEN UP’*)<br>
}<br>
<br>
PUSH(*当按下触摸屏(TP),电动幕停止键执行下面的程序*)<br>
PUSH(*当按下触摸屏的电动幕停止键执行下面的程序*)<br>
{<br>CALL 'SCREEN STOP' (*用CALL命令调用电动幕停止子程序’SCREEN STOP’*)<br>
}<br>
<br>
PUSH(*当按下触摸屏的电动幕下降键执行下面的程序*)<br>
PUSH(*当按下触摸屏的电动幕下降键执行下面的程序*)<br>
{<br>CALL 'SCREEN DOWN' (*用CALL命令调用电动幕下降子程序’SCREEN DOWN’*)<br>
}<br>
(*以下的赋值语句必须放在外面,因如放在PASH语句里面,当程序下一次扫描程序时,将无法执行里面的赋值语句,即触摸屏上的按键会全部亮起来,这是因为当按其它键时其反馈值虽然已变,但赋给触摸屏的语句无法执行所产生的。*)<br>
= (*将继电器的电动幕下降反馈值送给触摸屏电动幕下降按钮*)<br>
=(*将继电器的电动幕上升反馈值送给触摸屏电动幕上升按钮*)<br>
=(*将继电器的电动幕停止反馈值送给触摸屏电动幕停止按钮*)<br>
<br>
=(*将继电器的电动幕下降反馈值送给墙身面板电动幕下降按钮*)<br>
=(*将继电器的电动幕上升反馈值送给墙身面板电动上升降按钮*)<br>
=(*将继电器的电动幕停止反馈值送给墙身面板电动幕停止按钮*)<br>
<br>
(*<br>
PUSH<br>
{<br>PULSE<br>PULSE<br>
}<br>
<br>
PUSH<br>
{<br>PULSE<br>PULSE<br>
}<br>
<br>
PUSH<br>
{<br>PULSE<br>PULSE<br>
}<br>
<br>
PUSH<br>
{<br>SET_PULSE_TIME(1) (*设定PULSE发送时间为0.1秒*) <br>PULSE<br>SET_PULSE_TIME(5) (*设定PULSE初使状态为0.5秒*)<br>PULSE<br>
}<br>
<br>
PUSH<br>
{<br>SET_PULSE_TIME(1)<br>PULSE<br>SET_PULSE_TIME(5)<br>PULSE<br>
}<br>
<br>
PUSH<br>
{<br>TO<br>TO<br>
}<br>
<br>
PUSH<br>
{<br>TO<br>TO<br>
}<br>
*)<br>
<br>
(*系统调用‘CD2’子程序(设备为VCD,从触摸屏输入,播放键,停止键,……,0(为无按键)*)<br>
SYSTEM_CALL 'CD2' (VCD,TP,PLAY_B,STOP_B,PAUSE_B, <br>SKIP_FWD_B,SKIP_REW_B,SCAN_FWD_B,SCAN_REW_B,0)<br>
(*注:PLAY_B,STOP_B等按钮名必须在定义常量内首先定义才可使用。*) <br>
<br>
<br>
PUSH (*当按下解摸屏的电源键执行下面程序*)<br>
{<br>PULSE (*发送VCD端口的第9个红外码*)<br>PULSE (*反馈已接收到指令到触摸屏电源按键*)<br>
}<br>
<br>
PUSH (*当按下触摸屏音量上升键执行下面程序*)<br>
{<br>OFF (*关闭调音盒的3通道*)<br>TO (*根据按下键的时间向上调节调音盒的1和2路音量*)<br>TO (*根据按下键的时间显示触摸屏音量上调按钮*)<br>
}<br>
<br>
PUSH(*当按下触摸屏音量下调键执行下面程序*)<br>
{<br>OFF(*关闭VOL3通道*)<br>TO (*根据按下键的时间向下调节调音盒的1和2路音量*)<br>TO(*根据按下键的时间显示触摸屏音量下调按钮*)<br>
}<br>
<br>
PUSH(*当按下触摸屏静音键执行下面程序*)<br>
{<br>=NOT (*将调音盒VOL3的值取反*)<br>
}<br>
= (*将VOL3的值赋给触摸屏的静音按钮*)<br>
<br>
PUSH (*当按下触摸屏的音量滑条时执行下面的程序*)<br>
{<br>OFF (*关闭VOL3通道*)<br>
}<br>
<br>
PUSH (*当按下触摸屏预置按时执行下面的程序*)<br>
{<br>STORE_MODE=0 (*将变量STORE_MODE置为0*)<br>WAIT 20 'STORE PRESET' (*等待2秒后执行下面程序,并定义为’STORE PRESET’*)<br>{<br>STORE_MODE=1 (*将变量STORE_MODE置为1*)<br>SEND_COMMAND TP,'ADBEEP' (*要求触摸屏发一个声音,告知已完成命令*)<br>}<br>
}<br>
<br>
RELEASE (*当长时间按下触摸屏音量重置键执行下面的程序*)<br>
{<br>CANCEL_WAIT 'STORE PRESET' (*取消等待‘STORE PRESET’*)<br>IF (STORE_MODE) (*如果STORE_MODEO为真就运行下面的程序*)<br>{<br>PRESET_VOL_LEVEL=CURRENT_VOL_LEVEL (*将变量CURRENT_VOL_LEVEL的值赋给变量PRESET_VOL_LEVEL*)<br>}<br>ELSE (*如果STORE_MODEO为假就运行下面的程序*)<br>{<br>OFF (*关闭VOL3*)<br>SEND_COMMAND VOL,"'P0L',ITOA(PRESET_VOL_LEVEL),'T20'" (*向VOL发射指令将其设定为所需顾预置值*)<br>}<br>
}<br>
(*先将变量CURRENT_VOL_LEVEL的值赋给变量PRESET_VOL_LEVEL,再将其值赋给触摸屏的VOL_PRESET_B按钮*)<br>
=(PRESET_VOL_LEVEL=CURRENT_VOL_LEVEL) <br>
<br>
PUSH (*当按下触摸屏,投影机_开_键时执行下面的程序*)<br>
{<br>IF (NOT) (*如果继电器,投影机_开_反馈按键为非开状态时执行下面的程序*)<br>{<br>IF (NOT) (*如果投影机处于不忙状态*)<br>{<br>ON (*将投影机开反馈键打开*)<br>PROJ_BUSY=1 (*将投影机变量设置为忙状态*)<br>SEND_STRING 1,"'C00',13" (*通过RS-232口向投影机发射关闭电源指令*)<br>WAIT 600 (*等待60秒*)<br>PROJ_BUSY=0 (*将投影机变量设置为不忙状态*)<br>}<br>}<br>
}<br>
<br>
PUSH (*当按下触摸屏,投影机_关_键时执行下面的程序*)<br>
{<br>IF (NOT) (*如果继电器,投影机_关_反馈按键为非开状态时执行下面的程序*)<br>{<br>IF (NOT) (*如果投影机处于不忙状态就执行下面的程序*)<br>{<br>ON (*将投影机关反馈键打开*)<br>PROJ_BUSY=1 (*将投影机变量设置为忙状态*)<br>SEND_STRING 1,"'C01',13" (*通过RS-232口向投影机发射打开电源指令*)<br>WAIT 600 (*等待60秒*)<br>PROJ_BUSY=0 (*将投影机变量设置为不忙状态*)<br>}<br>}<br>
}<br>
= (*将投影机开反馈值赋给触摸屏的开按钮*)<br>
= (*将投影机关反馈值赋给触摸屏的关按钮*)<br>
<br>
<br>
IF() (*如果投影机开反馈值为真就执行下面的程序*)<br>
{<br>PUSH (*当按下触摸屏投影机视频按钮时执行下面程序*)<br>{<br>SEND_STRING 1,"'C07',13" (*向第1个RS-232设备投影机发射转换为视频命令*)<br>PULSE (*将触摸屏的投影机视频按键按下*)<br>}<br>
<br>PUSH (*当按下触摸屏投影机RGB按钮时执行下面程序*)<br>{<br>SEND_STRING 1,"'C05',13" (*向第1个RS-232设备投影机发射转换为RGB命令*)<br>PULSE (*将触摸屏的投影机RGB按键按下*)<br>}<br>
}<br>
<br>
(*注:当用SEND¬_STRING命令向RS-232/485/422(1-6号)设备发送指令时,因其设备的不同,其设备的指令代码也各不相同,所以要先将其设备的编码取得,再按其编码发送相应指令。*)<br>
<br>
(***********************************************************)<br>
(* END OF PROGRAM *)<br>
(* DO NOT PUT ANY CODE BELOW THIS COMMENT *)<br>
(***********************************************************)<br>
<br>
re:小弟也是在AMX编程的入门阶段,希望与大...
小弟也是在AMX编程的入门阶段,希望与大家共同学习.NETLINX的编程晚些时候我再传上来给大家.也希望哪位高人有相关资料也能赐与小弟.re:d
dre:好象AMX的编程公认的较其他难学些啊!不...
好象AMX的编程公认的较其他难学些啊!不象快思聪和快捷、VITI........容易,VITI学起来好象比快思聪更简单些。re:我到觉得如果有C的基础的话,一点不难,关...
我到觉得如果有C的基础的话,一点不难,关键是大脑里的思路要清晰re:没有办法看啊,能给我发一份吗?? hmd...
没有办法看啊,能给我发一份吗?? hmdqx_cn@sina.comre:看不到,努力
看不到,努力re:什么破玩意,有什么!!
什么破玩意,有什么!!re:加我QQ发 一个给我也学习学习。在这等级...
加我QQ发 一个给我也学习学习。在这等级都不够!!:)<br>198939140天创电子莫举澎<br>
南区顾问