Device.GetRemoteAgent メソッド

更新 : 2007 年 11 月

指定されたパッケージ ID に関連付けられている RemoteAgent を返します。

名前空間 :  Microsoft.SmartDevice.Connectivity
アセンブリ :  Microsoft.SmartDevice.Connectivity (Microsoft.SmartDevice.Connectivity.dll 内)

構文

'宣言
Public Function GetRemoteAgent ( _
    packageId As ObjectId _
) As RemoteAgent
'使用
Dim instance As Device
Dim packageId As ObjectId
Dim returnValue As RemoteAgent

returnValue = instance.GetRemoteAgent(packageId)
public RemoteAgent GetRemoteAgent(
    ObjectId packageId
)
public:
RemoteAgent^ GetRemoteAgent(
    ObjectId^ packageId
)
public function GetRemoteAgent(
    packageId : ObjectId
) : RemoteAgent

パラメータ

戻り値

型 : Microsoft.SmartDevice.Connectivity.RemoteAgent

RemoteAgent 型のオブジェクト。

例外

例外 条件
DeviceNotConnectedException

デバイスが接続されていません。

SmartDeviceException

基になる COM コンポーネントによって COM 例外がスローされました。

解説

デバイスは接続されている必要があります。

パッケージは、RemoteAgent.Start が呼び出されたときにデバイス上で配置および実行されるファイルを指定します。リモート エージェントは、主にデバイス エージェントとストリーム データを交換するために使用されます。これを実現するために、リモート エージェントは、packageId 引数で指定されたパッケージに基づいて、デバイス エージェントの実行可能ファイルをデバイスに配置して実行します。デバイス上でデバイス エージェントが実行されたら、リモート エージェントは DevicePacketStream を作成して、デバイス エージェントと Packet データを交換できます。詳細については、「アドオン パッケージの概要」を参照してください。

Imports System
Imports System.Collections.ObjectModel
Imports Microsoft.SmartDevice.Connectivity



Class [source]

    Shared Sub Main(ByVal args() As String) 
        ' Get the datastore object
        Dim dsmgr As New DatastoreManager(1033)

        ' Get the platform object
        Dim platform As Platform = GetPlatformByName("Windows Mobile 5.0 Smartphone SDK", dsmgr)

        ' Get the default device in the platform, usually an emulator.
        Dim device As Device = platform.GetDevice(platform.GetDefaultDeviceId())

        device.Connect()

        If device.IsConnected() Then
            ' Copy and start a device agent based on the ID of its add-on package.
            Dim ra As RemoteAgent = device.GetRemoteAgent( _
                New ObjectId("CAF078AE-2E10-43e2-B566-C4577F2538C7"))
            ra.Start("command line argument")
            ' Open communication channel with device agent.
            Dim ps As DevicePacketStream = ra.CreatePacketStream( _
                New ObjectId("2FAD740C-B5D3-4ad0-BE23-5682503584BF"))

            ' Create and write a packet of data.
            Dim packet As Packet
            packet = New Packet()
            Dim i As Integer
            For i = 0 To 3
                packet.WriteInt32(i)
            Next i
            packet.WriteString("Hello Smart Device")
            ps.Write(packet)
            ' While stream is connected, try to read a packet.
            While ps.IsConnected()
                If ps.IsPacketAvailable() Then
                    packet = ps.Read()
                    While Not packet.IsEndOfPacket()
                        Select Case packet.ReadDataType()
                            Case DataType.BoolType
                                Dim boolValue As Boolean = packet.ReadBool()
                            Case DataType.ByteArrayType
                                Dim buffer As Byte() = packet.ReadBytes()
                            Case DataType.ByteType
                                Dim byteValue As Byte = packet.ReadByte()
                            Case DataType.CharType
                                Dim charValue As Char = packet.ReadChar()
                            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
                System.Threading.Thread.Sleep(1000)
            End While
            ps.Close()
            device.Disconnect()
            Console.ReadLine()
        End If

    End Sub 'Main

    ' Returns a platform if the supplied name can be found in the datastore.
    ' Returns null pointer if platform cannot be found
    Private Shared 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
End Class '[source]
using System;
using System.Collections.ObjectModel;
using Microsoft.SmartDevice.Connectivity;

class source
{
    static void Main(string[] args)
    {
         // Get the datastore object
        DatastoreManager dsmgr = new DatastoreManager(1033);

        // Get the platform object
        Platform platform = GetPlatformByName("Windows Mobile 5.0 Smartphone SDK", dsmgr);

        // Get the default device in the platform, usually an emulator.
        Device device = platform.GetDevice(platform.GetDefaultDeviceId());

        device.Connect();

        if (device.IsConnected())
        {
            // Copy and start a device agent  based on the ID of its add-on package.
            RemoteAgent ra = device.GetRemoteAgent(
                new ObjectId("CAF078AE-2E10-43e2-B566-C4577F2538C8"));
            ra.Start("command line argument");

            // Open communication channel with device agent.
            DevicePacketStream ps = ra.CreatePacketStream(
                new ObjectId("2FAD740C-B5D3-4ad0-BE23-5682503584BF"));

            // Create and write a packet of data.
            Packet packet;
            packet = new Packet();
            for (int i = 0; i < 4; i ++) packet.WriteInt32(i);
            packet.WriteString("Hello Smart Device");
            ps.Write(packet);

            // While stream is connected, try to read a packet.
            while (ps.IsConnected())
            {
                if (ps.IsPacketAvailable())
                {
                    packet = ps.Read();
                    while (!packet.IsEndOfPacket())
                    {
                        switch (packet.ReadDataType())
                        {
                            case DataType.BoolType:
                                bool boolValue = packet.ReadBool();
                                break;
                            case DataType.ByteArrayType:
                                byte[] buffer = packet.ReadBytes();
                                break;
                            case DataType.ByteType:
                                byte byteValue = packet.ReadByte();
                                break;
                            case DataType.CharType:
                                char charValue = packet.ReadChar();
                                break;
                            case DataType.Int32Type:
                                Console.WriteLine("Int32Type:  " + packet.ReadInt32().ToString());
                                break;
                            case DataType.StringType:
                                Console.WriteLine("String:  " + packet.ReadString());
                                break;
                            default:
                                break;
                        }
                    }
                    break;
                }
                System.Threading.Thread.Sleep(1000);
            }
            ps.Close();
            device.Disconnect();
            Console.ReadLine();
        }

    }

    // Returns a platform if the supplied name can be found in the datastore.
    // Returns 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;

    }
}

アクセス許可

  • 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

参照

Device クラス

Device メンバ

Microsoft.SmartDevice.Connectivity 名前空間