AMX编程教程_图文

新建主机程序设计文件简介
通过 NetLinx Studio 新建程序

选择 New

选择 Source File,其它的为模块及包含文件设计,我们暂不管它。Workspace Wizard 是一个工程项目管理,可以把整个项目所涉及的文件管理起来,方便您 查找,单独的 Source File 文件也是可以用的,我们先选择 Source File

是否创建新文件,选择 Yes

选择,主机的标准模版,网络型主机则选择 NetLinx Standard Template

输入文件名

选择要保存的路径,按下一步。

点击完成,创建出新文件。

把蓝色的字给收起来,总体上我们可以看出分如下几块:

PROGRAME_NAME 为文件 DEFINE_DEVICE 为定义要控制设计的控制接口 DEFINE_CONSTANT 为定义常量 DEFINE_TYPE 为定义类型文件 DEFINE_VARIABLE 为定义变量

DEFINE_LATCHING 为定义锁住键 DEFINE_MUTUALLY_EXCLUSIVE 为定义互锁 DEFINE_START 定义启动时需要执行的程序 DEFINE_EVENT 为定义事件语句 DEFINE_PROGRAME 为定义实时的程序语句 所有的程序必须放在固定的定义下, 如变量必须放在 DEFINE_VARIABLE 下, 事件 语句必须放在 DEFINE_EVENT

如何设置连接并设置固定 IP
如何实现 NetLinx Studio 软件与中控主机的第一次连接: 我们可以通过如下几种方式来进行连接: 1. 2. 3. 4. TCP/IP COM Moderom USB

由于设备的出厂 IP 地址是设置为 DHCP 的,所以刚开始我们无法用网络来连接, 如果您可以用分配 IP 的式给中控主机分配一个 IP,就可以用刚络连上主机,再 对主机进行固定 IP 设置,就可以直接用网络进行连接,因为通过串口或其它方 式,在遇到大文件时传输得太慢,或者可能因为传输文件太大而导致传输失败。 所以一般我们通常是通过串口对主机进行 IP 设置,再用网络实现传输,那么我 们如何实现设置呢,如下图:

在软件的 Settings??》Master Communication Settings

No Active System Default Setting 是设置软件的连接,Terminal Settings 为设置软件自带的超级终端的连接。 所以我们选择前者, 点击??》 Communication Settings

NetLinx Master 为网络型中控主机,如果不是网络型中控主机则选择 Axcess Master??》Serial 如果对上面显示的 NetLinx- COM1,38400,8,N,1,N 不符合您的设置要求, Edit 按 Settings 进入设置修改

根据您电脑的串口选择 Com Port,自带串口的默认为 COM1,USB 转串口的则为 安装产生的端口号,Baud Rate 默认的为 38400,N,8,1,(主机后面编程端口 8 位拨码开关为前 5 个向下,后 3 个为向下,具体的看设备具体的设置) 最后一直选择 OK 完成。 完成设置之后,您可以在状态栏下面看到如下:

如下显示为:NetLinx-COM1,38400,8,N,1,是不是您想要的设置,如果不是 刚表示您设置的有问题,请重新设置。 如果设置是正确,我们可以检测一下是否能连接上,涮新一下在线列表如下图:

点击 OnLine Tree

点击右键 Refresh System 涮新在线更表

所有系统里面的设置都会显示出来,而且状态栏也相应的变绿。

以上现像足可以表示您的软件已经连中控主机连接上了,如果还是连接不上,可 能您的电脑串口存在被其它程序占用的可能,或者您的连接线有问题。 (连接线 为 23 交叉的连接线)。 接下来我们就可以对中控进行 IP 地址的修改,点击如下图:

点击进入:

选择 Get IP Information 可以获取到主机的 IP 信息,如下图可以对主机进行设 置:

设置完之后,选择 Set IP Information 提示成功,如下图:

点确定,最后重启中控主机,设置完成。

如何定义控制设备接口程序
我们控制每个设备都有对应的设备接口

如:控制灯光窗帘,有相应的继电器接口,控制矩阵有相应的 232 串口,控制 DVD 则有相应的红外接口 要控制这些设备,需要相应的连线的同时,我们也必须清楚,在 AMX 系统编程里 面我们要往哪里发送命令,才能对应的控制到这些设备上来。 在 AMX 系统里面主要涉及到 3 个号,即所谓的 D:P:S D:DEVICE 就是每个设备的设备号;P:PORT 即端口号,每个设备可能又会分为 好几个端口,如 NI3100 有 17 个端口,包括 7 个串口,1 个继电品口,8 个红外 口,1 个 I/O 口,NI2100 则有 9 个端口;S:SYSTEM 即系统号,我们可以大致上 这么说,每台主机可以当成一个系统。 以 NI3100 主机为例: 设备号: 默认设备号为 5001;(可以通过软件进行修改,如 NetLinx Studio) 端口号: 固定死的,1-7 为串号,8 为继电器口,9-16 为红外口,17 为 I/O 口(在 设备的后面版有标记为 Port 几) 系统号: 默认为 1; (可以通过软件进行修改,如 NetLinx Studio,也可以为“0” 表示为本系统,程序所上传的系统) 从上可知我们定义一个串口来控制矩阵,一个继电器口控制灯光,一个触摸屏进 行控制。如下程序:

