Real-Time Graphing of Scientific Data

Acquiring the data from Saber required parsing a text file that documented the data available for the model. The file provided the names, units, datatypes and an index into the binary file for each data element. This was done using a parser generated via lex and yacc. The parser was originally developed by the client. We extended it to provide additional capabilities and updated it to work with current versions of Saber. The data is actually stored in two binary files. We wrote code to monitor these files and read the data as soon as they were written. The newly read data were then filtered based on user-specified criteria and written to an MS Access 2000 database via ADO and the Jet 4.0 database engine.

Acquiring the data from Sinda was accomplished by creating a DLL that exported functions which could be called from within the Sinda model as part of its output routine. This required the addition of only a few lines to any Sinda model, making it easy for the client's engineers to take advantage of this functionality. Once the data were received by the DLL, they were written to an MS Access 2000 database via ADO and the Jet 4.0 database engine.

MS Access 2000 was chosen as the database format to meet the client's requirements that 1) no additional software licenses be required and 2) the data be stored in a format that could be easily exported to other applications such as MS Excel. The client's security policies prevented us from considering Open Source options such as MySQL.

Once the data were written to the database, the GUI was notified and the data were read, separated out and written to the individual graphs. Performance was sufficiently quick to make it appear to the user that the data were being graphed instantly.

The user interface was implemented in MS Visual Basic 6.0 and used the ProEssentials graph controls from GigaSoft, Inc. The data parsing and acquisition pieces were written using Microsoft Visual C++ 6.0

Overview of project
Back to list of projects