Compartilhar via


Using the GPS Intermediate Driver from Managed Code

Windows Mobile SupportedWindows Embedded CE Not Supported

9/8/2008

O driver intermediário de GPS é uma camada software que se situa entre aplicativos e o driver de dispositivo para hardware de GPS. Essa camada de abstração permite que os aplicativos ser gravado uma vez e trabalho com múltiplo dispositivos de GPS. The GPS Intermediate Driver API is exposed through a native code library. Você pode obter acessar para esta biblioteca de código gerenciado, usando o exemplo que acompanha o Windows Mobile 6 Professional SDK. Por padrão, este exemplo é instalado no seguinte localidade:

C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS

Usando o exemplo de GPS gerenciado

O projeto exemplo GPS incluído no SDK é um gerenciado wrapper para o GPS Intermediate Driver que usa pInvoke Chamadas para acessar a biblioteca nativa. Ao criar seu próprio gerenciado de GPS aplicativo, compilação o projeto exemplo e adicionar uma referência ao assembly de saída para seu projeto. Em seguida, adicionar o seguinte usando diretiva para sua codificar.

using Microsoft.WindowsMobile.Samples.Location;

Observação

O Windows Mobile Version 5.0 SDK fornecido com uma versão preliminar do gerenciado exemplo de GPS.Você deve instalar o Windows Mobile 6 SDK e usar o exemplo de GPS a partir dessa instalação, mesmo se você tiver como alvo Windows Mobile Version 5.0-com os dispositivos.

Depois de você ter adicionado uma referência ao assembly de exemplo para seu aplicativo, você pode acessar o GPS dispositivo por meio de GPS WScript.Shell. O GpsDeviceState e GpsPosition auxiliar objetos armazenar informações sobre o dispositivo de GPS e sua atual localidade, respectivamente.

Gps gps = new Gps();
GpsDeviceState device = null;
GpsPosition position = null;

Adicionar Manipuladores evento para o DeviceStateChanged e LocationChanged Eventos da GPS objeto de modo que seu aplicativo é alertado ao status de dispositivo ou sua localidade dados são atualizados, o dispositivo.

updateDataHandler = new System.EventHandler(UpdateData);
gps.DeviceStateChanged += new Microsoft.WindowsMobile.Samples.
Location.DeviceStateChangedEventHandler(gps_DeviceStateChanged);
gps.LocationChanged += new Microsoft.WindowsMobile.Samples.
Location.LocationChangedEventHandler(gps_LocationChanged);

Quando você implementar esses manipuladores evento, você deve usar Chamar ao disparador um evento no segmento do seu aplicativo rather than mantendo backup segmento do dispositivo de GPS. O seguinte exemplo obtém as informações posição de GPS a partir de LocationChangedEventArgs e, em seguida, chama o manipulador de eventos updateDataHandler que é definida em qualquer lugar no aplicativo.

protected void gps_LocationChanged(object sender, 
                                    LocationChangedEventArgs args)
{
  position = args.Position;
  Invoke(updateDataHandler);
}

Em manipulador de eventos do seu aplicativo para dados de GPS, você usar o GpsDeviceState e GpsPosition Objetos auxiliar para acessar os dados.

void UpdateData(object sender, System.EventArgs args)
{
  if (gps.Opened)
  {

    // verify that the device object is not null
    if (device != null)
    {
       // display device status
       StatusLabel.Text = device.FriendlyName + "Status: " +
       device.ServiceState + ", " + device.DeviceState;
    }

    // verify that the position object is not null
    if (position != null)
    {
      //The position object exposes
      // additional properties that indicate 
      //which properties are currently valid.
      if (position.LatitudeValid)
      {
        // display latitude
        LatitudeLabel.Text = "Latitude(D,M,S): " + 
        position.LatitudeInDegreesMinutesSeconds;
      }
      …