DEFINE_DEVICE 下定义为 AVSWITCH = 5001:1:1

RELAY TP

= 5001:8:1 = 10001:1:1

AVSWITCH 为自己取的一个名字,目的是来代替 5001:1:1,代表的是第一个串 口,RELAY 也是自己取的名字,目的也是来代替 5001:8:1,代表的是继电器 接口。TP 代表的是触摸屏。它们的同一特点都是遵循 D:P:S 这样的一个规则 来的。这里面有没有空格都无所谓,有空格只是让几行代码看起来比较对齐。如 果一台主机的情况下,都可以写成 5001:1:0,5001:8:0,10001:1:0,因 为 0 代表的是本系统(上面所提到的)。 我们在接下来的程序设计的按钮事件里面可能会出现如下语句: BUTTON_ENENT[TP,1] { PUSH:ON[RELAY,1] } 上面这小段程序的意思是,触发 1 号通道按钮的时候,打开断电器第 1 路。 我们同样也是可以这么写的: BUTTON_ENENT[10001:1:1,1] { PUSH:ON[5001:8:1,1] } 上面两段程序执行的效果是一样的,可定我们定义设备接口其实可以这么理解 为,用自己定义的名字来代替现有的设备端口,这样也有一个好处,如果你改接 口了,只要改定义设备的定义,也不需要全部修改程序里面的设备接口,而且您 通过自己命名的名字,程序的可读性也比较好。 我们刚才说到的 D:P:S 的定义规则,那么我们如何来知道,每个设备的 D,每 个设备的 P,每个设备的 S 呢? D 就是每个设备的设备号,主要分为两种,一种是在硬件上就可以直接设置的, 如触摸屏,在触摸屏的设置菜单上就可以设置了,护展盒,有 8 位拨码开关,通

过二进制算法,算出地址,另一种是直接在软件上就可以设置设备的设备号,每 个设备都是有一个默认的设备号。 P 就是设备的端口号,大部分都是相对固定的,中控主机都有在后面标明着,触 摸屏则可以自己设置。 S 就是系统号,通过软件来设置,在一个系统的情况下,一例写 0,代表本系统, 肯定没错。所有的设备系统号都是跟着所连接的主机定义的。 还有一个更快捷的方法, 把整个系统连接起来, 通过编程软件涮新一下在线列表, 所有的设备号,系统号都会在在线列表里面显示出来。这样您定义设备的时候就 一目了然了。

AMX 源文件的设置
通常我们编译程序文件的时候会生成 2 个文件,一个是 TKN,一个是 TKO,但有些人 多生成了一个 SRC 文件 这个 SRC 文件是怎么来的呢? SRC 文件就是程序在电脑上运行的,可编程的文件 TKN 文件是 AMX 主机上面运行的机器执行文件 TKO 文件主要是用来做模块程序间的调用
TKO 的主要用途是当一个程序分为好几块程序来写的时候,如果是用到 define_module 来调用另 一个文件的时候,可以直接来调用 TKO 文件,而不需要给别人源文件程序,也可做到,自己的程序 不让别人看到代码照样能运行. 从程序的编程角度上来讲,我们知道 AMX 主机和其它各个品牌中控的最大优势是能可上传也能够 下载程序, 如果我们想从一台 NI 的主机上下载程序,如果原来的人编程人员没有上传 SRC 文件的话,我们是 下载不了它的源文件的,下载下来的只是一个空文件,那么以前的那个编程人员就太坏了,不把源 程序上传到上面,但这是软件的默认方式,可见 AMX 厂家更坏,当然还有更更坏的,把源文件上传 了,把文件设置了一长串的密码,虽然你下载下来了,程序还是需要密码才能打开.

以下是关于对编译设置的步骤: 以下是关于对编译设置的步骤:

从软件的设置属性

在 NetLinx Compiler 文件的编程进行设置

Compile With Debug In 代表着,可以在程序里面执行 Debug,可以设置断点程序, 让程序一步步执行 Compile With Source 代表着可以编程程序的时候生成 SRC 文件 Compile With Password Protec 代表着生成的 SRC 文件,需要设置的密码才能打 开

