昨天的那篇文章引起了不小的追捧,主要追捧的同学都感叹这个东西太贵,当然对未来孜孜不倦的追求是it民工的人生目标。还有一些同事说既然都开头了,怎么也不写个hello world。其实hello world的程序在最后一张截图里,我加了名字,时间,内嵌广告,这样就算被抄了也能看出是几几年写的,不会让某些神经脆弱的同学又感慨人生。
废话不表,昨天那个Hello World的程序很简单,打开Visual Studio 创建一个UWP程序,创建完了以后拖几个Control上去,我这里放了一个text box,一个web view。textbox里面说了几句废话,webview访问了鄙公司拳头产品云舶:www.yunboard.net。
编译部署的流程是这样的。选择Release,x86,编译目标可以是模拟器,也可以是真机。真机调试需要首先打开Hololens的开发模式,在设置->更新->开发者里面,首先打开开发模式,然后打开设备管理器,这样就可以用浏览器来监控hololens的状态了。
在Visual Studio里面可以选择Remote Machine,开始部署。输入127.0.0.1,如果是第一次部署,还需要输入Pin,到刚才那个打开hololens开发模式的地方获取。
然后你的程序就愉快地跑起来了,是这个样子的。
注意到工具栏上有滚动,拖动,放大缩小等功能,还有调整位置,基本上就是windows上的窗口拖拽,放大缩小,不过比windows多了一个角度宣传,谁让他是3d的呢。窗口会自动附着在一个平面上,也就是我面前的墙壁上。整个窗口没有最大化的按钮,所有的操作都可以用语音来控制,非常简单。
我们有2种方式来看Hololens的Device Portal, 一种是直接Wifi模式,用https://hololens的ip,另外一种是通过usb,访问https://127.0.0.1:10080。可以打开配置页面,了解hololens的各种信息,比如视角,性能,系统等等,包括可以设置访问证书,密码,当前运行的进程,日志。具体可以访问https://developer.microsoft.com/en-us/windows/holographic/using_the_windows_device_portal了解详情。
值得一提的是Hololens Device Portal里所有的功能都支持Rest API,可以通过代码的方式管理Hololens,这对开发而言方便了很多,具体说明在https://developer.microsoft.com/en-us/windows/holographic/device_portal_api_reference。不过认证部分完全没提到,不加认证的话会拿到一个403错误。我给hololens设置了密码,所以HTTP的请求需要加认证头,但是这个认证头怎么拿到却没有说明。不过这难不倒IT老屌丝,用Fiddler抓一个简单的HTTP包,就可以发现某个http request有一个Authorization头,使用Basic验证模式和一串credential。要复习一下http协议的同学可以参考http协议1.1 (RFC2616) 14.8节Authorization的部分 https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html ,具体加密方式和方法请参考HTTP Authentication: Basic and Digest Access Authentication(http://www.ietf.org/rfc/rfc2617.txt)。
Authorization: Basic aG90Y2FuOlVzZXJAMTIz
市面上有很多用来测试Rest API的工具,我在Chrome里面直接用了一个叫Insomania的东西,比如说我调用这个http://127.0.0.1:10080/api/networking/ipconfig来获取hololens的网络信息。返回就是一串Json格式的信息:
{ "Adapters": [ { "Description": "Bluetooth Device (Personal Area Network)", "HardwareAddress": "b4-ae-2b-be-ff-97", "Index": 4, "Name": "{39A74CEF-9AFF-46D4-AF65-5E25DED69711}", "Type": "Ethernet", "DHCP": { "LeaseExpires": 0, "LeaseObtained": 0, "Address": { "IpAddress": "", "Mask": "" } }, "Gateways": [ { "IpAddress": "0.0.0.0", "Mask": "255.255.255.255" } ], "IpAddresses": [ { "IpAddress": "0.0.0.0", "Mask": "0.0.0.0" } ] }, { "Description": "Broadcom 802.11ac Wireless PCIE Full Dongle Adapter", "HardwareAddress": "b4-ae-2b-be-ff-96", "Index": 6, "Name": "{5F3FDFA6-C33B-40D2-913F-4E191047A138}", "Type": "IEEE 802.11", "DHCP": { "LeaseExpires": 1466732947, "LeaseObtained": 1466722147, "Address": { "IpAddress": "192.168.12.1", "Mask": "255.255.255.255" } }, "Gateways": [ { "IpAddress": "192.168.12.1", "Mask": "255.255.255.255" } ], "IpAddresses": [ { "IpAddress": "192.168.13.148", "Mask": "255.255.252.0" } ] } ] }
在API里面看到一个很有趣的方法,叫做/api/holographic/stream/live.mp4 (GET),可以把hololens上看到的东西streaming到电脑上来。调试方法很简单, 直接打开chrome,输入http://127.0.0.1:10080/api/holographic/stream/live_high.mp4,直接可以在电脑上看到hololens里面看到的东西。
还可以去读一些硬件信息,例如电池信息:
http://127.0.0.1:10080/api/power/battery(GET)
返回结果是电池信息,总共16208mWh,还能运行
{
"AcOnline": 1,
"BatteryPresent": 1,
"Charging": 0,
"DefaultAlert1": 0,
"DefaultAlert2": 1620,
"EstimatedTime": 4294967295,
"MaximumCapacity": 16208,
"RemainingCapacity": 15701
}
有了Rest API,就意味着这个硬件设备是完全可编程的,可以全自动进行管理,这和IoT的概念也是完全一样的,并且可以远程设置和管理。昨天和今天的内容都是hololen的基础理解,开发和传统Windows 开发并没有什么不同,明天我们开始针对Hololens的一些传感器,利用Unity进行编程。这种交互的变化导致了程序设计思路的大幅改变,也能够把计算机应用带到一个全新的阶段。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述