是否可以将 MS Band 与 Unity 独立 Windows 构建一起使用?

Is it possible to use MS Band with Unity standalone Windows build?

我正在尝试找出从 MS Band 2 获取数据到支持 VR 的 Unity 独立 Windows 构建的最快方法。我能够在我的 Win10 笔记本电脑上构建和 运行 SDK 示例应用程序,并且它们可以正常工作。

我尝试了各种方法,从将 Microsoft.Band.DLL 作为托管插件导入 Unity,到尝试将 Band DLL 包装在本机插件中。但是,我还没有找到一种方法来完成这项工作。我开始怀疑,出于多种原因,我根本无法让 Band DLL 使用独立的 Windows 构建。

当我尝试将 Band DLL 用作托管插件时,Unity 不支持 Band DLL 所需的 C# 4。当我尝试创建本机 DLL 时,我无法弄清楚如何在 VS2015 中创建一个将与 Band SDK 一起使用的项目,并且我无法更改示例项目以输出 DLL 而不是应用程序。当我尝试一个可以输出 DLL 的新项目并尝试安装 Microsoft.Band NuGet 包时,它告诉我我的项目目标是 'native,Version=v0.0',即使 SDK 版本是 10.*.

理想情况下,有一种方法可以将所需的 DLL 包含在 Unity 中的 Band DLL 中,并且我可以将其作为托管插件进行访问。但我什至很乐意在 extern "C" 中包装一个 C++ 文件,并为 return 来自 Band 的每条数据创建一个单独的函数。

我对 Universal Windows 概念还不够熟悉,不知道是否有办法让它与 Unity 独立 Windows 构建一起工作,或者它是否被故意阻止工作那样。因为他们 运行 在同一台机器上,所以这似乎是可能的。

我的后备计划是编写一个读取设备数据的通用 Windows 应用程序,并将其连接到 Unity 独立 Windows 应用程序以授予访问权限。无论是通过本地文件、网络连接还是远程服务器,都是另一个问题。

最好的方法是使用 C++ 围绕 MS Band[=] 制作一个 wrapper 94=] 但在这种情况下这不是 选项 因为 Microsoft 没有 C++ API 用于 MS Band,他们的网站充满了程序员要求 C++ 自 2015 年底以来支持的请求,他们 忽略。 您还有 4 个可能有效或无效的其他选项。

  1. 尝试 Unity C# 5.0 和 6.0 集成 https://bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src 这将使您可以在 Unity 中使用 C# >4。如何设置在页面上。

  2. 使用本地进程间通信。 使用 C# 创建一个控制台插件,并使用 Visual Studio 而不是 Unity 将项目构建为 C#。将其编译为 exe 而不是 DLL 并调用它 MSBandLIC.exe。在此程序中编写与 MS Band 通信的所有代码。

    从您的 Unity 程序启动 MSBandLIC.exe 程序。

    然后您可以使用 Anonymous Pipes 与来自 Unity 的 MSBandLIC.exe 进行通信。代码很长,但是很容易写。这是来自 Microsoft 的 link,介绍如何或如何执行此操作。 https://msdn.microsoft.com/en-us/library/bb546102.aspx

  3. TCP 控制台插件

    使用 C# 制作控制台插件并使用 Visual Studio 而不是 Unity 将项目构建为 C#。将其编译为 exe 而不是 DLL 并调用它 MSBandTCP.exe。

    从您的 Unity 启动 MSBandTCP.exe 程序 program.Write 你所有的代码在这个程序中与 MS Band 通信,然后创建一个 TCP 服务器监听端口 5550.

    Unity 端,使用 TCP 连接到您的 本地计算机,端口为 5550在那里你可以交流接收来自MS Band的信息。

  4. Reverse-Engineer API 让你的简单 API 具有您需要从 MS Band 访问的功能。看起来 MS Band 通过 Bluetooth 与 computer/mobile 手机通信。 Bluefruit LE SnifferWireshark 应该可以帮助您完成

    怎么做:

    从MS Band中选择一个你需要的功能API。 编写一个没有 Unity 的 C# 应用程序,它在 2 秒内循环所有内容时向 MS Band 发送一条消息。使用 Bluefruit LE SnifferWireshark 查看从 WindowsMS 频段MS Band 应该响应,如果它响应但它发送的是 encrypted,请使用 JustDecompile 反编译编译 API 的 DLL 部分并弄清楚 API 如何反编译它从 MS Band 接收的字节。然后,您可以根据收集到的信息重建您自己的 API。