In this project, we were tasked with developing a system which could communicate with a NMEA-0183 compliant GPS Receiver, and calculate basic heading and displacement telemetry suited for a vehicular application. This was originally intended to operate on an ATMEL 8-bit Microcontroller, paired with a Character LCD Display.
Due to COVID-19, the project was adapted to take advantage of the Microsoft .NET Framework, by creating a User Interface (with a pre-determined feature set and layout) which ran on a Windows™ client. GPS telemetry would be communicated via a GPS Receiver emulated on a COM Port. Despite this change of circumstances, considerations were made in the development of the interface to ensure reduced overhead in processing and storage of information.
The design of the application was broken into three classes: A class to store information about each coordinate instance; A class to process the co-ordinate information and generate the telemetry required; And, a class which interfaces between the Windows Form Application and the other classes. Classes could be instantiated to operate asynchronously, to increase the reliability of the application.
Algorithms were created to process the data from each NMEA string and store the necessary data into coordinate objects. The objects were stored in a Queue collection, rather than a primitive array. This kept coordinates in a FIFO order, and mitigating issues associated with potential race conditions.
The interface allowed for configuration of the GPS Receiver connected to the COM port, viewing the raw NMEA strings received, and calculated telemetries from the other classes. It also implemented a graphed view of the speed based off the GPS coordinates.
A 25-page report submitted with the application reviewed the development process, and highlighted several areas for improvement (including the practicality of the code developed, how it can be adapted into future systems, and issues associated with GPS-based displacement calculations).