如何实现程序下载
在设置好 NetLinx Studio 软件与主机连接的情况下,步骤如下:

选择 Receive 接收

选择 ADD,添加程序

选择要下载的文件类型,如中控主机的程序,选择 SRC 文件,再选择 ADD 添加文件

选择保存路径,填好文件名,再按保存

输入设备号,端口号,系统号 主机为:0:1:0 (任何主机都一样) 触摸屏为:10001:1:0 (假设触摸屏的设备号是 10001) 红外文件为:5001:9:0(假设主机为 NI3100,从第一个红外端抽红外程序) 可见本例应为 0:1:0 再点 OK 确定

看到下面列表多了 E\Project\Working\Sunkai...这个就是刚设置好保存的文 件信息,Mapping 为 0:1:0,点击 OK 确定

下面新增出现即将要保存的文件信息,连接主机的 IP 为 192.168.1.21

再点击 Receive 进行程序下载

如下图所示为下载程序的信息,下图为下载失败,如果下载成功则会打勾!

下载完成后,到保存的目录下打开程序,如果是主机程序,是 SRC 格式,打开的方 式可以用 NetLinx Studio 来打开

也可以把 SRC 后缀后改成 RAR 后缀名,直接用压缩包的格式打开.

如何对继电器操作程序编写
我们要实现的是把下触摸屏或面板的按钮就实现继电器的开关动作 设备上的继电器接口进行控制,如下图: 下面是定义的一个控制面板和 NI2100 设备上的继电器接口进行控制,如下图:

下面定义了一个自定义变量供下面的方法三使用:

下图功能为: 接的是灯光的控制, 下图功能为:按下按钮 11 打开继电器 3,如果继电器 3 接的是灯光的控制,则 打开灯光, 如果是某设置的电源刚是控制设备的电源开, 则是关闭, 打开灯光, 如果是某设置的电源刚是控制设备的电源开, 按下按钮 12 则是关闭, 的功能为,按一下开,再按一下关,一直循环下去。 按下按钮 13 的功能为,按一下开,再按一下关,一直循环下去。有如下三种方 如下图: 法,如下图:

下面功能为继电器时间顺序的开关, 后面的大括号一定要添加, 下面功能为继电器时间顺序的开关,注意 Wait 后面的大括号一定要添加,它是 能为继电器时间顺序的开关 表示一个命令的集合, 如果不添加程序只跟着一个语句, ON[RELAY, 3]和 表示一个命令的集合, 如果不添加程序只跟着一个语句, ON[RELAY, 和[RELAY, 3] [RELAY, 5]会马上打开 会马上打开, 秒为单位的, 5]会马上打开,10 是 1 秒,它是以 0。1 秒为单位的,所有的时间都是从刚按下 按钮的时候算起的, 20, 按钮的时候算起的,所以第 2 秒应该是 Wait 20,而不是紧接着 Wait 10

下面是触摸屏或按钮状态跟着程序走,看到按钮状态, 下面是触摸屏或按钮状态跟着程序走,看到按钮状态,相应的也就知道了继电 器的开关状态

如何实现矩阵程序编程实例
实现 8X8 矩阵的自由切换,先选择输入源,再选择输出源,可以一次性选择多个 输出源,如下图:

输入:上一排,通道号为 51 至 58

输出:下一排,通道号为 61 至 68 在程序中, 道先定义要控制的设备端口, 需要一个串口, 和一个触摸屏, 如下图:

接下来定义,在程序中需要的变量,一个为记录输入源的 vInput,一个为记录 输出源的 vOutput,一个为记录状态的,vStatus 数组,如下图:

接下来就实现如何执行的程序,如下图:

命令是以 AMX Autopatch 矩阵为例,如第 1 路到第 2 的切换为:‘CL0I1O2T’, 我们只要通过变量切换 1 和 2 的值就可以实现矩阵的自由切换,vStatus 为记录 输入源到输出源的状态,所馈到触摸屏上。 上面的这一步骤已经可以实现程序的运行了, 接下来是实现如何在触摸屏上看到 矩阵的切换状态,按输入 1 的时候我要看到相应的输入出 1 输出到了哪几路来, 如下图:

这样上面的程序就完成了。相关程序下载:

Switch.rar

如何实现调光调音控制
以调光为例,下图为调光的控制界面,包含有 4 个按钮设置灯光亮度的固定值分 别为 100%、60%、30%、0%,1 个接条显示并调节灯光的亮度。

