virtual public InstrumentDataReport  CreateInstrumentDataReport(InstrumentDataManager manager,
                                                                        byte deviceId
                                                                        )
        {
            InstrumentDataReport dr = null;

            switch (deviceId)
            {
            case  6: dr = new InstrumentDataReportText(manager, deviceId);
                break;

            case  7: dr = new InstrumentDataReportIllumination(manager, deviceId);
                break;

            case  8: dr = new InstrumentDataReportCTD(manager, deviceId, InstrumentDataReportCTD.OutPutFormat.EngineeringUnitsInDec);
                break;

            case  9: dr = new InstrumentDataReportGPS(manager, deviceId);
                break;

            case 10: dr = new InstrumentDataReportFlowMeter(manager, deviceId);
                break;


            default: dr = new InstrumentDataReport(manager, deviceId);
                break;
            }

            return(dr);
        } /* CreateInstrumentDataReport */
        } /* InitializeLatitude */

        /// <summary>
        /// Assigns the reporter.
        /// </summary>
        /// <param name="deviceID">The device ID coming from the SIPPER file.  See Sipper3 File Format.
        ///                        see Sipper3File.cs
        /// </param>
        /// <param name="reporter">The reporter.</param>
        public void  AssignReporter(byte deviceID,
                                    InstrumentDataReport reporter
                                    )
        {
            if ((deviceID < 0) || (deviceID >= MaxNumOfDevices))
            {
                throw new Exception("DeviceID[" + deviceID.ToString() + "] out of range.");
            }

            reporters[deviceID] = reporter;
        } /* AssignReporter */
        } /* ReportSerialPortData */

        public void  ReportData(byte deviceId,
                                string txt
                                )
        {
            if ((deviceId < 0) || (deviceId >= reporters.Length))
            {
                return;
            }

            if (reporters[deviceId] == null)
            {
                reporters[deviceId] = new InstrumentDataReport(this, deviceId);
            }

            reporters[deviceId].ReportData(txt);
        } /* ReportData */