Share via


Demonstra Passo a passo: Trocando dados entre a área de trabalho e aplicativos de dispositivo

Esta explicação passo a passo, você irá criar um aplicativo do agente do dispositivo, um aplicativo de área de trabalho e um complemento pacote no armazenamento de dados.O aplicativo de área de trabalho irá implantar e iniciar o agente de dispositivo, dependendo das informações no complemento pacote.O aplicativo de área de trabalho será e, em seguida, trocar dados de pacote com o aplicativo de agente de dispositivo e encerre.Você concluirá as seguintes tarefas:

  • criar um aplicativo de agente de dispositivo gerenciado.

  • Criar um complemento pacote para o aplicativo de agente do dispositivo.

  • criar um aplicativo de área de trabalho que inicia o pacote e se comunica com o agente de dispositivos.

Observação:

Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio.

Criar um aplicativo de agente de dispositivo

Para criar um aplicativo de agente de dispositivo

  1. Inicie o Visual Studio

  2. No menu File, aponte para New, e em seguida, clique em Project.

    A caixa de diálogo New Project será exibida.

  3. (Translation from VPE for Csharp visual) expandir Translation from VPE for Csharp Visuale, em seguida, clicar dispositivo inteligente.Nomeie o projeto DeviceAgent nome da solução e DataExchange.Clique em OK.

    (Visual Basic) expandir Visual Basice, em seguida, clicar dispositivo inteligente.Nomeie o projeto DeviceAgent nome da solução e DataExchange.Clique em OK.

    The Adicionar novo projeto dispositivo SMART caixa de diálogo é exibida.

  4. selecionar SDK do Windows Mobile 5.0 Smartphone para a plataforma de destino, clicar Aplicativo de console in the Modelos painel e, em seguida, clicar OK.

    O novo projeto DeviceAgent é exibido em O gerenciador de soluções.

  5. (Translation from VPE for Csharp visual) clicar com o botão direito do mouse em Referências in O gerenciador de soluções e, em seguida, clique em Adicionar referência.

    (Visual Basic) clicar com o botão direito do mouse em DeviceAgent in O gerenciador de soluções e, em seguida, clique em Adicionar referência.

    The Adicionar referência caixa de diálogo é exibida.

  6. clicar no Procurar guia e navegar até unidade: \programa Files\Common Files\Microsoft Shared\CoreCon\1.0\destino\Lib.clicar Microsoft.smartdevice.DeviceAgentTransport.dll e, em seguida, clicar OK.

    Uma referência para Microsoft.smartdevice.DeviceAgentTransport é adicionada para o projeto.

  7. clicar duas vezes em programa.cs (translation from VPE for Csharp) ou Module1.vb (Visual Basic) na O gerenciador de soluções para em em aberto o arquivo no Editor de código se ainda não estiver aberta.

  8. Posicione o cursor no início do arquivo.

  9. Insira o seguinte código:

    using Microsoft.SmartDevice.DeviceAgentTransport;
    
    Imports Microsoft.SmartDevice.DeviceAgentTransport
    
  10. Posicione o cursor dentro de Main método.

  11. Insira o seguinte código:

    string[] serviceids = {"A92866CA-AE83-4848-9438-501D8DB3CF25"};
    
    IDeviceAgentTransport transport = DeviceAgentTransportFactory.GetAgentTransport();
    
    // Don't keep it waiting.
    transport.AcknowledgeLaunch(1, serviceids);
    
    IDevicePacketStream packetstream;
    
    transport.AcceptConnectionEx(serviceids[0], out packetstream);
    IPacket packet;
    packet = PacketFactory.GetNewPacket();
    packet.WriteInt32(Environment.Version.Major);
    packet.WriteInt32(Environment.Version.Minor);
    packet.WriteInt32(Environment.Version.Build);
    packet.WriteInt32(Environment.Version.Revision);
    packetstream.Write(packet);
    
    Dim serviceids(0 To 0) As String
    serviceids(0) = "A92866CA-AE83-4848-9438-501D8DB3CF25"
    
    Dim transport As IDeviceAgentTransport = DeviceAgentTransportFactory.GetAgentTransport()
    
    ' Don't keep it waiting.
    transport.AcknowledgeLaunch(1, serviceids)
    
    Dim packetstream As IDevicePacketStream
    
    transport.AcceptConnectionEx(serviceids(0), packetstream)
    Dim packet As IPacket
    packet = PacketFactory.GetNewPacket()
    packet.WriteInt32(Environment.Version.Major)
    packet.WriteInt32(Environment.Version.Minor)
    packet.WriteInt32(Environment.Version.Build)
    packet.WriteInt32(Environment.Version.Revision)
    packetstream.Write(packet)
    

    O código anterior cria um IDeviceAgentTransport objeto e, em seguida, aceita uma conexão do computador de mesa. O programa envia um pacote para o computador Área de trabalho que contém informações de versão do .NET Compact estrutura.

  12. Sobre o Compilação menu, clicar Criar solução.

    Agora você tem um aplicativo de dispositivo SMART chamado DeviceAgent.Mais tarde você implantará desse aplicativo para o dispositivo.

