Поделиться через


Microsoft.SmartDevice.DeviceAgentTransport - пространство имен

Обновлен: Ноябрь 2007

Данное пространство имен содержит типы, которые составляют ту часть прикладного программного интерфейса (API) подключения смарт-устройств, которая относится к устройству. Управляемые приложения смарт-устройств, которые используют это пространство имен или содержат ссылки на него, называются приложениями агентов устройств. Приложения для настольных ПК, использующие прикладной программный интерфейс (API) подключения смарт-устройств, могут развертывать агенты устройств на устройстве и взаимодействовать с ними посредством обмена пакетными данными. Благодаря этой библиотеке можно посредством программ выполнять обмен данными между устройством и настольным ПК, в то время как прикладной программный интерфейс подключения смарт-устройств обрабатывает информацию о взаимосвязанности устройств и механизмах передачи.

Для использования пространства имен Microsoft.SmartDevice.DeviceAgentTransport в проекте по смарт-устройствам, выполните следующие задачи:

  • В проекте, использующем смарт-устройства, добавьте ссылку на сборку Microsoft.Smartdevice.DeviceAgentTransport.dll (путь:\Program Files\Common Files\Microsoft Shared\CoreCon\1.0\Target\Microsoft.Smartdevice.DeviceAgentTransport.dll).

  • Разверните на смарт-устройстве как библиотеку DeviceAgentTransport.dll в машинном коде (путь:\Program Files\Common Files\Microsoft Shared\CoreCon\1.0\Target\wce400\cpu\DeviceAgentTransport.dll), так и сборку Microsoft.Smartdevice.DeviceAgentTransport.dll в управляемом коде.

Дополнительную информацию см. в разделах Управление устройствами с помощью API подключения интеллектуальных устройств и Пошаговое руководство. Обмен данными между приложениями для настольного ПК и приложениями устройства.

Bb397658.alert_note(ru-ru,VS.90).gifПримечание.

Чтобы создать приложение агента устройства с помощью языка Visual C++, см. раздел Неуправляемый интерфейс API подключения смарт-устройства, расположенный на стороне устройства.

Классы

  Класс Описание
Bb397658.pubclass(ru-ru,VS.90).gif DeviceAgentTransportFactory Используется для получения объектов, реализующих интерфейс IDeviceAgentTransport.
Bb397658.pubclass(ru-ru,VS.90).gif InteropUtils Содержит вспомогательные функции для поддержки совместимости.
Bb397658.pubclass(ru-ru,VS.90).gif PacketFactory Используется для получения объектов, реализующих интерфейс IPacket.

Интерфейсы

  Интерфейс Описание
Bb397658.pubinterface(ru-ru,VS.90).gif IAgentTransportShutdownCallback Определяет методы, которые должен реализовать объект функции обратного вызова по завершении работы.
Bb397658.pubinterface(ru-ru,VS.90).gif IDeviceAgentTransport Используется для взаимодействия с объектом класса RemoteAgent на настольном компьютере.
Bb397658.pubinterface(ru-ru,VS.90).gif IDevicePacketStream Выполняет обмен данным с подключенным объектом класса DevicePacketStream на настольном компьютере посредством чтения и записи объектов, реализующих интерфейс IPacket.
Bb397658.pubinterface(ru-ru,VS.90).gif IPacket Содержит данные и используется объектами, которые реализуют методы интерфейса IDevicePacketStream для передачи данных между приложением агента устройства и настольным компьютером.

Перечисления

  Перечисление Описание
Bb397658.pubenumeration(ru-ru,VS.90).gif DataType Указывает тип данных в интерфейсе Microsoft.SmartDevice.DeviceAgentTransport.IPacket.

Примеры

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SmartDevice.DeviceAgentTransport
Imports System.Windows.Forms


