5th Dimension Technologies (5dt) "Ultra" USB data glove driver 更多...
#include <vrpn_Analog_5dtUSB.h>
Public 成员函数 | |
virtual | ~vrpn_Analog_5dtUSB () |
Destructor | |
virtual void | mainloop () |
Standard VRPN mainloop method. | |
std::string | get_description () const |
bool | isLeftHand () const |
Accessor to know if this is a left hand glove. | |
bool | isRightHand () const |
Accessor to know if this is a right hand glove. | |
Public 成员函数 继承自 vrpn_Analog | |
vrpn_Analog (const char *name, vrpn_Connection *c=NULL) | |
void | print (void) |
vrpn_int32 | getNumChannels (void) const |
Public 成员函数 继承自 vrpn_BaseClass | |
vrpn_BaseClass (const char *name, vrpn_Connection *c=NULL) | |
Public 成员函数 继承自 vrpn_BaseClassUnique | |
vrpn_Connection * | connectionPtr () |
Returns a pointer to the connection this object is using |
Protected 成员函数 | |
vrpn_Analog_5dtUSB (vrpn_HidAcceptor *filter, int num_sensors, bool isLeftHand, const char *name, vrpn_Connection *c=0) | |
Protected constructor: use a subclass to specify the glove variant to use. | |
void | on_data_received (size_t bytes, vrpn_uint8 *buffer) |
Extracts the sensor values from each report. | |
void | report_changes (vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY) |
Send report iff changed | |
void | report (vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY) |
Send report whether or not changed | |
Protected 成员函数 继承自 vrpn_Analog | |
virtual int | register_types (void) |
virtual vrpn_int32 | encode_to (char *buf) |
virtual void | report_changes (vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY, const struct timeval time=vrpn_ANALOG_NOW) |
virtual void | report (vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY, const struct timeval time=vrpn_ANALOG_NOW) |
Protected 成员函数 继承自 vrpn_BaseClass | |
virtual int | init (void) |
virtual int | register_senders (void) |
Protected 成员函数 继承自 vrpn_BaseClassUnique | |
int | register_autodeleted_handler (vrpn_int32 type, vrpn_MESSAGEHANDLER handler, void *userdata, vrpn_int32 sender=vrpn_ANY_SENDER) |
int | send_text_message (const char *msg, struct timeval timestamp, vrpn_TEXT_SEVERITY type=vrpn_TEXT_NORMAL, vrpn_uint32 level=0) |
Sends a NULL-terminated text message from the device d_sender_id | |
SendTextMessageBoundCall | send_text_message (vrpn_TEXT_SEVERITY type=vrpn_TEXT_NORMAL) |
void | server_mainloop (void) |
void | client_mainloop (void) |
Protected 成员函数 继承自 vrpn_HidInterface | |
void | send_data (size_t bytes, const vrpn_uint8 *buffer) |
Call this to send data to the device | |
void | send_feature_report (size_t bytes, const vrpn_uint8 *buffer) |
int | get_feature_report (size_t bytes, vrpn_uint8 *buffer) |
vrpn_HidInterface (vrpn_HidAcceptor *acceptor, vrpn_uint16 vendor=0, vrpn_uint16 product=0, hid_device *device=NULL) | |
vrpn_HidInterface (vrpn_HidAcceptor *acceptor, hid_device *device) | |
vrpn_HidInterface (const char *device_path, vrpn_HidAcceptor *acceptor, vrpn_uint16 vendor=0, vrpn_uint16 product=0) | |
virtual bool | connected () const |
Returns true iff the last device I/O succeeded | |
virtual void | update () |
virtual bool | reconnect () |
vrpn_uint16 | vendor () const |
vrpn_uint16 | product () const |
int | interface_number () const |
Protected 属性 | |
struct timeval | _timestamp |
Timestamp updated during mainloop() | |
double | _rawVals [16] |
bool | _isLeftHand |
Flag for left handedness. | |
bool | _wasConnected |
Protected 属性 继承自 vrpn_Analog | |
vrpn_float64 | channel [vrpn_CHANNEL_MAX] |
vrpn_float64 | last [vrpn_CHANNEL_MAX] |
vrpn_int32 | num_channel |
struct timeval | timestamp |
vrpn_int32 | channel_m_id |
int | status |
Protected 属性 继承自 vrpn_BaseClassUnique | |
vrpn_Connection * | d_connection |
Connection that this object talks to | |
char * | d_servicename |
vrpn_int32 | d_sender_id |
part | |
vrpn_int32 | d_text_message_id |
ID for text messages | |
vrpn_int32 | d_ping_message_id |
Ask the server if they are there | |
vrpn_int32 | d_pong_message_id |
Server telling that it is there | |
Protected 属性 继承自 vrpn_HidInterface | |
vrpn_HidAcceptor * | m_acceptor |
This is the HidAcceptor we use when reconnecting. | |
bool | m_working |
vrpn_uint16 | m_vendor |
vrpn_uint16 | m_product |
int | m_interface |
vrpn_uint16 | m_vendor_sought |
What vendor we want | |
vrpn_uint16 | m_product_sought |
What product we want |
额外继承的成员函数 | |
Public 属性 继承自 vrpn_BaseClassUnique | |
bool | shutup |
静态 Protected 成员函数 继承自 vrpn_BaseClassUnique | |
static int | encode_text_message_to_buffer (char *buf, vrpn_TEXT_SEVERITY severity, vrpn_uint32 level, const char *msg) |
static int | decode_text_message_from_buffer (char *msg, vrpn_TEXT_SEVERITY *severity, vrpn_uint32 *level, const char *buf) |
Decodes the body of the text message from a buffer from the connection |
5th Dimension Technologies (5dt) "Ultra" USB data glove driver
This supports connecting to 5dt gloves over USB that present a HID device interface. This includes the 5DT Data Glove 5 Ultra and the 5DT Data Glove 14 Ultra, as well as either of those using the wireless kit. (I, Ryan Pavlik, have only tested this with the 5DT Data Glove 5 Ultras since that's all I have access to, but support based on what I would expect from a 14-sensor glove is included.)
Each sensor's raw values are exposed as an analog channel (5 or 14) between 0.0 and 1.0. Note that there is pretty significant need for calibration since the used range within the entire representable range is pretty small and seemingly device-dependent. Your code will probably have to at least perform some scaling based on establishing a "min" and "max" for each sensor.
For serial 5dt glove access, see the vrpn_5DT16 (for the 16-sensor model) and vrpn_5dt (for the 5-sensor wired or wireless model, in vrpn_Analog_5dt.h) classes.
The inherited method vrpn_Analog::getNumChannels()
This base class does all the work: the inherited classes just create the right filters and input for the base class.
|
virtual |
Destructor
|
protected |
Protected constructor: use a subclass to specify the glove variant to use.
std::string get_description | ( | ) | const |
Returns a string description of the device we've connected to. Used internally, but also possibly useful externally.
|
inline |
Accessor to know if this is a left hand glove.
|
inline |
Accessor to know if this is a right hand glove.
|
virtual |
Standard VRPN mainloop method.
实现了 vrpn_BaseClass.
|
protectedvirtual |
Extracts the sensor values from each report.
实现了 vrpn_HidInterface.
|
protected |
Send report whether or not changed
|
protected |
Send report iff changed
|
protected |
Flag for left handedness.
|
protected |
The raw values extracted from the report: which ones we use to set analog channels varies based on the kind of device this is.
|
protected |
Timestamp updated during mainloop()
|
protected |
Flag indicating whether we were connected last time through the mainloop. Used to send a "normal"-severity message when we connect with info on the device.