The RaceDragon and RaceDisplay (formerly known as PiRaceTime and PiRaceDisplay) is a completely from scratch designed software solution to interact with the timing loop and decoder already used by a German go-karting track. The formerly used software was ancient (running on Windows 98) by the point we got the order to develop a new solution with modern look tailored to the requirements of this specific karting track. I manage this software solution from conception to delivery and maintenance.
The Challenge
As the hardware that can still run Windows 98 reliably gets more and more sparse, we faced with the problem of either replacing the old computers in case one breaks, or to develop a completely new software solution to interact with a more or less unknown proprietary protocol over RS-232 used by the timing loop decoder. Since the karting track also wanted to have new features added, with the original developer of their software out of business, the decision was made to rewrite the whole solution using modern frameworks and approaches.
We decided for the following:
- Modularity: The time keeping and display softwares are separated, allowing one time keeping server to control multiple display clients on a vast majority of operating systems all over the site.
- Ease of use: The clients only require a very minimal effort of configuration to get running, this is backed by mDNS/Bonjour.
- Reliability: As it is very important to keep track of the correct passing/lap/difference-times, all passings are logged as they happen, allowing to investigate problems if any occur. Moreover both the new software and the already established solution was ran in parallel to have a fallback and to compare results in the first year of use.
The Solution
We decided to go with two desktop applications written in C++ with the Qt Framework for GUI. While the timing application is a more traditional application with typical user interface elements like buttons, lists and modals, the display application is primarily a fullscreen list, with custom styling and automatic resizing based on the number of karts on the track to require no scrolling at all. For the communication between display and timing software we developed a JSON protocol, which gets sent over UDP multicast (in environments where mDNS does not work or as fallback) and over TCP sockets from the server (timing application) to the client(s) (display application). The timing application allows the operator to set up kart numbers, connect those with driver- or team-names, select the kind of race (race, qualifiying, training), which affects the positioning of the karts in the rank list. Also it is possible to set a race duration and start/stop a race, the timing application also controls a LED display which shows the remaining time of the race. Moreover it is possible to print either the current, or any past race with the click of a single button for archival or to give the rental kart drivers a little souvenir of their trip.
The display allows for configuration of background and foreground colors, and to enable/disable fullscreen mode. It is lightweight and can run and is tested on Windows, Linux and macOS. It is also possible to run the display on a single board computer like the RaspberryPi, making it perfect for use away from the main site without the need to run long VGA cables, which were needed in the past, as there was only one central computer displaying the ranking information.
Maintenance
We are still actively maintaining the software, adding more features as they get requested and fixing bugs as they arise. Our software solution is now running multiple years in production without any bigger issues. If you are interested in using this solution for your own karting track, feel free to send me an email to the address below! Support for other decorders and protocols is planned to be added when requested!