WPFxUPnP その12

UPnPバイスとしては動作するようになりました。
次に、プレゼンテーションを作成して、コントロールとイベントを動かします。
まずは、イベントを。

UPnPライトの状態をイベントで受け取り、プレゼンテーションのHTMLに表示します。
これには、VBScriptを用いておこないます。
まずは、表示するところに次のように、HTMLを記載します。

<p>ライトの状態: <span id="LightStatus"></span></p>

そして、UPnPのデバイス初期化のVBScriptです。

Dim SwitchPowerSrv
Set SwitchPowerSrv = Nothing

Dim descriptionDoc, device
Dim QueryString
QueryString = window.location.search

Dim DescURLString
DescURLString = Trim(Mid(QueryString, 2, Instr(QueryString, "+") - 2))

'*** Get DeviceDesc ***
Set descriptionDoc = CreateObject("UPnP.DescriptionDocument")
descriptionDoc.Load(DescURLString)

Set device = descriptionDoc.RootDevice
Set SwitchPowerSrv = device.Services("urn:upnp-org:serviceId:SwitchPower:1")

UPnPバイスからイベントを受け取るには、イベントハンドラを作成し、登録します。

SwitchPowerSrv.AddCallback GetRef("eventHandler")

' -----------------------------------------------------------------------------
' Event
' -----------------------------------------------------------------------------
Sub eventHandler(callbackType, svcObj, varName, value)
    If (callbackType = "VARIABLE_UPDATE") Then
        select case svcObj.Id
        case "urn:upnp-org:serviceId:SwitchPower:1"
                select case varName
                Case "Status"
                    If value Then
                        LightStatus.innerText = "ON"
                    Else
                        LightStatus.innerText = "OFF"
                    End if
            end select
        end select
    End If
End Sub

これで、UPnPバイスを起動し、ネットワークのUPnPライトを開くと、ページに現在のライトの状態が表示されます。
また、WPFのUIで、ON/OFFを行うと一緒にステータスが変更されます。