Crie um pacote complemento o Datastore.

Para criar um pacote complementar no armazenamento de dados

  1. Inicie o bloco de notas.

  2. Copie o seguinte arquivo do bloco de notas:

    <?xml version="1.0" standalone="no"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/">
        <ADDONCONTAINER>
          <ADDON>
            <PACKAGECONTAINER>
              <PACKAGE ID="" NAME="DeviceAgent">
                <PROPERTYCONTAINER />
                <PACKAGETYPECONTAINER>
                  <PACKAGETYPE Name="ARMV4I" ID="ARMV4I" Protected="True">
                    <PROPERTYCONTAINER>
                      <PROPERTY ID="RemotePath" Protected="True">%CSIDL_PROGRAM_FILES%\DeviceAgent</PROPERTY>
                      <PROPERTY ID="RootPath" Protected="True">C:\DataExchange\DeviceAgent\bin\Debug</PROPERTY>
                      <PROPERTY ID="CPU" Protected="True">ARMV4I</PROPERTY>
                      <PROPERTY ID="Host" Protected="True">DeviceAgent</PROPERTY>
                    </PROPERTYCONTAINER>
                    <FILECONTAINER>
                      <FILE ID="DeviceAgent.exe" />
                      <FILE ID="Microsoft.Smartdevice.DeviceAgentTransport.dll" />
                      <FILE ID="DeviceAgentTransport.dll" />
                    </FILECONTAINER>
                  </PACKAGETYPE>
                </PACKAGETYPECONTAINER>
              </PACKAGE>
            </PACKAGECONTAINER>
          </ADDON>
        </ADDONCONTAINER>
      </xsl:template>
    </xsl:stylesheet>
    
  3. In Visual Studio, sobre o Ferramentas menu, clicar Criar GUID.

    The Criar GUID caixa de diálogo é exibida.

  4. selecionar Formato do registro, clicar Cópiae, em seguida, clicar Sair.

  5. Cole o GUID no bloco de notas no atributo ID da marca de pacote e remova as chaves que envolvem o GUID.

    Por exemplo, <Package ID="9C50B38D-4259-40b3-AE9F-C5887DD898FF" Name="DeviceAgent">.

  6. Alterar o valor de <PROPERTY ID="RootPath" Protected="True"> marca para a pasta onde DeviceAgent.exe está localizado.

    Por exemplo, <PROPERTY ID="RootPath" Protected="True">c:\DataExchange\DeviceAgent\bin\debug</PROPERTY>.

    Observação:

    Para determinar o local do DeviceAgent.exe, clicar com o botão direito do mouse o projeto DeviceAgent em O gerenciador de soluções e, em seguida, clicar Propriedades.clicar no Compilação guia e, em seguida, clicar Procurar next to Caminho de saída.

  7. Copie o unidade: \programa Files\Common Files\Microsoft Shared\CoreCon\1.0\destino\wce400\armv4i\DeviceAgentTransport.dll biblioteca para o caminho especificado no caminho raiz.

    Observação:

    Essa etapa é importante porque o Microsoft.smartdevice.DeviceAgentTransport.dll assembly usa o Biblioteca DeviceAgentTransport.dll.Os dois arquivos devem ser implantados com nosso aplicativo.

  8. No bloco de notas, salvar o arquivo.

    \ProgramData\Microsoft\corecon\1.0\addons\pacote.XSL (Windows Vista)

    \Documents and Settings\All Users\aplicativo dados\Microsoft\corecon\1.0\addons\pacote.xsl (outros)

    Observação:

    Se a Nome do Arquivo pacote.xsl já está que está sendo usado , Use outro nome.O Nome do Arquivo não é importante porque todos sistema autônomo arquivos na pasta são processados sistema autônomo complemento pacotes.

  9. Saia e reinicie o Visual Studio.

    O Visual Studio carrega o complemento pasta do pacote ao ser iniciado.Se o Visual Studio iniciar corretamente, o pacote é disponível de erros de sintaxe.

    O armazenamento de dados agora contém um pacote complementar com o nome DeviceAgent e uma ID gerada exclusivamente por Visual Studio. Quando o pacote for implantado, a API de conectividade dispositivo inteligente copiará três arquivos da pasta de saída do projeto DeviceAgent para unidade: \programa arquivo\DeviceAgent diretório.Em seguida, ele executará DeviceAgent.exe no dispositivo.

