V-Control is designed to control devices. A device can be anything that has a control interface. Typical control interfaces are serial (RS232, RS422 and RS285), Network (TCP, UDP or HTTP), MIDI, DMX, dry contacts, wet contacts etc.
So, from small sensors up to huge LED screens you can control anything with V-Control.
The philosophy is to have a virtual device in V-Control for each real device that is being controlled. The virtual device (in V-Control its the device driver) is a representation of the real device.
The (virtual) device driver requests the status of the controlled device and offers commands to control it. The status of a device is represented by device variables. A projector for example can have a variable for Power state, showing if the projector is switched on and of. And a second variable for Input, showing which input is currently selected. The number of device variables depends on the device itself and is not limited.
To act on variable changes we create event handler. Event handler are listed in the Event List. Here we create a condition, and if the condition is true, the task that is linked to the event is executed.
To control the device, a device driver has commands. A command can be a Play command for a player, or an input switch for a projector. V-Control has many device drivers build in, and if one uses one of those drivers, there is no need to know what exactly has to be send to the device to perform the command. The driver offers a command such as “Switch Input to DVI”, and it generates the necessary string and send it to the device.
A channel is a physically present communication interface such as RS232, TCP, UDP etc. The channel is the object that is used to talk to the device attached to the V-Control PC. A Device in V-Control doesn't care what kind of channel is used. You can send the same command via RS232 or TCP, it depends only which channel is assigned to the device.
Tasks are a group of commands. The simplest type of task is a cuelist. A task should be only a part of the whole show. You can compare tasks with functions, methods or subs in other programming languages. A task is always running in its own thread.
V-Control knows three types of tasks. A cuelist is just a list of cues. If a cuelist is started it runs from top to bottom and executes the commands in the list. Cuelists only know a limited number of branch commands such as “Repeat”, “CallAsFunction” or “CallAsThread”. Because a cuelist is limited in flexibility, it is very easy to use, and most of the work can be done in cuelist.
Scripts have all the power one may need for complex tasks. They are programmed in basic, but compile before running.
Timestrips are comparable to timelines, but the representation is a table.
Any type of task can call any type of task. In a cuelist task one can call a script task or a timestrip task and vice versa.