NOVA-Server
The NOVA-Server is the software part of the NOVA-System. The main idea behind the software approach was to simplify the simultaneous access to the hardware from applications, which have been developed with different software tools and programming languages. The applications communicate via an interface DLL (dynamic link library) with the server. The server manages the access to the hardware and the NOVA-Stack. The user applications start the server and establish a connection to the server. From this point on it is possible to send messages to all connected parts of the NOVA-Systems and read the responds from the stack.
NOVA-Stack
The user sends messages to the NOVA-Devices. These messages have the same structure like CAN messages. If necessary the NOVA-Server bundles the message and sends them as block over the USB-Bus to the NOVA-Controller. The NOVA-Controller serializes the messages, generates CAN messages, and sends them via the CAN-Bus to the connected NOVA-Devices. For each message, a reply is send. Inside the NOVA-Server all replies receive a time stamp before they are put on the NOVA-Stack. All returned messages are sorted by device IDs, command numbers, and data blocks. So each message can be unambiguously accessed.
Interface DLL
During the installation the setup program (setup.exe) copies one interface DLL (dynamic link library) to the installation directory. Additionally the setup routine sets a registry key with path information of the installation directory. The interface can use this DLL (CClientdll.dll) with common programming environments, or you can put a copy of this file to given working directories. If you link the DLL to your own program (implicit or explicit) the DLL looks for the registry key to know how to find the “NOVAServer.exe”. With the open command, which is one of the exported functions of the DLL, the CClientdll.dll or the underlying process first tries to start the NOVA-Server. If the server is present, the CClientdll.dll tries to establish an inter process communication (IPC) to the server. If the server is already running, new clients, a combination of client application and CClientdll.dll are able to connect to the running IPC-server (NOVA-Server).
Topology of an extended NOVA-System
It is possible to start more than one NOVA-Server at the same time; each server is connecting to its own network. Every NOVA-Controller has its own EEID, a number which goes from [0...15] and which is stored in each NOVA-Controller. A function in the CClientdll.dll starts the NovaServer.exe with a command line parameter. The command line parameter for the NOVA-Controller with the EEID=0 is zero and looks like “NovaServer.exe 0”. If the NOVA-Controller with the selected number is found and the controller and driver work without errors the NOVA-Server continues with further steps. If the NOVA-Controller with the appropriated number isn’t present or not reachable, the execution stops with an error message or an error number is given back by the open() function.
Broadcast message
To get an overview of the connected NOVA-Devices it’s possible to send a broadcast message to the bus. All NOVA-Devices send a reply to this message with there unique Device-ID.