Criar um aplicativo de área de trabalho que implanta o pacote e comunica com o agente de dispositivo

Para criar um aplicativo de área de trabalho que implanta o pacote e se comunica com o agente de dispositivo

  1. In Visual Studio, sobre o Arquivo , aponte para em abertoe, em seguida, clicar Projeto/solução.

    The em em aberto projeto caixa de diálogo é exibida.

  2. navegar até a solução DataExchange.sln e, em seguida, clicar em aberto.

    O gerenciador de soluções aparece com o aplicativo DeviceAgent.

  3. No menu File, aponte para Add, e clique New Project.

    A caixa de diálogo New Project será exibida.

  4. (Translation from VPE for Csharp visual) expandir Translation from VPE for Csharp Visual e, em seguida, clicar Windows.

    (Visual Basic) expandir Visual Basic e, em seguida, clicar Windows.

  5. No Modelos painel, clicar Aplicativo de console.

  6. Nomeie o projeto DesktopSide e, em seguida, clicar OK.

    O gerenciador de soluções contém dois projetos: DeviceAgent e DesktopSide.

  7. clicar com o botão direito do mouse o projeto DesktopSide em O gerenciador de soluções e, em seguida, clique em conjunto sistema autônomo projeto de inicialização.

  8. (Translation from VPE for Csharp visual) clicar com o botão direito do mouse em Referências no projeto DesktopSide em O gerenciador de soluções e, em seguida, clique em Adicionar referência.

    (Visual Basic) clicar com o botão direito do mouse em DesktopSide in O gerenciador de soluções e, em seguida, clique em Adicionar referência.

    The Adicionar referência caixa de diálogo é exibida.

  9. clicar no Procurar guia, navegar até unidade: \programa Files\Common Files\Microsoft Shared\CoreCon\1.0\Bin, clicar Microsoft.smartdevice.conectividade.dll e, em seguida, clicar OK.

    Uma referência ao Microsoft.smartdevice.conectividade é adicionada ao projeto DesktopSide.

  10. clicar duas vezes em programa.cs (translation from VPE for Csharp) ou Module1.vb (Visual Basic) no projeto DesktopSide em O gerenciador de soluções para em em aberto o arquivo no Editor de código se ainda não estiver aberta.

  11. Posicione o cursor no início do arquivo.

  12. Insira o seguinte código:

    using Microsoft.SmartDevice.Connectivity;
    using System.Collections.ObjectModel;
    
    Imports Microsoft.SmartDevice.Connectivity
    Imports System.Collections.ObjectModel
    
  13. Posicione o cursor dentro de Main método.

  14. Insira o seguinte código:

    // Change the locale ID to correspond to your installation of Visual Studio.
    DatastoreManager dsmgr = new DatastoreManager(1033);
    Platform platform = GetPlatformByName("Windows Mobile 5.0 Smartphone SDK", dsmgr);
    Device emulator = platform.GetDevice(platform.GetDefaultDeviceId());
    emulator.Connect();
    // Add the GUID of your package below.
    RemoteAgent ra = emulator.GetRemoteAgent(new ObjectId(""));
    ra.Start("command line argument");
    DevicePacketStream ps = ra.CreatePacketStream(new ObjectId("A92866CA-AE83-4848-9438-501D8DB3CF25"));
    Packet packet;
    packet = new Packet();
    while (ps.IsConnected())
    {
        if (ps.IsPacketAvailable())
        {
            packet = ps.Read();
            while (!packet.IsEndOfPacket())
            {
                switch (packet.ReadDataType())
                {
                    case DataType.Int32Type:
                        Console.WriteLine("Int32Type:  " + packet.ReadInt32().ToString());
                        break;
                    case DataType.StringType:
                        Console.WriteLine("String:  " + packet.ReadString());
                        break;
                    default:
                        break;
                }
            }
            break;
        }
    }
    Console.Read();
    
    ' Change the locale ID to correspond to your installation of Visual Studio.
    Dim dsmgr As New DatastoreManager(1033)
    Dim platform As Platform = GetPlatformByName("Windows Mobile 5.0 Smartphone SDK", dsmgr)
    Dim emulator As Device = platform.GetDevice(platform.GetDefaultDeviceId())
    emulator.Connect()
    ' Add the GUID of your package below.
    Dim ra As RemoteAgent = emulator.GetRemoteAgent(New ObjectId(""))
    ra.Start("command line argument")
    Dim ps As DevicePacketStream = ra.CreatePacketStream(New ObjectId("A92866CA-AE83-4848-9438-501D8DB3CF25"))
    Dim packet As Packet
    packet = New Packet()
    While ps.IsConnected()
        If ps.IsPacketAvailable() Then
            packet = ps.Read()
            While Not packet.IsEndOfPacket()
                Select Case packet.ReadDataType()
                    Case DataType.Int32Type
                        Console.WriteLine("Int32Type:  " + packet.ReadInt32().ToString())
                    Case DataType.StringType
                        Console.WriteLine("String:  " + packet.ReadString())
                    Case Else
                End Select
            End While
            Exit While
        End If
    End While
    Console.Read()
    

    O código anterior se conecta a um emulador do Windows Mobile 5.0 e implanta o agente remoto do dispositivo.Em seguida, ele estabelece uma conexão com o dispositivo e lê dados de pacote.As informações de ler do dispositivo são exibidas no console.

  15. Adicionar ID do seu pacote a emulator.GetRemoteAgent(new ObjectId("")).

    Por exemplo, emulator.GetRemoteAgent(new ObjectId("F85E57BA-5AE9-4FF7-8433-6AB7D991D034"))

  16. Cole o seguinte método auxiliar sob o Main método:

    // Return a platform if the supplied name can be found in the datastore.  
    // Return null pointer if platform cannot be found.
    private static Platform GetPlatformByName(string p, DatastoreManager dsmgr)
    {
        // Get all platforms in the datastore.
        Collection<Platform> platforms = dsmgr.GetPlatforms();
    
        // Find the platform whose name matches the parameter.
        foreach (Platform platform in platforms)
        {
            if (platform.Name == p) return platform;
        }
        return null;
    }
    
    ' Return a platform if the supplied name can be found in the datastore.  
    ' Return null pointer if platform cannot be found.
    Private Function GetPlatformByName(ByVal p As String, ByVal dsmgr As DatastoreManager) As Platform 
        ' Get all platforms in the datastore.
        Dim platforms As Collection(Of Platform) = dsmgr.GetPlatforms()
    
        ' Find the platform whose name matches the parameter.
        Dim platform As Platform
        For Each platform In  platforms
            If platform.Name = p Then
                Return platform
            End If
        Next platform
        Return Nothing
    
    End Function 'GetPlatformByName
    
  17. Pressione F5 para depurar o projeto DesktopSide.

    DesktopSide conecta-se e começa o emulador caso o emulador não tenha sido iniciado.Em seguida, implanta o pacote e inicia o aplicativo DeviceAgent.Em seguida, DesktopSide e DeviceAgent serão trocar informações de pacote e exibi-lo para o usuário.

Consulte também

Conceitos

Controle de dispositivos com dispositivo inteligente API de conectividade

Visão geral dos pacotes complementares

Outros recursos

dispositivo inteligente Referência de API conectividade

dispositivo inteligente conectividade API Exemplos