Class Program

    <MTAThread()>  _
    Shared Sub Main(ByVal args() As String) 
        Dim serviceids(0 To 0) As String
        serviceids(0) = "2FAD740C-B5D3-4ad0-BE23-5682503584BF"

        ' Get an instance of Device Agent Transport
        Dim transport As IDeviceAgentTransport = _
            DeviceAgentTransportFactory.GetAgentTransport()
        ' Register the callback object with the Device Agent Transport.
        Dim shutdownCallback As New ShutdownCallback()
        transport.RegisterShutdownCallback(shutdownCallback, shutdownCallback)
        ' Let the desktop application know that this device agent was deployed successfully 
        ' and will handle the supplied list of service IDs.
        transport.AcknowledgeLaunch(Convert.ToUInt32(serviceids.Length), serviceids)

        ' Open a communcation stream with desktop application on the service.
        Dim packetStream As IDevicePacketStream
        transport.AcceptConnectionEx(serviceids(0), packetStream)
        Dim packet As IPacket

        ' Check for a packet while communication stream is connected.
        While packetStream.IsConnected()
            ' If a packet is found, display the string and integer data.
            If packetStream.IsPacketAvailable() Then
                packetStream.Read(packet)
                Dim sb As New StringBuilder()
                While Not packet.IsEndOfPacket()
                    Select Case packet.ReadDataType()
                        Case DataType.BoolType
                            Dim boolValue As Boolean = packet.ReadBool()
                        Case DataType.ByteArrayType
                            ' Read bytes and convert IntPtr to byte[]
                            Dim ptr As IntPtr
                            Dim size As System.UInt32 = 0
                            packet.ReadBytes(ptr, size)
                            Dim buffer As Byte() = InteropUtils.ConvertIntPtrToByteArray(ptr, _
                                Convert.ToInt32(size))
                        Case DataType.ByteType
                            Dim byteValue As Byte = packet.ReadByte()
                        Case DataType.CharType
                            Dim charValue As Char = packet.ReadChar()
                        Case DataType.Int32Type
                            sb.Append("Int32Type:  " + packet.ReadInt32().ToString() + _
                                      vbCr + vbLf)
                        Case DataType.StringType
                            sb.Append("String:  " + packet.ReadString() + vbCr + vbLf)
                        Case Else
                    End Select
                End While
                MessageBox.Show(sb.ToString())
                Exit While
            End If
            System.Threading.Thread.Sleep(1000)
        End While
        packet = PacketFactory.GetNewPacket()

        ' Write the version of .NET Compact Framework into the packet.
        packet.WriteString("Hello Desktop Computer")
        packet.WriteInt32(Environment.Version.Major)
        packet.WriteInt32(Environment.Version.Minor)
        packet.WriteInt32(Environment.Version.Build)
        packet.WriteInt32(Environment.Version.Revision)

        ' Pass the packet to desktop application.
        packetStream.Write(packet)

    End Sub 'Main
End Class 'Program

' Define your own shutdown implementation
Class ShutdownCallback
    Implements IAgentTransportShutdownCallback

    Sub Shutdown(ByVal in_pUnknown As Object) _
        Implements IAgentTransportShutdownCallback.Shutdown

        ' Insert cleanup code here

    End Sub 'Shutdown
End Class 'ShutdownCallback
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SmartDevice.DeviceAgentTransport;
using System.Windows.Forms;

class Program
{
    [MTAThread]
    static void Main(string[] args)
    {
        string[] serviceids = { "2FAD740C-B5D3-4ad0-BE23-5682503584BF" };

        // Get an instance of Device Agent Transport
        IDeviceAgentTransport transport = DeviceAgentTransportFactory.GetAgentTransport();

        // Register the callback object with the Device Agent Transport.
        ShutdownCallback shutdownCallback = new ShutdownCallback();
        transport.RegisterShutdownCallback(shutdownCallback, shutdownCallback);

        // Let the desktop application know that this device agent was deployed successfully 
        // and will handle the supplied list of service IDs.
        transport.AcknowledgeLaunch(Convert.ToUInt32(serviceids.Length), serviceids);

        // Open a communcation stream with desktop application on the service.
        IDevicePacketStream packetStream;
        transport.AcceptConnectionEx(serviceids[0], out packetStream);

        IPacket packet;

        // Check for a packet while communication stream is connected.
        while (packetStream.IsConnected())
        {
            // If a packet is found, display the string and integer data.
            if (packetStream.IsPacketAvailable())
            {
                packetStream.Read(out packet);
                StringBuilder sb = new StringBuilder();
                while (!packet.IsEndOfPacket())
                {
                    switch (packet.ReadDataType())
                    {
                        case DataType.BoolType:
                            bool boolValue = packet.ReadBool();
                            break;
                        case DataType.ByteArrayType:
                            // Read bytes and convert IntPtr to byte[]
                            IntPtr ptr;
                            uint size = 0;
                            packet.ReadBytes(out ptr, out size);
                            byte[] buffer = InteropUtils.ConvertIntPtrToByteArray(ptr, 
                                Convert.ToInt32(size));
                            break;
                        case DataType.ByteType:
                            byte byteValue = packet.ReadByte();
                            break;
                        case DataType.CharType:
                            char charValue = packet.ReadChar();
                            break;
                        case DataType.Int32Type:
                            sb.Append("Int32Type:  " + packet.ReadInt32().ToString() + "\r\n");
                            break;
                        case DataType.StringType:
                            sb.Append("String:  " + packet.ReadString() + "\r\n");
                            break;
                        default:
                            break;
                    }
                }
                MessageBox.Show(sb.ToString());
                break;
            }
            System.Threading.Thread.Sleep(1000);
        }

        packet = PacketFactory.GetNewPacket();

        // Write the version of .NET Compact Framework into the packet.
        packet.WriteString("Hello Desktop Computer");
        packet.WriteInt32(Environment.Version.Major);
        packet.WriteInt32(Environment.Version.Minor);
        packet.WriteInt32(Environment.Version.Build);
        packet.WriteInt32(Environment.Version.Revision);

        // Pass the packet to desktop application.
        packetStream.Write(packet);
    }
}

// Define your own shutdown implementation
class ShutdownCallback : IAgentTransportShutdownCallback
{
    public void Shutdown(object in_pUnknown)
    {
        // Insert cleanup code here
    }
}

См. также

Ссылки

Другие ресурсы

Управление устройствами с помощью API подключения интеллектуальных устройств

Примеры использования API подключения смарт-устройств