HoloLens開發教程:Windows Device Portal Wrapper

Jyadmin 提交于 周一, 01/06/2020 - 13:25

?

什么是Windows Device Portal Wrapper?

顧名思義,WDP Wrapper是對Windows Device Portal REST APIs進行通用封裝而開發的C#客戶端SDK。這種官方標準化SDK的開源發布,極大地方便了C#開發者,也體現了Microsoft為開源生態而做出的努力。

WDP Wrapper支持.Net 4.5.2以上的平臺及UWP平臺,.Net 3.5等其他平臺暫不支持。如圖1所示,您可以通過Nuget在您的Visual Studio工程中引入WindowsDevicePortalWrapper,也可以在Github的release中下載最新的版本,在您的VS工程中添加引用。

WdpClient開發介紹

在WdpClient的VS工程中引入WDP Wrapper后,您可以在WdpClient的代碼中調用Wrapper的相關API。Device Portal Wrapper的基礎對象為DevicePortal,它提供了連接目標設備的服務,你可以創建DevicePortal實例以調用在目標設備上運行的Device Portal REST API。

1創建DevicePoral對象

DevicePortal對象通過DevicePortalConnection對象初始化,通過address、username、password參數來建立與目標設備的連接,其中address為完整的目標設備地址,如“https://192.168.1.23”; username和password為登陸您目標設備的Device Portal的用戶名密碼。具體創建DevicePortal實例的代碼如下:

創建DevicePoral對象

2設置連接狀態回調函數

DevicePortal實例通過其內置的ConnectionStatus來獲取連接狀態。ConnectionStatus是一個事件回調函數DeviceConnectionStatusEventHandler,其接收DevicePortal實例和DeviceConnectionStatusEventArgs作為參數,在DeviceConnectionStatusEventArgs中將包含對連接狀態的反饋信息。ConnectionStatus需要在建立連接之前設置其回調函數,設置樣例代碼如下:

設置連接狀態回調函數

3連接設備

如果需要允許非可信連接進行訪問,需要調用DevicePortal的GetRootDeviceCertifacateAsync方法,將acceptUntrustedCerts設置為true;若需要使用證書進行訪問,請設置證書。連接設備的調用代碼如下,請務必加上try catch。

設備連接成功后,您可以使用DevicePortal實例調用Wrapper中的API了,以下通過幾個示例來進行展示。

連接設備

4 API樣例:關機和重啟

可以通過DevicePortal實例觸發設備的關機和重啟操作,具體調用代碼如下:

API樣例:關機和重啟

5 API樣例:獲取設備上已安裝的應用

通過DevicePortal實例,可以獲取設備上已安裝的應用,具體調用代碼如下:

API樣例:獲取設備上已安裝的應用

6 API樣例:通過WebSocket訪問設備

DevicePortal的部分API通過WebSocket進行連接,如需要獲取系統狀態或進程信息,您可以使用相關接口接收設備推送的WebSocket數據。WebSocket使用一個回調函數來定義接收到設備返回數據后的相關操作,下面的代碼展示了如何打印出設備上內存消耗最大的應用:

API樣例:通過WebSocket訪問設備

也可以使用其他語言,如Golang、Java等來實現不同的Wrapper。