Skip to content

Knowledge Base



Product: Elvis
Version: from 2.4
Booth: 2007-01-02


Update 26.11.19: DMX-Interfaces der Fa. Cinetix are no longer in production.

For the connection of a DMX-512 device to Elvis we have implemented part of the protocol of the DMX-512 Box (

The USB / DMX-512 Control Box from Cinetix is therefore the essential prerequisite for communication.

There is now only the RS232 and a MIDI variant of the Cinetix box. These should work the same way, but we haven’t been able to test that yet.

You can download the sample project and script for the custom port here: (110 KB).



The DMX-512 protocol is used in harsh environments (stage technology) for the control of light (dimming), movement of luminaires (moving head) as well as for special effects (fog etc.).

The “DMX-512” standard stipulates that a bus master sends digital control data to a bus line. This bus line is looped from receiver to receiver. All DMX receivers connected to the bus are cyclically supplied with all current control data, regardless of whether this data has changed in the meantime and whether it is intended for this receiver. Each DMX cycle starts with a special reset pulse and the start byte as a header. Subsequently, all data bytes are sent one after the other in 8-bit format to all potential recipients. A byte within these data bytes is called a channel (in the DMX-512A standard as a slot). The slot (= position of a byte within the data bytes relative to the start byte) thus takes on the role of addressing. The value of the byte is called the level (value range 0 to 255). By means of a coding switch or similar, a number between 1 and 512 can be set on the DMX receiver. In each DMX cycle, the receiver samples the data bytes sent from this slot from the DMX data stream. The number of bytes evaluated depends on the specific function of the receiver. This means that several slots can be intended for one receiver and the same slots for several recipients.

Since no security mechanisms are provided, the DMX-512 standard expressly prohibits its use in safety-critical applications.

Protocol of the DMX-512 Box (

(Excerpt from the operating instructions for the RS-232/DMX-512 Control Box)

Two control protocols are available to control the DMX Control Box from a PC: the ASCII protocol and the binary protocol. The ASCII protocol can also be executed manually with a terminal program, which we also recommend if you are getting to know the box for the first time. Each control command and each status message begins with a single characteristic letter, followed by a number as a value parameter, if necessary. Quick start and elementary commands: The number of the DMX slot to be changed (1 – 512) is set with the command “S”, followed by the slot number as a 1- to 3-digit decimal number. After that, the DMX value to be set at this slot is transmitted with the “V” command, followed by a number represented as ASCII text in the range 0 to 255: The number must be entered in three digits or, if there are fewer digits, it must be terminated with <CR> “carriage return”. Example: S1V45<CR>

Elvis Custom Port

The Custom Port is a connector for communicating with devices via serial protocols. The implementation of the foreign protocol is done in a script. This script contains all the settings necessary for communication to establish communication as well as the instructions for processing incoming and outgoing shipments (telegrams). This means that all essential operations are in our hands, but creating a script is not difficult. Special functions for data exchange with the process server and communication with the device make our work easy!

The process server invokes:

  • when starting the process server, is used to initialize the port: OnOpen()
  • if the NominalValue of a data point has changed: SendValue(dst As String, v As Variant, svrinfo As String), dst is the address, v is the value, and svrinfo is the additional info (from the list of data point types)

The script calls:

  • to establish communication (communication settings): OpenCommPort port (=String), mode (= String)
  • if you want to send to the device: CommSend sSend (=String)
  • if the ActualValue of a data point is to be set: FireReceiveValue dst (=String), v (=Variant)

For our DMX-512 script this means:

  1. Communication setup – i.e. establish communication with the DMX-512 box in OnOpen():
    <> tt OpenCommPort “COM5”, “baud=19200, parity=n, data=8, stop=1, xon=off, rts=off”</tt>
  2. When the NominalValue is changed, the following is called: SendValue(dst As String, v As Variant, svrinfo As String)
    1. Send the slot and the value (CommSend). To do this, assemble the string to be sent:
      <> tt CommSend “S” & dst & “V” & CStr(v) & Chr(13) </tt>
      this means: “S” + slot number + “V” + value + return
    2. In order for the current value to be displayed, the ActualValue is set:
      <> tt FireReceiveValue dst, v</tt>

Example of a minimal DMX-512 port implementation:

Sub OnOpen() OpenCommPort "COM5", "Baud=19200, parity=n, data=8, stop=1, xon=off, rts=off" End Sub Sub SendValue(dst As String, v As Variant, svrinfo As String) CommSend "S" & dst & "V" & CStr(v) & Chr(13) FireReceiveValue dst, v End Sub

Support Area


Knowledge Base

Here you will find answers, solutions to problems and examples of our products.

Case Studies

Successful in use: practical examples of our products and individual developments.


Describe your concern using our support form.

License registration

Register your Elvis license!

IT GmbH · An der Kaufleite 12 · D-90562 Kalchreuth

© Copyright 2024. IT GmbH | Webdesign by Appear Online