Vrpn源码浅析(一)-添加自定义设备概述

本文档详细介绍了如何在VRPN中添加自定义设备,以添加一个自定义鼠标为例,涵盖工程结构分析、所需修改的源文件、CMakeLists更新以及代码修改。通过此过程,读者可以理解如何为VRPN扩展支持新的硬件设备。
摘要由CSDN通过智能技术生成

好记性不如烂笔头。最近需要用VRPN获取设备数据,有些设备不在VRPN现有支持设备列表里,就想着自己改一下源码添加一下。在网上找了一段时间发现包括官网上的教程基本都是教你怎么用的,没找到告诉你怎么改的,所以就自己摸索了一下,简单记录一下,以防以后用到忘了。

鉴于介绍啥是VRPN以及VRPN的基本使用方法的文章已经有了,我在这就不多写了,可以参考这篇博客https://blog.csdn.net/huhaoxuan2010/article/details/77015017

等我用一阵子如果发现有坑的话我再自己写一篇。

1.工程建立与结构树分析

我用的是7.33的版本,在win10环境下用vs2019编译。源码github上就能搜到或者用我上传的这份(https://download.csdn.net/download/qq_21539825/14021934),获取源码后使用CMAKE构建一下,得到一个VRPN.sln的工程。打开工程,里面的结构如下,看了一遍发现需要更改的代码都在Library的Core VRPN Server Library里,后边的修改都是在这里面。

!注意:我编译的时候出了点问题,首先是提示我有些lib找不到,看了提示后发现是Core VRPN Server Library这个project没有编译通过,我单独编译发现是有部分syntax error,然后我把win10 SDK改成了Win8.1的就好了。

再编译的时候就没有lib的问题了,但是vrpn_server这个project编译不过去,跟之前是同样的问题,我改了SDK也就好了。

2.添加一个设备

想要添加一个设备最简单的方式就是找个相似的然后照着改。为了方便验证,我尝试添加一个自定义的鼠标进去(鼠标所有机子都有,方便验证是否生效,而且鼠标包含了Analog和Button两个类别的输入,比较具有代表性),找了工程里已有的Mouse作为参照。我首先通过在全工程中检索Mouse关键词,找到所有相关的代码,然后筛选出需要修改的相关文件如下:

2.1 Core VRPN Server Library---Header Files---vrpn_Generic_server_object.h文件

这个文件是管理定义设备代码的头文件,需要在其中声明设备的设置函数,以Mouse为例,函数名为setup_Mouse,这个函数用来读取Config文件中的设置并在全局设备中添加一个鼠标的实例。对于鼠标来说,没什么配置,只用获取名字就行,所以会比较简单,如果是像Dtrack这种追踪设备,就需要设置端口,追踪刚体数目等一系列参数,那种就麻烦了。

int setup_Mouse(char *&pch, char *line, FILE * /*config_file*/);

在下边依样画葫芦,复制这行,改个名字声明我们自己的setup函数。

int setup_MyMouse(char *&pch, char *line, FILE * /*config_file*/);

2.2 Core VRPN Server Library---Source Files---vrpn_Generic_server_object.c文件

这是对应的C文件,需要修改的地方会多一点,

1) 首先:添加我们设备的头文件(先写上,找不到正常,后边我们会添加这些文件),找到Mouse的头文件引用位置

#include "vrpn_Mouse.h" // for vrpn_Button_SerialMouse, etc

复制一个在下边,改成我们的

#include "vrpn_MyMouse.h" // for vrpn_Button_SerialMouse, etc

2) 然后:找到头文件中声明setup函数的具体定义,


                
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值