Auto-Detection Over Various Protocols In C++
Simplifying the use of RadiMation®Auto-Detection Over Various Protocols In C++
Simplifying the use of RadiMation®Samenvatting
This thesis is about my assignment to simplify a complex software product called RadiMation®. RadiMation® is an application, written in C++, and is used to automate a range of EMC testing.
This document also has the purpose of providing information about how the interfaces and device drivers within the application are selected and how, through the changes applied to the source code, the configuration of RadiMation® has been simplified. In essence, the assignment is split into three parts, and is completely focussed on C++ programming and changing the source code to achieve the desired result.
RadiMation® is a software application developed and marketed by DARE!! BV. DARE!! is a company that produces hardware and software focused on the automation of EMC measurements. EMC in short is Electromagnetic Compatibility, basically making sure that no noise or as little noise as possible is generated inside a device that might disturb other devices. Hardware wise, DARE!! has created various devices such as power meters and a RadiCentre, a large hub for different interface cards and devices that support further automation of EMC testing. This RadiCentre is connected to RadiMation® (see page 1).
These assignments are related to the auto-detection of various protocols such as GPIB, RS-232 and USB, as well as the removal of duplicate options to make the configuration for the end user an easier process. The three assignments are the following:
1. Improvement of the auto-detection with USB.
Before the modifications were applied, the detect button would only work when a single device was connected. It would give the user a message to disconnect any other devices and then press the button again. My first assignment was targeted to detect the devices that are connected and give the user the possibility to select the device from a pop-up list.
This first assignment, the improvement of auto-detection with USB, is about finding the name of the currently loaded device driver, fetches a list of all currently connected devices through USB. Then for each device identifies their names and compares it with the name of the loaded device driver. This scan is also possible in case a RadiCentre®, a box with interface cards that is connected to RadiMation®, is used. Depending on the number of matches, there is could be no match, which results in an error message, one match, which results in all the data being filled in automatically, and more than one match, which results in a GUI popping up showing a list of all matches, in which the end user has to make a unique selection from.
2. Removal of duplicate options that confuse the end user.
It used to be confusing for the end user to select the correct protocol as, for example, the GPIB protocol could be chosen through the standard listed protocols, or via the GPIB options through the VISA protocol. My second assignment has the purpose to simplify the selection of possible protocols the software uses to communicate with the device.
The device driver has various protocols that are similar in the type of settings they have, such as GPIB and CompliantGPIB, that both have the same list of settings. This is quite confusing for the end user.
To solve this, the code is modified and now runs a priority system. There is HTTP, TCPIP, RSIB and UDP, all taking one address. There are two variants of USB as well. There are a few protocols that have no alternatives, so they are left as is, such as RS-232. On top of this, there is VISA, a library that can go through all of these communication methods in a better way. Therefore, based on what the end user chose as communication method (HTTP, USB, RS-232 or GPIB), RadiMation® attempts communication through VISA first. If this fails, it will attempt to use the next protocol down the line, until it finds a protocol that works or until it is out of options and results in an error message.
3. Introduction of auto-detection with GPIB and RS-232.
The goal of the third assignment is the introduction of auto-detection with the RS-232 and GPIB protocols, as this was not available. The auto-detection for each of these protocols work in a similar way. Both will create a list of all connected devices and then run a function called CheckDevice() on each connected device, returning an error in case the connected device is not the one of the currently loaded driver. Now, the devices that return no error are added to a list and from there it is decided what has to happen, similar to that described in the USB solution above. No matches return an error message. One match, data will be automatically filled in and more than one match results in a GUI window popping up requesting the end user to make a unique selection.
Although all assignments have been completed and they deliver the desired result, this internship has been quite challenging for its many new and advanced concepts of C++. In combination of the complexity of the application. The complexity of the general structure of the code and the large number of classes (>4500) took a few weeks to comprehend and even then, it wasn’t completely clear to me. However, I have been able to significantly improve my C++ capabilities as well as other competences, like Analysis, Research and Solution Design.
Even after the simplification that has been realized by changing sections of the source code, there is still more simplification possible and required as RadiMation® continues to be a quite complex software product.
This report may help others within DARE!! to get quicker access to information required to perform further simplification.
Organisatie | De Haagse Hogeschool |
Opleiding | TIS Elektrotechniek |
Afdeling | Faculteit Technologie, Innovatie & Samenleving |
Partner | DARE!! |
Jaar | 2020 |
Type | Bachelor |
Taal | Engels |