This document contains technical information relating to computer control of the Biamp
Advantage PMX84 Programmable Matrix Switch. This information is intended for
advanced users - in particular for those who wish to develop their own computer
programs to control the PMX84. It is assumed that the reader is an experienced
programmer and has some familiarity with standard programming practices, binary and
hexadecimal numbers, the ASCII character set, asynchronous serial data communications,
and RS-232 interfaces.
Hexadecimal, ASCII-Hex, and "Pseudo-Hex" Numbers
Throughout this document, hexadecimal numbers shall be represented by preceding the
number with "0x". For example: the hexadecimal equivalent of the decimal number 255
is 0xFF.
Individual ASCII characters, except control characters, will be enclosed in single quotes.
For example: the ASCII character 'A' has the hexadecimal value 0x41. The ASCII
"carriage return" control character shall be represented as . An ASCII code chart is
included with this document for your convenience.
When an 8-bit binary data value is being transmitted over a serial data communications
link, it is a common practice to transmit the byte as two "ASCII-hex" characters - one
character represents the most significant nibble of the data value and the other character
represents the least significant nibble (a nibble is 4-bits; half of a byte). Each ASCII-hex
character is in the range of '0' thru '9' or 'A' thru 'F' (from the ASCII code chart, 0x30 thru
0x39 or 0x41 thru 0x46). For example, the hexadecimal equivalent of the decimal
number 61 is 0x3D. To transmit this in an ASCII-hex format, first transmit the ASCII
character '3' (whose hex value is 0x33), followed by the ASCII character 'D' (whose hex
value is 0x44). This is the standard way to transmit an ASCII-hex value. In some cases,
the lower case characters 'a' thru 'f' (0x61 thru 0x66) are accepted in addition to the upper
case letters 'A' thru 'F'.
The Advantage PMX84 does not utilize standard ASCII-hex format. The PMX84
computer commands implement what I call "pseudo-hex" notation (also sometimes
referred to as a "poor man's" ASCII-hex notation). Instead of representing the
hexadecimal value using the ASCII characters '0' thru '9' and 'A', 'B', 'C', 'D', 'E', and 'F',
the pseudo-hex format uses the ASCII characters '0' thru '9' and the characters ':', ';', '<',
'=', '>', and '?'. As you can see by studying the ASCII code chart, a binary nibble may be
converted to its equivalent pseudo-hex character by simply adding 0x30.
A binary/decimal/hexadecimal/pseudo-hex conversion chart is included at the end of this
manual for your convenience.
Computer Control of the Advantage PMX84page 1
Data Communications Parameters
Serial Port Data Communications Parameters
The PMX84 normally communicates through its standard RS-232 serial interface at a
data rate ("baud" rate) of 2400 bits per second with 8 data bits, no parity, and 1 stop bit.
Although the factory default setting is 2400 bits per second, operation at 9600 bits per
second is also possible by changing an internal jumper strap. The PMX84 utilizes a
subset of the standard 7-bit ASCII character set. The eighth data bit (bit 7 - the most
significant bit) of each character transmitted by the computer should always be 0. The
computer should not echo the characters it receives from the PMX84.
Since the PMX84's standard RS-232 serial interface only has a single-character input
buffer for its incoming serial data, a form of flow control must be implemented by the
computer in order to guarantee that no characters are lost. Neither hardware (DTR or
RTS) nor XON/XOFF (also known as DC1/DC3 or control-S/control-Q) handshaking is
supported by the PMX84. However, each character which the PMX84 receives with its
standard RS-232 serial interface will be "echoed" back to the computer. Flow control
may be implemented by the computer software by simply waiting for each character's
echo from the PMX84 before transmitting the next character, since the PMX84 doesn't
retrieve and echo an incoming character until it has finished processing the previous
character.
PMX-Link Data Communications Parameters
The PMX-Link is a serial communications interface which was designed primarily to
allow multiple PMX84s to be linked together in such a way that all units react to the same
remote control button events. Although the PMX-Link is not a true RS-232 interface, the
voltage levels and impedances associated with the PMX-Link are compatible with RS-
232. The PMX-Link operates at a bit rate of 2400 bits per second with 8 data bits, no
parity, and 1 stop bit. The PMX-Link bit rate is not adjustable.
The PMX-Link is a one-way communications link. The PMX84 does not echo the
characters it receives and there is no flow control mechanism. The PMX-Link has a
small (8 byte) input buffer which allows it to receive short bursts of data at the full data
rate (approximately one character every 4.2 msec), however, when performing computer
control using the PMX-Link, the computer should avoid sending characters to the
PMX84 at an average rate of greater than approximately 20 characters per second
(approximately one character every 50 msec).
page 2Computer Control of the Advantage PMX84
Computer Control
The Advantage PMX84 has an RS-232-compatible serial interface which allows it to be
controlled by a computer or by a system controller such as those provided by AMX or
Crestron. In addition to its standard RS-232 serial interface, the PMX84 has an RS-232
compatible expansion port ("PMX-Link") which may also be used for computer control.
The PMX84 offers the following three methods of computer control:
Control Button Emulation. This method of computer control allows the computer to
emulate Biamp's standard infrared remote control transmitter or wall-mount remote
control panel. Using this method, the computer outputs ASCII characters which are
equivalent to the characters which would be generated by a remote control connected
to remote port 1 of the PMX84. These ASCII characters are transmitted from the
computer to the PMX84's standard RS-232 compatible serial port. Control Button
Emulation is simple to perform, however, it only provides "one-way" control of the
PMX84 - it allows the computer to send simple commands to the PMX84, but it does
not provide any mechanism for requesting status information from the PMX84.
PMX-Link. This method of computer control is similar in concept to Control Button
Emulation, however, in addition to emulating a remote control connected to remote
port 1, the PMX-Link allows emulation of all four remote ports plus all sixteen logic
inputs of the PMX84. Using this method, the computer or controller transmits binary
"serial key codes" to the PMX84 using the RS-232 compatible PMX-Link. Computer
control using the PMX-Link is simple to perform, however, like Control Button
Emulation, it only provides "one-way" control of the PMX84 - it allows the computer
to send simple commands to the PMX84, but it does not provide any mechanism for
requesting status information from the PMX84. As a general rule, the PMX-Link
should be used for computer control only in installations where the four remote
control ports and sixteen logic inputs are not being used.
Advanced Computer Control. This method of computer control provides advanced
commands which allow "two-way" control of the PMX84. Using Advanced
Computer Control commands, the computer may request status information from the
device as well as send commands to the device. The computer communicates with
the PMX84 using the PMX84's standard RS-232 compatible serial port.
Computer Control of the Advantage PMX84page 3
Control Button Emulation
Control Button Emulation is the simplest form of computer control of the Advantage
PMX84. This method of operation allows the computer to emulate the operation of a
standard Biamp remote control transmitter connected to remote port 1.
For each button on a standard Biamp remote control, there is a corresponding ASCII
character. In order to emulate a remote control button, the computer simply transmits the
corresponding ASCII character to the PMX84's standard RS-232 serial port. Each
character received by the PMX84 will be echoed back to the computer.
The standard Biamp remote control devices never exceed a transmission rate of 9
characters per second. If the computer wishes to perform Control Button Emulation at a
rate of greater than 20 characters per second (50 msec per character), flow control should
be implemented by waiting for the echo of each character before transmitting the next
character. At slower speeds, flow control should not be necessary.
The following table summarizes the ASCII character codes for Control Button Emulation
corresponding to each of the 40 remote control buttons for remote 1 of the PMX84.
These button codes are also summarized on the ASCII code chart provided at the end of
this manual. The remote control buttons on the standard Biamp transmitter are numbered
from left to right going from bottom to top with the lower left-hand button being button
number 1.
When using Advanced Computer Control, up to eight PMX84s may be linked together
and individually controlled by the computer (if each device is first assigned a unique
device number). When using Control Button Emulation, a limited subset of device
addressing may be performed, which allows individual control of up to four PMX84s
(with device numbers 1 thru 4). This is accomplished by transmitting a device select
prefix code immediately prior to each control button ASCII character code. The device
select prefix code is inspected by each device to determine whether or not the device
should react to the button code which immediately follows. (Note: do not transmit prefix
codes prior to repeat codes.) If a button code is not immediately preceded by a device
select prefix character, then all PMX84s in the system will react to that button code. The
following table summarizes the ASCII characters to use for selecting various devices.
This information is also summarized in the ASCII code chart provided at the end of this
manual.
This method of computer control is very similar to Control Button Emulation. However,
by interfacing to the PMX84 using the PMX-Link, the computer is able to emulate all 200
of the button "events" which the PMX84 supports. This includes emulation of remote
control activity from all four remote ports as well as from the 16 logic inputs. Each
button event has a corresponding 8-bit "serial key code" (see the following table). The
computer (or other controller) may emulate a button event by transmitting the
corresponding 8-bit serial key code to the PMX-Link.
As mentioned earlier, the proper data communications settings are: 2400 bits per second,
no parity, 1 stop bit. To avoid overrunning the PMX-Link's input buffer, the average
transmission rate should not exceed 20 characters per second.
Unlike Control Button Emulation, the PMX-Link does not support device select prefix
codes.
page 6Computer Control of the Advantage PMX84
PMX-Link Serial Key Codes
button
event #
0 - 390x00 - 0x27Remote Port 1 Buttons 1 - 40
40 - 790x28 - 0x4FRemote Port 2 Buttons 1 - 40
80 - 1190x50 - 0x77Remote Port 3 Buttons 1 - 40
120 - 1590x78 - 0x9FRemote Port 4 Buttons 1 - 40
1600xA0Logic Input 1 Contact Closed
1610xA1Logic Input 2 Contact Closed
1620xA2Logic Input 3 Contact Closed
1630xA3Logic Input 4 Contact Closed
1640xA4Logic Input 1 Contact Opened
1650xA5Logic Input 2 Contact Opened
1660xA6Logic Input 3 Contact Opened
1670xA7Logic Input 4 Contact Opened
1680xA8Logic Input 5 Contact Closed
1690xA9Logic Input 6 Contact Closed
1700xAALogic Input 7 Contact Closed
1710xABLogic Input 8 Contact Closed
1720xACLogic Input 5 Contact Opened
1730xADLogic Input 6 Contact Opened
1740xAELogic Input 7 Contact Opened
1750xAFLogic Input 8 Contact Opened
1760xB0Logic Input 9 Contact Closed
1770xB1Logic Input 10 Contact Closed
1780xB2Logic Input 11 Contact Closed
1790xB3Logic Input 12 Contact Closed
1800xB4Logic Input 9 Contact Opened
1810xB5Logic Input 10 Contact Opened
1820xB6Logic Input 11 Contact Opened
1830xB7Logic Input 12 Contact Opened
1840xB8Logic Input 13 Contact Closed
1850xB9Logic Input 14 Contact Closed
1860xBALogic Input 15 Contact Closed
1870xBBLogic Input 16 Contact Closed
1880xBCLogic Input 13 Contact Opened
1890xBDLogic Input 14 Contact Opened
1900xBELogic Input 15 Contact Opened
1910xBFLogic Input 16 Contact Opened
1920xC0Logic Inputs 1 - 4 All Opened
1930xC1Logic Inputs 5 - 8 All Opened
1940xC2Logic Inputs 9 - 12 All Opened
1950xC3Logic Inputs 13 - 16 All Opened
1960xC4Logic Inputs 1 - 8 All Opened
1970xC5Logic Inputs 9 - 16 All Opened
1980xC6Logic Inputs 1 - 16 All Opened
1990xC7Power-Up / Reset Event
serial key
code (hex)
control button event
Computer Control of the Advantage PMX84page 7
Advanced Computer Control
The Advanced Computer Control command set includes commands which allow the
PMX84 to return information about the system to the computer, unlike Control Button
Emulation and the PMX-Link which are basically one-way control mechanisms. The
following list summarizes the commands available using Advanced Computer Control,
including the ASCII command character associated with each command:
!
do-macroperform the actions for the specified button macro.
!
get-macro-definitionretrieve the definition for the specified button macro.
"
define-macrodefine the specified button macro.
"
virtual-macroperform the specified macro actions.
#
do-buttonperform the actions associated with the specified button.
#
get-button-definitionretrieve the definition for the specified button.
$
define-buttondefine the specified button.
%
get-matrix-statusretrieve the on/off status for the entire assignment matrix.
&
set-matrix-statusset the on/off status for the entire assignment matrix.
'
do-matrix-actionperform the specified matrix assignment switch action.
(
get-logic-statusretrieve the on/off status of all logic outputs.
)
set-logic-statusset the on/off status of all logic outputs.
*
do-logic-actionperform the specified logic output action.
+
sleep-for-10-sec.sleep for 10 seconds, ignoring all commands.
,
read-memoryretrieve data from non-volatile configuration memory.
-
write-memorystore data in non-volatile configuration memory.
.
set-factory-defaultsresets configuration parameters to factory defaults.
/
get-versionretrieve the model information and firmware version date.
Each Advanced Computer Control command requires at least two parameter bytes (four
pseudo-hex nibbles) to be sent prior to the command character. Each command will be
explained in detail on the following pages.
Some of the commands cause the PMX84 to return information to the computer. For
each string of information returned to the computer, the PMX84 terminates the string by
transmitting the ASCII carriage return character (0x0D - represented in this document as
).
As mentioned earlier, the Advantage PMX84 will echo all characters it receives,
regardless of whether or not the characters are valid commands or parameters. Characters
greater than 0x7F are reserved and should not be transmitted by the computer. The
PMX84 utilizes a subset of the standard ASCII character set. The following characters
have meaning to the PMX84:
page 8Computer Control of the Advantage PMX84
characterhexadecima
operation
l
ASCII control characters(0x00 - 0x1F)no operation
SPACE
ASCII
!
thru
0
thru
@
A
B
thru
a
b
thru
k
thru
{
thru
0x80 thru 0xFF(0x80 - 0xFF)RESERVED
character
/
?
`
j
z
DEL
(0x20)no operation
(0x21 - 0x2F)Advanced Computer Control
commands
(0x30 - 0x3F)pseudo-hex parameters for Advanced
Computer Control commands
(0x40)Control Button Emulation Repeat Code
(0x41)no operation
An ASCII code chart showing all PMX84 commands and codes is provided later in this
document for your convenience. One key point to observe is that the computer may feel
free to transmit spaces, tabs, carriage returns, line feeds, or any other control characters atany time (even between two nibbles of a pseudo-hex parameter byte) without having any
affect on the operation of the PMX84. The PMX84 will simply echo them and then
ignore them.
Device Type Bitmask and Device Number Bitmask
In a system which has more than one Advantage product connected to the computer, the
Device Type Bitmask and Device Number Bitmask command parameters provide a
mechanism for the computer to individually address a particular device (or a combination
of devices). Every command in the Advanced Computer Control command set requires
that a Device Type Bitmask and a Device Number Bitmask be transmitted as the last two
parameter bytes before the computer transmits the command character itself. These two
bitmask parameters bytes provide a device addressing capability to specify which of the
devices in the system should execute the command. All devices which are not
specifically addressed by these two bitmask values will ignore the command.
The Device Type Bitmask parameter byte supports up to eight distinct device types - one
bit per device type. The eight device types are:
0x20(bit 5) (reserved for future product)
0x40(bit 6) (reserved for future product)
0x80(bit 7) (reserved for future product)
The Advantage PMX84 will only respond to Advanced Computer Control commands if
bit 3 of the Device Type Bitmask parameter byte is a '1'. A command may be directed to
more than one device type in the system by setting all of the corresponding bits in the
Device Type Bitmask to '1's.
The Device Number Bitmask parameter byte supports up to eight distinct device numbers
- one bit per device number. The eight device numbers are:
0x01(bit 0) Select Device Number 1
0x02(bit 1) Select Device Number 2
0x04(bit 2) Select Device Number 3
0x08(bit 3) Select Device Number 4
0x10(bit 4) Select Device Number 5
0x20(bit 5) Select Device Number 6
0x40(bit 6) Select Device Number 7
0x80(bit 7) Select Device Number 8
A particular Advantage PMX84 will only respond to Advanced Computer Control
commands if the bit in the Device Number Bitmask parameter byte corresponding to its
device number is a '1'. A command may be directed to more than one device number in
the system by setting all of the corresponding bits in the Device Number Bitmask to '1's.
The Advanced Computer Control command set supports, in theory, up to sixty-four
devices in a system - eight devices of each of the eight device types. In order for any
particular device in the system to respond to an Advanced Computer Control command,
the appropriate bit in both the Device Type and Device Number bitmask parameter bytes
must be set to '1'.
page 10Computer Control of the Advantage PMX84
Advanced Computer Control Data Structures
Matrix Status Data Structure
The PMX84 maintains a 4-byte data structure representing the on/off status of all 32
matrix assignment switches. Each binary bit corresponds to one assignment switch (see
illustration). A '1' bit means the switch is on, and a '0' bit means the switch is off. For
example, if bit 5 of the matrix[2] byte is a '1', audio input channel 6 is assigned to audio
output 2.
PMX84 Matrix Status Data Structure
4-byte array with elements numbered matrix[0] thru matrix[3]
(msb)(lsb)
matrix[3]
(transmitted first)
matrix[2]
matrix[1]
matrix[0]
(transmitted last)
01234567
7→17→27→37→48→18→28→38→4
5→15→25→35→46→16→26→36→4
3→13→23→33→44→14→24→34→4
1→11→21→31→42→12→22→32→4
Logic Status Data Structure
The PMX84 maintains a 2-byte data structure representing the on/off status of all 16 logic
outputs. Each binary bit corresponds to one logic output (see illustration). A '1' bit
means the open collector logic output is on (a low impedance to ground), and a '0' bit
means the open collector logic output is off (high impedance). For example, if bit 2 of
the logic[1] byte is a '1', logic output 11 is on.
PMX84 Logic Status Data Structure
2-byte array with elements numbered logic[0] thru logic[1]
(msb)(lsb)
logic[1]
(transmitted first)
logic[0]
(transmitted last)
01234567
910111213141516
12345678
Computer Control of the Advantage PMX84page 11
Button Definitions vs. Button Macros
The Advantage PMX84, like other members of the Advantage family of digitally
controlled products, provides programmable or "definable" buttons. This allows the
sound contractor to determine how the unit will behave for each remote control button.
However, unlike the earlier Advantage products, the PMX84 firmware splits the
programmable buttons into two separate parts - a "button macro", which specifies what
actions are to be performed, and a "button definition" which specifies which button macro
is assigned to a particular button. When the PMX84 detects that a remote control button
has been pressed, it first looks-up the button definition for that button to determine which
(if any) button macro is associated with that button. If a button macro has been assigned
to that button, the PMX84 then looks-up the specified button macro to determine what
actions to perform.
The PMX84 provides support for 200 buttons or button events (for a list of all 200 button
events, see page 7). The PMX84 reserves space in its non-volatile memory for each of
the 200 buttons or button events. It also allocates space for 50 button macros. A
particular button macro may be assigned to more than one button - defining 4 buttons, for
example, to all perform the same actions only requires 1 button macro, not 4.
Button Definition Data Structure
The PMX84 maintains data structures for 200 buttons or button events (button 0 thru
button 199). Each button definition data structure consists of two bytes - one byte
specifies which button macro, if any, has been assigned to the button and the other byte
specifies what character, if any, should be "echoed" (transmitted) out the PMX84's serial
port when that button event occurs. A macro number assignment of 0xff indicates that no
macro has been assigned to the button and therefore the button is a "NOP" (it performs no
operation). An echo character assignment of 0x00 means that no character will be
transmitted out the serial port when that button event occurs.
PMX84 Button Definition Data Structure
2-byte array with elements numbered button[0] thru button[1]
button[1]
(transmitted first)
button[0]
(transmitted last)
(msb)(lsb)
ECHO CHARACTER
MACRO NUMBER ASSIGNMENT
01234567
0x00 means no echo
character assigned
0xff means NOP
(no macro assigned)
page 12Computer Control of the Advantage PMX84
Button Macro Data Structure
The PMX84 maintains data structures for 50 button macro definitions (macro 0 thru
macro 49). Each button macro data structure consists of twelve bytes - eight bytes
specifying actions for the 32 matrix assignment switches and four bytes specifying
actions for the 16 logic outputs. Each action code consists of two bits with the following
bit patterns:
00NOP (no operation)
01turn OFF
10turn ON
11toggle
PMX84 Button Macro Data Structure
12-byte array with elements numbered macro[0] thru macro[11]
macro[11]
(transmitted first)
macro[10]
macro[9]
macro[8]
macro[7]
macro[6]
macro[5]
macro[4]
macro[3]
macro[2]
macro[1]
(msb)(lsb)
LOGIC 16
LOGIC 12 LOGIC 11 LOGIC 10 LOGIC 9
LOGIC 8LOGIC 7LOGIC 6LOGIC 5
LOGIC 4LOGIC 3LOGIC 2LOGIC 1
MATRIX
Switch 8-4
MATRIX
Switch 7-4
MATRIX
Switch 6-4
MATRIX
Switch 5-4
MATRIX
Switch 4-4
MATRIX
Switch 3-4
MATRIX
Switch 2-4
LOGIC 15 LOGIC 14 LOGIC 13
MATRIX
Switch 8-3
MATRIX
Switch 7-3
MATRIX
Switch 6-3
MATRIX
Switch 5-3
MATRIX
Switch 4-3
MATRIX
Switch 3-3
MATRIX
Switch 2-3
MATRIX
Switch 8-2
MATRIX
Switch 7-2
MATRIX
Switch 6-2
MATRIX
Switch 5-2
MATRIX
Switch 4-2
MATRIX
Switch 3-2
MATRIX
Switch 2-2
MATRIX
Switch 8-1
MATRIX
Switch 7-1
MATRIX
Switch 6-1
MATRIX
Switch 5-1
MATRIX
Switch 4-1
MATRIX
Switch 3-1
MATRIX
Switch 2-1
01234567
LOGIC
OUTPUT
ACTIONS
MATRIX
ASSIGNMENT
SWITCH
ACTIONS
macro[0]
(transmitted last)
MATRIX
Switch 1-4
MATRIX
Switch 1-3
MATRIX
Switch 1-2
MATRIX
Switch 1-1
Computer Control of the Advantage PMX84page 13
Advanced Computer Control Command Notation
For the following descriptions of the Advanced Computer Control command set, the
following conventions will be used:
Each ASCII character which represents a pseudo-hex nibble will be shown in italics, with
the following letters representing certain types of parameters:
aa pseudo-hex nibble specifying an action code.
bone of the pseudo-hex nibbles specifying a button data structure. Also used to as a
pseudo-hex nibble to select a memory bank.
ca pseudo-hex nibble specifying a checksum value.
done of the pseudo-hex nibbles in the device number bitmask which indicates which
device numbers should accept the following command.
ea pseudo-hex nibble specifying a memory address in the non-volatile configuration
memory of the PMX84 (the ending address of a range of addresses).
ka pseudo-hex nibble specifying a button serial key code.
lone of the pseudo-hex nibbles specifying a logic output status data structure.
mone of the pseudo-hex nibbles specifying a macro data structure or a matrix status data
structure.
na pseudo-hex nibble specifying a button number or macro number.
oa pseudo-hex nibble specifying a command option byte.
sa pseudo-hex nibble specifying a memory address in the non-volatile configuration
memory of the PMX84 (the starting address of a range of addresses).
xa pseudo-hex nibble specifying a generic data value.
page 14Computer Control of the Advantage PMX84
! do-macro
Description:
The do-macro command causes the PMX84 to look-up and perform the actions for the
specified button macro.
Syntax of Command:
nn08dd!
where:
nn=Macro Number + 128 (pseudo-hex)
08=PMX84 Device Type Bitmask
dd=Device Number Bitmask (pseudo-hex)
!=do-macro command character (0x21)
Syntax of Response:
(no response)
Example:
950820!
This example causes PMX84 number 6 to immediately look-up and perform the actions
for button macro number 21.
Comments:
The decimal value 128 must be added to the Macro number. This indicates to the
PMX84 that this is the do-macro form of the command.
Computer Control of the Advantage PMX84page 15
! get-macro-definition
Description:
The get-macro-definition command causes the PMX84 to return the definition of the
specified button macro. The button macro definition will be returned in the Button
Macro Data Structure format.
Syntax of Command:
nn08dd!
where:
nn=Macro Number (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
!=get-macro-definition command character (0x21)
Syntax of Response:
mmmmmmmmmmmmmmmmmmmmmmmm
where:
mmmmmmmmmmmmmmmmmmmmmmmm =
hex)
Example:
Button Macro Data Structure (pseudo-
command:response:
1;0801!0000000255555555555555::
This example causes PMX84 number 1 to retrieve its button macro definition for macro
number 27 (0x1B) and return it to the computer. In this example, the macro definition
was: assign input 1 to outputs 1, 2, 3, and 4; un-assign all other inputs and outputs; turn
on logic output 1; leave logic outputs 2-16 the way they were.
Comments:
page 16Computer Control of the Advantage PMX84
" define-macro
Description:
The define-macro command provides a new button macro definition for the specified
macro number. The PMX84 will store this new button macro definition in its macro
definition lookup table, replacing the definition that was there.
Syntax of Command:
mmmmmmmmmmmmmmmmmmmmmmmmnn08dd"
where:
mmmm...mmmm=Button Macro Data Structure (pseudo-hex)
nn=Macro Number (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
"=define-macro command character (0x22)
Syntax of Response:
(no response)
Example:
000000020000000000000002030801"
This example causes PMX84 number 1 to redefine macro number 03 to assign input 1 to
output 1 and to turn on logic output number 1 and to leave all other matrix switch
assignments and logic outputs the way they were.
Comments:
Computer Control of the Advantage PMX84page 17
" virtual-macro
Description:
The virtual-macro command causes the specified button macro actions to be immediately
performed. The actions are defined using the Button Macro Data Structure. The button
macro definition is not stored in the PMX84's nonvolatile memory, nor is the macro
definition associated with a macro number. The virtual-macro command allows the
computer to specify the actions to be performed without having the PMX84 look-up an
entry in its button macro definition table.
Syntax of Command:
mmmmmmmmmmmmmmmmmmmmmmmm8008dd"
where:
mmmm...mmmm=Button Macro Data Structure (pseudo-hex)
80=command identifier
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
"=virtual-macro command character (0x22)
Syntax of Response:
(no response)
Example:
000000020000000000000002800801"
This example causes PMX84 number 1 to assign input 1 to output 1 and to turn on logic
output number 1 and to leave all other matrix switch assignments and logic outputs the
way they were.
Comments:
This command specifies actions (NOP, turn off, turn on, toggle) to be performed for all
32 matrix assignment switches and all 16 logic outputs. To perform a single matrix
assignment switch or logic output action, refer to the do-matrix-action and do-logicaction commands. To set all matrix assignment switches or all logic outputs to a known
state, refer to the set-matrix-status and set-logic-status commands.
page 18Computer Control of the Advantage PMX84
# do-button
Description:
The do-button command causes the PMX84 to look-up the button definition for the
button (or button "event") with the specified button serial key code and, if a button macro
has been assigned to that button, perform the button macro actions. The button serial key
code is a number from 0 to 199 (0x00 to 0xC7).
Syntax of Command:
kk?>08dd#
where:
kk=Button Serial Key Code (pseudo-hex)
?>=command identifier 0xFE (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
#=do-button command character (0x23)
Syntax of Response:
(no response)
Example:
32?>080?#
This example causes PMX84 numbers 1, 2, 3, and 4 to look-up and perform the actions
defined in their respective button definition tables for button 11 of remote port 2 (serial
key code 0x32).
Comments:
Computer Control of the Advantage PMX84page 19
# get-button-definition
Description:
The get-button-definition command causes the PMX84 to return the definition of the
button (or button "event") for the specified button serial key code. The button definition
will be returned in the Button Definition Data Structure format. The button serial key
code is a number from 0 to 199 (0x00 to 0xC7).
Syntax of Command:
kk08dd#
where:
kk=Button Serial Key Code (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
#=get-button-definition command character (0x23)
Syntax of Response:
bbbb
where:
bbbb=Button Definition Data Structure (pseudo-hex)
Example:
command:response:
580801#4:07
This example causes PMX84 number 1 to retrieve its button definition for button number
9 of remote port 3 (serial key code 0x58) and return it to the computer. In this example,
the echo character is defined to be 'J' (0x4A), and macro number 07 is assigned to this
button.
Comments:
page 20Computer Control of the Advantage PMX84
$ define-button
Description:
The define-button command provides a new button definition for the button (or button
"event") corresponding to the specified button serial key code. The PMX84 will store
this new button definition in its button definition lookup table, replacing the definition
that was there.
Syntax of Command:
bbbbkk08dd$
where:
bbbb=Button Definition Data Structure
kk=Button Serial Key Code 0 - 199 (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
$=define-button command character (0x24)
Syntax of Response:
(no response)
Example:
4213000801$
This example provides a new button definition for button number 1 of remote port 1
(serial key code 0x00) of PMX84 number 1. The new button definition sets the echo
character to 'B' (0x42) and assigns button macro number 19 (0x13) to this button.
Comments:
Computer Control of the Advantage PMX84page 21
% get-matrix-status
Description:
The get-matrix-status command causes the PMX84 to return the on/off status of all 32
matrix assignment switches. The settings will be returned in the Matrix Status Data
Structure format.
Syntax of Command:
08dd%
where:
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)%=get-matrix-status command character (0x25)
Syntax of Response:
mmmmmmmm
where:
mmmmmmmm=Matrix Status Data Structure (pseudo-hex)
Example:
command:response:
0801%88442211
This example causes PMX84 number 1 to retrieve the current status of all 32 matrix
assignment switches. In this example, inputs 1 and 2 are assigned to output 1, inputs 3
and 4 are assigned to output 2, inputs 5 and 6 are assigned to output 3, and inputs 7 and 8
are assigned to output 4.
Comments:
page 22Computer Control of the Advantage PMX84
& set-matrix-status
Description:
The set-matrix-status command establishes new settings for the on/off status of all 32
matrix assignment switches. The new settings will immediately become effective.
Syntax of Command:
mmmmmmmm08dd&
where:
mmmmmmmm=Matrix Status Data Structure (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
&=set-matrix-status command character (0x26)
Syntax of Response:
(no response)
Example:
000084210801&
This example causes PMX84 number 1 to set its matrix assignment switches to: input 1
assigned to output 1, input 2 assigned to output 2, input 3 assigned to output 3, and input
4 assigned to output 4 (all other assignment switches off).
Comments:
This command affects all 32 matrix assignment switches. To change the status of a single
matrix assignment switch, refer to the do-matrix-action command.
Computer Control of the Advantage PMX84page 23
' do-matrix-action
Description:
The do-matrix-action command causes the PMX84 to perform the specified matrix action
(NOP, turn off, turn on, toggle) for the specified matrix assignment switch.
Syntax of Command:
aann08dd'
where:
aa=Action code (pseudo-hex). 00 = NOP,
01 = turn off, 02 = turn on, 03 = toggle.
nn=Assignment Switch Number (pseudo-hex, see below)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
'=do-matrix-action command character (0x27)
pseudo-hex codes for assignment switch numbers (nn):
00in 1 - out 1
01in 1 - out 2
02in 1 - out 3
03in 1 - out 4
04in 2 - out 1
05in 2 - out 2
06in 2 - out 3
07in 2 - out 4
08in 3 - out 1
09in 3 - out 2
0:in 3 - out 3
0;in 3 - out 4
0<in 4 - out 1
0=in 4 - out 2
0>in 4 - out 3
0?in 4 - out 4
10in 5 - out 1
11in 5 - out 2
12in 5 - out 3
13in 5 - out 4
14in 6 - out 1
15in 6 - out 2
16in 6 - out 3
17in 6 - out 4
18in 7 - out 1
19in 7 - out 2
1:in 7 - out 3
1;in 7 - out 4
1<in 8 - out 1
1=in 8 - out 2
1>in 8 - out 3
1?in 8 - out 4
Syntax of Response:
(no response)
Example:
020>0801'
This example causes PMX84 number 1 to turn on the matrix assignment switch which
assigns input 4 to output 3.
Comments:
page 24Computer Control of the Advantage PMX84
( get-logic-status
Description:
The get-logic-status command causes the PMX84 to return the on/off status of all 16
logic outputs. The settings will be returned in the Logic Status Data Structure format.
Syntax of Command:
08dd(
where:
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
(=get-logic-status command character (0x28)
Syntax of Response:
llll
where:
llll=Logic Status Data Structure (pseudo-hex)
Example:
command:response:
0801(0040
This example causes PMX84 number 1 to retrieve the current status of all 16 logic
outputs. In this example, logic output 7 is on and all others are off.
Comments:
Computer Control of the Advantage PMX84page 25
) set-logic-status
Description:
The set-logic-status command establishes new settings for the on/off status of all 16 logic
outputs. The new settings will immediately become effective.
Syntax of Command:
llll08dd)
where:
llll=Logic Status Data Structure (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
)=set-logic-status command character (0x29)
Syntax of Response:
(no response)
Example:
40030801)
This example causes PMX84 number 1 to turn on logic outputs 1, 2, and 15, and turn off
all other logic outputs.
Comments:
This command affects all 16 logic outputs. To change the status of a single logic output,
refer to the do-logic-action command.
page 26Computer Control of the Advantage PMX84
* do-logic-action
Description:
The do-logic-action command causes the PMX84 to perform the specified logic action
(NOP, turn off, turn on, toggle) for the specified logic output.
Syntax of Command:
aann08dd*
where:
aa=Action code (pseudo-hex). 00 = NOP,
01 = turn off, 02 = turn on, 03 = toggle.
nn=Logic Output Number (pseudo-hex, see below)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
This example causes PMX84 number 1 to turn on logic output 13.
Comments:
Computer Control of the Advantage PMX84page 27
+ sleep-for-10-seconds
Description:
The sleep-for-10-seconds command causes the PMX84 to "go to sleep" for 10 seconds,
ignoring all serial port data communications, including Control Button commands as well
as Advanced Computer Control commands. During this time, characters received by the
serial port will be ignored and will not be echoed. This command was implemented to
facilitate remote computer control of the PMX84 via modem (with an auto-answer
modem at the PMX84). When an on-line session with a modem is finished and one
modem or the other decides to disconnect or "hang up the phone", typically a spurt of
unwanted spurious garbage characters occurs on the line. The PMX84 has no way of
distinguishing between "garbage" characters and real characters. The last thing the
computer should do before telling its modem to hang up is to issue the sleep-for-10seconds command. This will allow plenty of time for the line to disconnect and the
PMX84 will ignore all characters which it might receive during this hang-up process.
Syntax of Command:
ttdd+
where:
tt=Device Type Bitmask (pseudo-hex) 08 = PMX84
dd=Device Number Bitmask (pseudo-hex)
+=sleep-for-10-seconds command character (0x2B)
Syntax of Response:
(no response)
Example:
????+
This example causes all Advantage devices in the system to sleep for 10 seconds,
ignoring all data communications.
Comments:
Note that the command character '+' is typically also the character used to return a Hayescompatible modem to its command mode.
page 28Computer Control of the Advantage PMX84
10-Mar-97
, read-memory
Description:
The read-memory command allows the computer to read the contents of one or more
locations of the PMX84's non-volatile configuration memory. The PMX84 has 1024
bytes of configuration memory, which is arranged as four banks of 256 bytes each.
Syntax of Command:
bbeess08dd,
where:
bb=memory Bank select.
00 = bank 0. 01 = bank 1. 02 = bank 2. 03 = bank 3.
ee=Ending memory address (pseudo-hex)
ss=Starting memory address (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
,=read-memory command character (0x2C)
Syntax of Response:
xx...(up to 256 data values)...
where:
xx=Data byte (pseudo-hex). Value in end addr is sent first.
Example:
command:
0006000801,
response:
6<000000000102
This example causes PMX84 number 1 to return the data values which are currently
stored in locations 00 thru 06 of bank 0 of the configuration memory. In this example,
memory location 00 contains the pseudo-hex value 02 and memory location 06 contains
the pseudo-hex value 6<.
Computer Control of the Advantage PMX84page 29
Comments:
To read the contents of only one location, set both the starting and ending address to the
same value (the desired address). The starting address should always be less than or
equal to the ending address. Valid addresses for each bank are 0x00 thru 0xFF (pseudohex 00 thru ??). The data is sent in reverse order (last location first).
The write-memory command allows the computer to store one or more data values in the
PMX84's non-volatile configuration memory beginning at a specified location. The
PMX84 has 1024 bytes of configuration memory, which is arranged as four banks of 256
bytes each. Each memory-write command may include up to 16 data values to be stored
in a contiguous range of memory locations for the specified memory bank. This
command provides the computer with a mechanism for setting or changing the global
configuration parameters for the device. It also provides the computer with a method for
totally messing things up.
Syntax of Command:
xx...(up to 16 data values)...ssoocc08dd-
where:
xx..=up to 16 data values (pseudo-hex). The values are sent
in reverse order (highest memory address first)
ss=starting (lowest) memory address (pseudo-hex)
oo=options & byte count (pseudo-hex)
bits 3, 2, 1, 0 = number of data values - 1
bit 4 - reserved (must be 0)
bits 6, 5 - memory Bank select. 00 = bank 0.
01 = bank 1. 10 = bank 2. 11 = bank 3.
bit 7 - 1 = activate new global config params now.
cc=computed checksum value (pseudo-hex)
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
-=write-memory command character (0x2D)
Syntax of Response:
(no response)
Example:
0302010382740801-
This example causes PMX84 number 1 to store the values 0x01, 0x02, 0x03 in
configuration memory bank 0 beginning at address 0x03 and causes the unit to retrieve
and activate its global configuration parameters.
Computer Control of the Advantage PMX84page 31
Comments:
In order to insure data integrity, a checksum value is included with this command. The
checksum is computed by performing a simple 8-bit (modulo 256) sum of all of the data
values plus the starting address value plus the option byte value and then performing a 1's
complement of the sum. Note that the checksum calculation is performed on the actual 8bit binary values, before any values are converted to pseudo-hex format for transmission.
The PMX84 will perform the same calculation on the data values which it receives and
compare its computed checksum to the received checksum. If the two values do not
match, the PMX84 will ignore the entire command.
The PMX84 normally retrieves and activates its global configuration parameters from the
non-volatile configuration memory only during its power-up sequence. If you use the
write-memory command to change a global configuration parameter (which is why the
command was provided), the PMX84 has to specifically be told to re-load and activate its
configuration parameters after the new value is stored in its memory. Bit 7 of the options
& byte count parameter may be set to tell the unit to automatically retrieve and activate its
configuration parameters after the memory write operation is complete.
page 32Computer Control of the Advantage PMX84
10-Mar-97
. set-factory-defaults
Description:
The set-factory-defaults command may be used to force the PMX84 to reset some or all
of its configuration information to the factory default settings. The first two parameters
for this command (< and >) are dummy parameters which were implemented to help
prevent an accidental restoration of the factory defaults due to an error in data
transmission.
Syntax of Command:
<>oo08dd.
where:
<=the ASCII character < (0x3C)
>=the ASCII character > (0x3E)
oo=Option byte (pseudo-hex):
bit 0 - 1 = set Button Definition defaults
bit 1 - 1 = set Button Macro Definition defaults
bit 2 - 1 = set Global Config Parameter defaults
bit 7 - 1 = activate new Global Config Params now
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
.=set-factory-defaults command character (0x2E)
Syntax of Response:
(no response)
Example:
<>84080?.
This example causes PMX84 numbers 1, 2, 3, and 4 to restore their global configuration
parameters to the factory default settings and to retrieve and activate those new settings.
Comments:
Computer Control of the Advantage PMX84page 33
/ get-version
Description:
The get-version command causes the PMX84 to return its model identification code and
firmware version to the computer. The firmware version number is simply the release
date of the firmware, in a slightly modified standard American format of mm:dd:yy.
These values are decimal digits, not pseudo-hex notation. For example, February 12,
1996 would be represented as 02:12:96. The colon character (:) is used as a separator
instead of the more conventional slash character, since the slash character is used as a
computer command character by the PMX84.
Syntax of Command:
08dd/
where:
08=Device Type Bitmask (pseudo-hex)
dd=Device Number Bitmask (pseudo-hex)
/=get-version command character (0x2F)
Syntax of Response:
02 mm:dd:yy
where:
02=initial model i.d. (0x30 followed by 0x32)
=ASCII space character (0x20)
mm=2-digit decimal month number
:=ASCII character : (0x3A)
dd=2-digit decimal day of the month
:=ASCII character : (0x3A)
yy=2-digit decimal year number
Example:
command:response:
0801/02 02:12:96
This example causes PMX84 number 1 to return its model identification code and
firmware version.
aa pseudo-hex nibble specifying an action code.
bone of the pseudo-hex nibbles specifying a button data structure. Also used to as a pseudo-hex nibble to select a
memory bank.
ca pseudo-hex nibble specifying a checksum value.
done of the pseudo-hex nibbles in the device number bitmask which indicates which device numbers should accept
the following command.
ea pseudo-hex nibble specifying a memory address in the non-volatile configuration memory of the PMX84 (the
ending address of a range of addresses).
ka pseudo-hex nibble specifying a button serial key code.
lone of the pseudo-hex nibbles specifying a logic output status data structure.
mone of the pseudo-hex nibbles specifying a macro data structure or a matrix status data structure.
na pseudo-hex nibble specifying a button number or macro number.
oa pseudo-hex nibble specifying a command option byte.
sa pseudo-hex nibble specifying a memory address in the non-volatile configuration memory of the PMX84 (the
starting address of a range of addresses).
xa pseudo-hex nibble specifying a generic data value.
Computer Control of the Advantage PMX84page 35
.
ASCII Code Chart
with Decimal & Hexadecimal Equivalents and Advantage PMX84 Commands