触摸屏的设备号为 128 调光模块设备号为 16 4 个按钮的通道号为 41、42、43、44 1 个拉条的 LEVEL 号为 1 灯光接到调光模块的第 6 路 我们来看一下程序是如何实现 首先定义设备接口

定以记录当前灯光亮度的变量

按钮程序如下:

以 BUTTON44 为例 SEND_COMMAND MC,"‘P6L0T0’"为控制调光模块的命令,注释的为写法不一样, 任取一种. P6 为调光模块的第 6 路 L0 为控制灯光的亮度最暗,0-100 为灯光亮度的值,0 最暗,100 最亮

T0 为产生渐变的时候,0 为无渐变时间,如果为 T5 的话就为渐变 5 秒 SEND_LEVEL TP,1,0 为控制拉条的显示值 1 为拉条的 LEVEL 号,0 为拉条的显示值,显示值为 0-255,0 最小,255 最大 LIGHT_VALUE 为定义的变量来记录前拉条的显示值 拉动拉条控制的程序如下:

拉动拉条时,LEEVEL.VALUE 的值是跟着变化的,所以取出当前的值进而调节灯光 的亮度 *100/255 是把拉条的值从 0-255 转到 0-100 之间才能符合 itoa 为把整型转成字符型 对应的反馈如下:

当值为 100 的时候 41 有反馈 当值为 60 的时候 42 有反馈 当值为 30 的时候 43 有反馈 当值为 0 的时候 44 有反馈 相关程序如下: Level.rar

如何应用 Debug 在调试过程中的用法
如果我们要实时知道程序中自己定义的变量的值是如何变化的,我们可以通过 Debugging 来实时检测变量的值,如果变量的值和你程序执行的不一样,说明您 的程序可能有误。 在 NetLinx Studio 软件里点击如下图:

点击确定。

如上图点击右键。

添加程变量列表里的变量

点击 OK。

显示如上所示,X 的变量就在列表里面实时的显,在这里我们就可以实时知道变 量的值,如果有用到一些需要读取设备状态信息的值时,如 DIS,您就可以知道 设备每根话筒给中控的代码是多少。 根据话筒给的代码就可以知道是哪一根话筒 给过来的信息。
如何上传主机程序

这边我们以 NI-3100 为例来实现如何上传主机程序. 我们通过主机的编程软件来实现和主机的通信进而实现主机程序的上传和下载. 在建立软件与主机之间的通信之后,我们才可以上传程序. 在建立软件与主机之间的通信之后,我们才可以上传程序. 立软件与主机之间的通信之后 程序的上传必须编译,因为主机里面运行的是编译生成的文件,而不是我们电脑里面运行的文件,选择 NetLinx 的编译,编译还会帮你查找错误,如果有错误,编译之后是生不成新的文件的.选择传程序的按钮,如 下图:

点击添加按钮 ADD,选择要添加的类型,如下图:

选择 Other 选择要找的类型文件,如下图

选择要添加文件的类型,主机程序为 TKN 文件,再选择添加,如下图:

选择文件所在的目录,如下图:

选择文件,如下图:

填写设备号,Device Number 传主机程序时为 0,Port Number 为 1,System 为 0,再点 OK,如下图:

再点 OK,如下图:

再点 OK,如下图:

再选择 Send 发送

传输状态如上图,X 为传输失败,打勾为传输正确.

如保实现触摸屏与主机编程通信
触摸屏与主机之间的通信其实原理性的东西是相对比较简单, 在触摸屏的按钮上 都有一个可设置的通道号,如下图:

如上图所示:Channel Port 为 1,Channel Code 为 2,假高触摸屏的设备号为 10001,则这个按钮产生的事件为 BUTTON_EVENT[10001:1:0,2]2 就是 Channel Code 通道号,每个按钮都可以定义通不同的通道号,对应的执行不同的命令语 句,如果两个按钮通道号相同,刚执行相同的命令语句。 如图:

如上图为两个按钮事件,一个表示灯开,一个表示灯关。PUSH 表示为当触摸按 钮的时候产生什么事件,程序写着 ON[RELAY,1]则执行 ON[RELAY,1],程序写 着 OFF[RELAY,1]刚执行 OFF[RELAY,1],不同的按钮执行的程序是不一样的, 但同样是由 BUTTON_ENENT 组成的事件语句,所以触摸屏与主机间的通信其它就 是由很多个按钮事件组合成的程序。


相关文档

AMX基础编程
AMX编程教程完整版
AMX编程案例(编程快速入门)
AMX编程教程 -zhujy09免费共享
AMX编程实例
AMX指令教程
AMX中控编程程序
AMX插件教程
AMX AXCENT3编程案例
AMX编程案例
电脑版