是否可以在Unity独立Windows版本中使用MS Band?

时间:2016-03-09 00:35:23

标签: unity3d microsoft-band

我试图找出从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包时,它告诉我我的项目目标是本机,版本= v0.0'即使SDK版本是10。*。

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

我对Universal Windows概念不太熟悉,知道是否有办法使其与Unity独立Windows版本一起使用,或者是否故意阻止它以这种方式工作。因为它们都在同一台机器上运行,所以看起来这应该是可能的。

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

1 个答案:

答案 0 :(得分:2)

这样做的最佳方法是使用 C ++ 围绕 MS Band 制作包装,但这不是选项在这种情况下,因为 Microsoft 没有 C ++ API MS Band ,他们的网站充满了程序员的要求自2015年底以来 C ++ 支持,忽略。 您还有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 计划。

    然后,您可以使用匿名管道与Unity中的MSBandLIC.exe进行通信。代码很长但很容易编写。以下是Microsoft关于如何操作或执行此操作的链接。 https://msdn.microsoft.com/en-us/library/bb546102.aspx

  3. TCP控制台插件

    使用C#创建一个控制台插件,并使用 Visual Studio 而不是 Unity 将项目构建为C#。将其编译为 exe 而不是 DLL ,并将其命名为MSBandTCP.exe。

    Unity 程序中

    启动 MSBandTCP.exe 程序。写下所有代码与 MS Band 在此程序中,然后创建一个 TCP 服务器,侦听端口 5550

    Unity 方面,使用TCP连接到本地计算机,端口 5550 ,您可以进行通信从MS乐队接收信息。

  4. 反向工程 API ,并使用您需要从MS频段访问的功能制作简单的 API 。看起来 MS Band 通过蓝牙与计算机/手机通信。 Bluefruit LE Sniffer Wireshark 应该可以帮助您完成

    这是怎么做的:

    从MS Band API中选择您需要的功能。 编写一个没有Unity的C#应用​​程序向MS Band发送消息,while循环所有2秒。使用 Bluefruit LE Sniffer Wireshark 查看从 Windows MS Band 的消息。 MS频段应该响应,如果确实如此,但它发送的内容是加密,请使用 JustDecompile 对API的DLL部分进行反编译并计算了解API如何从 MS Band 中反编译它收到的字节。然后,您可以根据收集的信息重建自己的API。