connecting to controller ------LeapMotion API

创建一个Controller对象,来连接设备,这个对象自动的建立与LM后台进程或服务的连接,后台进程随后在Frame对象中可以用来传递追踪数据。

Leap::Contriller controller;

使用controller对象来获取连接状态和连接硬件的情况,以及应用的参数设置情况。

Getting Frames

获得Frame 对象包括通过controller.frame()函数来追踪数据。当APP准备处理数据来得到设备产生的最新数据集时,你可以调用这个函数。你可以实现Listener对象定义一个回调函数,并且当新的数据帧准备就时,Controller会唤醒这个函数。

Foreground and background APPlications

通常情况下,只有应用在当前系统中获得焦点时,LM服务才向其传递数据。这种特性能够防止应用在不获得焦点的空载时,获得其他应用的输入数据的情况。


获得图像

为了从相机获得图像,必须设置图像性质,控制面板中的allow Imags选项,需要选中。

启动手势

为了使用内置的手势(built-in gestures),首先需要使用 controller。enableGesture();

 controller.enableGesture(Leap::Gesture::TYPE_CIRCLE);
只需要开启,应用中需要的手势。

连接状态

当你创造一个控制器,对象将建立与LM服务的连接,controller.isserviceConneceted属性变成true.同样的,如果LM硬件接入并被服务检测到时,controller.isConnected()属性变为真。

控制器事件监听器

控制器对象使用监听机制监听一些事件。为了处理这些事件,你能够拓展Listener类实现回调函数。当事件发生时,控制器唤醒相关的回调函数。

事件包括:

onConnect() The Controller连接了服务和LM设备
onDeviceChange() LM硬件状态发生改变
onDisconnect() The Controller服务和LM设备失去连接
onExit() The Controller 对象被销毁
onFocusGained() 应用获取焦点,并开始接受数据
onFocusLost() 应用失去焦点,停止接受数据theBACKGROUND_FRAMES_POLICY.
onFrame() 新的数据帧已经准备就绪
onInit() The Controller对象被初始化
onServiceConnect() The Controller连接到服务
onServiceDisconnect()                                                                               
下面的例子表明监听器父类的实现。

#include <iostream>
#include "Leap.h"

using namespace Leap;

class LeapEventListener : public Listener {
  public:
    virtual void onConnect(const Controller&);
    virtual void onDisconnect(const Controller&);
    virtual void onFrame(const Controller&);
};

void LeapEventListener::onConnect(const Controller& controller) {
    std::cout << "Connected" << std::endl;
    // Enable gestures, set Config values:
    controller.enableGesture(Gesture::TYPE_SWIPE);
    controller.config().setFloat("Gesture.Swipe.MinLength", 200.0);
    controller.config().save();
}

//Not dispatched when running in a debugger
void LeapEventListener::onDisconnect(const Controller& controller) {
    std::cout << "Disconnected" << std::endl;
}

void LeapEventListener::onFrame(const Controller& controller) {
    std::cout << "New frame available" << std::endl;
    Frame frame = controller.frame();
    // Process this frame's data...
}
为controller添加监听器

Controller controller;
LeapEventListener listener;
controller.addListener(listener);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值