呈现
演示是 UPnP 过程的最后一步。 如果设备具有用于演示的 URL,则控制点可以从此 URL 检索页面,并将页面加载到浏览器中。 根据演示页和设备的功能,控制点可以控制设备并查看设备的状态。
在注册期间传递给 IUPnPRegistrar 的资源路径是与设备演示相关的所有文件的位置。 设备开发人员可以为每个嵌入式设备提供单独的页面。 设备说明模板中的演示 URL 可以是绝对 URL,也可以是相对 URL。 对于相对于资源路径的相对 URL,设备说明模板应包含文件名。 IUPnPRegistrar 将此转换为具有实际位置的 URL。 对于绝对 URL,不会修改位置。
为了支持演示文稿页中的客户端脚本,通常会以“查询字符串”的形式将额外信息追加到 URL 中。 追加的额外信息是设备说明文档的 URL,以及设备或嵌入式设备的 UDN。 设备说明 URL 可用于在脚本中加载说明文档,然后通过设备服务控制设备。 UDN 用于从根设备中选择嵌入设备。
修改后的演示文稿 URL 的格式为:实际演示 URL,问号 (“?”) ,设备说明 URL,加号 (“+”) ,设备 UDN。 问号表示查询字符串的开头。
如果设备说明模板中的演示 URL 是绝对 URL,并且它已包含问号 (“?”) ,则不会将额外信息添加到演示文稿 URL。
说明 | URL |
---|---|
在设备说明模板中 | presentationURLMyDevice.html**/presentationURL** |
由设备主机生成 | presentationURLhttps://machinename/deviceID/MyDevice.html/?https://machine/upnphost/udhisapi.dll?content=uuid:487394... + UDN**/presentationURL** |
客户端脚本可能必须从演示 URL 中提取设备说明 URL,以加载 IUPnPDescriptionDocument 对象。 这是通过获取查询字符串并在加号 (“+”) 终止它来完成的。
Dim QueryString
QueryString = window.location.search
Dim DescURLString
DescURLString = Trim(Mid(QueryString,2,Instr(QueryString,"+")-2))& vbCrLf
Dim LightDesc
Set LightDesc = CreateObject("UPnP.DescriptionDocument.1")
LightDesc.Load(DescURLString)
对于嵌入式设备的演示文稿页,需要一些额外的工作。 加载 UPnPDescriptionDocument 后,脚本必须获取嵌入式设备的集合,然后选择与查询字符串中的 UDN 匹配的设备。 以下脚本演示如何为当前演示文稿页选择嵌入设备。 它假定已加载 LightDesc。
Dim LightDevice
Set LightDevice = LightDesc.RootDevice
Dim EmbeddedDevices
set EmbeddedDevices = LightDevice.Children
Dim DeviceUdnString
DeviceUdnString = Trim(Mid(QueryString,Instr(QueryString,"+")+1,Len(QueryString)))
Dim Item
set Item = EmbeddedDevices.Item(DeviceUdnString)