关于配置VRPN server的步骤,可以参考这个网站 http://www.vrgeeks.org/vrpn/tutorial---use-vrpn
为了检测是否配置成功,在DOS下运行vrpn_print_devices.exe
配置完了server,我们尝试一个简单的client代码
#include "vrpn_Analog.h"
#include <iostream>
using namespace std;
void VRPN_CALLBACK handle_analog( void* userData, const vrpn_ANALOGCB a )
{
int nbChannels = a.num_channel;
cout << "Analog : ";
for( int i=0; i < a.num_channel; i++ )
{
cout << a.channel[i] << " ";
}
cout << endl;
}
int main(int argc, char* argv[])
{
vrpn_Analog_Remote* vrpnAnalog = new vrpn_Analog_Remote("Mouse0@localhost");
vrpnAnalog->register_change_handler( 0, handle_analog );
while(1)
{
vrpnAnalog->mainloop();
}
return 0;
}
不要忘了在project properties中添加include和lib,并且link vrpn.lib,这些文件夹可以在C:/usr/local中找到。
然后就可以Build了,可能会出现错误 error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in ....obj 。原因是可能用Release模式链接了一个Debug编译出的lib,或者用Debug模式链接了Release编译的lib。这个时候换一下模式再编译就可以了。
运行你的这个小程序,该client会打印server提供的analog值,因为我在配置server时用鼠标作为外部设备,所以client打印的就是滑动鼠标时的坐标值。