昨天的那篇文章引起了不小的追捧,主要追捧的同学都感叹这个东西太贵,当然对未来孜孜不倦的追求是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,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 欧阳的2024年终总结,迷茫,重生与失业
· 史上最全的Cursor IDE教程
· 聊一聊 C#异步 任务延续的三种底层玩法
· 关于产品设计的思考
· 在 .NET 9 中使用 Scalar 替代 Swagger