public IGPSSatelliteVehicle[] GetSatelliteData() { GPSSatDataType[] iQueSatData = new GPSSatDataType[maxSatellites]; ushort err = GPSGetSatellites(iQueSatData); if (err == 0) { // Work out how many satellites are in view. int numSatellitesInView = 0; for (int i = 0; i < maxSatellites; i++) { if (iQueSatData[i].svid != 255) { numSatellitesInView++; } } // Construct the satellite data class. IGPSSatelliteVehicle[] satelliteVehicles = new IGPSSatelliteVehicle[numSatellitesInView]; int index = 0; for (int i = 0; i < maxSatellites; i++) { if (iQueSatData[i].svid != 255) { GPSSatelliteVehicle vehicle = new GPSSatelliteVehicle(); vehicle.PRN = iQueSatData[i].svid; vehicle.AziumthDegrees = (int)Math.Round(iQueSatData[i].azimuth * 180 / Math.PI); vehicle.ElevationDegrees = (int)Math.Round(iQueSatData[i].elevation * 180 / Math.PI); vehicle.SNRdB = iQueSatData[i].snr / 100; vehicle.HaveEphemerisData = (iQueSatData[i].status & gpsSatEphMask) > 0; vehicle.HaveDifferentialCorrection = (iQueSatData[i].status & gpsSatDifMask) > 0; vehicle.UsedInFix = (iQueSatData[i].status & gpsSatUsedMask) > 0; vehicle.IsRising = (iQueSatData[i].status & gpsSatRisingMask) > 0; satelliteVehicles[index++] = vehicle; } } // Return the result. return(satelliteVehicles); } else { return(null); } }
public IGPSSatelliteVehicle[] GetSatelliteData() { GPSSatDataType[] iQueSatData = new GPSSatDataType[maxSatellites]; ushort err = GPSGetSatellites(iQueSatData); if (err == 0) { // Work out how many satellites are in view. int numSatellitesInView = 0; for (int i = 0; i < maxSatellites; i++) if (iQueSatData[i].svid != 255) numSatellitesInView++; // Construct the satellite data class. IGPSSatelliteVehicle[] satelliteVehicles = new IGPSSatelliteVehicle[numSatellitesInView]; int index = 0; for (int i = 0; i < maxSatellites; i++) { if (iQueSatData[i].svid != 255) { GPSSatelliteVehicle vehicle = new GPSSatelliteVehicle(); vehicle.PRN = iQueSatData[i].svid; vehicle.AziumthDegrees = (int)Math.Round(iQueSatData[i].azimuth * 180 / Math.PI); vehicle.ElevationDegrees = (int)Math.Round(iQueSatData[i].elevation * 180 / Math.PI); vehicle.SNRdB = iQueSatData[i].snr / 100; vehicle.HaveEphemerisData = (iQueSatData[i].status & gpsSatEphMask) > 0; vehicle.HaveDifferentialCorrection = (iQueSatData[i].status & gpsSatDifMask) > 0; vehicle.UsedInFix = (iQueSatData[i].status & gpsSatUsedMask) > 0; vehicle.IsRising = (iQueSatData[i].status & gpsSatRisingMask) > 0; satelliteVehicles[index++] = vehicle; } } // Return the result. return satelliteVehicles; } else { return null; } }
private static extern byte GPSGetSatellites(GPSSatDataType[] satData);
private static extern QueErrT16 GPSGetSatellites(ref GPSSatDataType sat);