项目地址:github
- VR连接和获取数据部分
ViveInput
(C++) - CLR桥接部分
BridgeDll
(CLR) - BLE连接和收发数据部分
BluetoothLE.cs
(调用UWP API进行BLE编程) - WPF以及调用的功能部分
- Windows 10 1809 (SDK: 10.0.17763.0)
- Visual Studio 2017
- .Net Framework 4.6.1
- 确保系统版本为win10 1703(内部版本15063)及以上,方可正常使用程序中的BLE部分
- 下载文件并打开sln
- 在每个项目中选择当前系统的
Windows SDK版本
、平台工具集
、目标框架
等,以适配当前系统 - 在
SmallFishVR
项目中添加引用-浏览,添加UWP API相关的引用:Windows
和System.Runtime.WindowsRuntime
, 参考目录为:C:\Program Files (x86)\Windows Kits\10\UnionMetadata\{SDK_VERSION}\Windows.winmd
和C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll
, 然后两者都设置引用属性
中的复制本地
设置为false
。 - 编译并运行程序。
- 连接VR设备,打开Steam和Steam VR,运行房间设置
- 打开程序,点击
初始化VR
以在程序中连接VR 开始监听VR
为监听VR数据,可以看到右侧数据会变化- 使用蓝牙之前,请先手动对机器鱼进行配对,配对可以从UWP版本设置中或者传统控制面板的添加设备中配对,PIN一般为0000或000000
开始监听蓝牙
为显示周围蓝牙设备,在下方选择蓝牙设备之后,点击连接鱼
,之后连接成功会显示连接成功。- 由于Windows蓝牙的不稳定性,建议先使用
颜色切换
来验证蓝牙功能是否正常。如果发现机器鱼没有响应,则可以执行机器鱼的运动功能,再点击几次颜色切换,若在界面中出现多个发送数据失败
的对话框,则点击确定直至所有对话框消失,应该就可以正常使用了。可以再使用颜色切换
验证。 - 若不能正常使用,则重复上述步骤。
- 运动的三个按钮,需要按住使用,不用的时候松开按钮,鱼就会停止。
鱼走圈
和鱼走S
等为机器鱼的自动控制部分,走圈的保持为让机器鱼向某个方向转弯的保持时间(可以通过左?
和高速?
控制方向和速度,非高速则为中速);走S的三个时间为走S或“8”字形的三个阶段持续时间。先右后左?
为控制初始方向,最后直?
为设置在S顶点时,后续运动为完成完整“8”还是直接直行回到原来位置。VR返回数据
为VR的状态数据,可以参考ViveInput
程序VR数据显示
为VR的位置数据。位置单位为厘米,欧拉角单位为度,触摸板显示的是坐标。设置零点
为设置当前VR数据值为0,后续显示均为当前设置时的偏差值(置零功能)。开启VR控制
为使用VR数据控制机器鱼,若不点击此按钮开始,则机器鱼不受VR控制。可再次点击此按钮(停止VR控制
)停止VR控制机器鱼。VR存储到文件
为记录VR数据,数据记录间隔为25ms左右(在程序ListenVRThread
中),记录位置为../../data
文件夹。若在记录时程序退出或报错,可能是没有创建此文件夹,因此没有写入权限。- 使用完毕后,可以直接关闭窗口或者点击
退出程序
,无需担心析构和停止之类问题。
- 程序中,在某些操作下,可能按钮的enable状态不正确,此时只能重启程序。
- 程序报错不完全,某些情况下可能会出现闪退问题。
- 蓝牙数据显示时,使用重建列表方式进行刷新,因此可能会导致明明选择了,点击连接也会显示未选择。
- 在笔记本(i5 8250U处理器)测试时,VR数据刷新存在问题,查明是
ViveInput
问题,但是不确定是否是因计算机配置低而产生。 - 鱼的自动化程序对于鱼的控制效果很一般,因为没有反馈。