Share via


Microsoft.SmartDevice.DeviceAgentTransport-Namespace

Aktualisiert: November 2007

Dieser Namespace enthält Typen, die die Geräteseite der Smart Device Connectivity-API bilden. Verwaltete Anwendungen für intelligente Geräte, die auf diesen Namespace verweisen und ihn verwenden, werden als Geräte-Agent-Anwendungen bezeichnet. Desktopanwendungen, die die Smart Device Connectivity-API verwenden, können Geräte-Agents für das Gerät bereitstellen und über den Austausch von Paketdaten mit ihnen kommunizieren. Durch Verwendung dieser Bibliothek können Sie Daten programmgesteuert zwischen Gerät und Desktop austauschen, während Geräteverbindungen und Details zu Transportmechanismen von der Smart Device Connectivity-API behandelt werden.

Um Microsoft.SmartDevice.DeviceAgentTransport in Ihrem Projekt für intelligente Geräte zu verwenden, führen Sie die folgenden Aufgaben aus:

  • Fügen Sie im Projekt für intelligente Geräte einen Verweis auf die Assembly Microsoft.Smartdevice.DeviceAgentTransport.dll (Laufwerk:\Programme\Gemeinsame Dateien\Microsoft Shared\CoreCon\1 .0 \Target\Microsoft.Smartdevice.DeviceAgentTransport.dll) hinzu.

  • Stellen Sie sowohl die systemeigene Bibliothek DeviceAgentTransport.dll (Laufwerk:\Programme\Gemeinsame Dateien\Microsoft Shared\CoreCon\1.0\Target\wce400\cpu\DeviceAgentTransport.dll) als auch die verwaltete Assembly Microsoft.Smartdevice.DeviceAgentTransport.dll für das intelligente Gerät bereit.

Weitere Informationen finden Sie unter Steuern von Geräten über die Smart Device Connectivity-API und unter Exemplarische Vorgehensweise: Austauschen von Daten zwischen Desktop- und Geräteanwendung.

Hinweis:

Um mit Visual C++ einen Geräte-Agent zu erstellen, verwenden Sie Nicht verwaltete geräteseitige Device Connectivity-API für intelligente Geräte.

Klassen

 

Schnittstellen

 

Enumerationen

 

Beispiele

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
    }
}

Siehe auch

Referenz

Weitere Ressourcen

Steuern von Geräten über die Smart Device Connectivity-API

Smart Device Connectivity API Samples