public class DTrackSDK
extends java.lang.Object
implements java.lang.AutoCloseable
All methods to access tracking data are located in DTrackParser.
Modifier and Type | Class and Description |
---|---|
static class |
DTrackSDK.Errors
Error codes
|
Constructor and Description |
---|
DTrackSDK(java.net.InetAddress multicastIp,
int dataPort)
Constructor, use for multicast listening mode.
|
DTrackSDK(int dataPort)
Constructor, use for pure listening mode.
|
DTrackSDK(java.lang.String connection)
Universal constructor, can be used for any mode.
|
DTrackSDK(java.lang.String controllerHost,
int dataPort)
Constructor, use for communicating mode.
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes all opened sockets.
|
boolean |
enableStatefulFirewallConnection(java.lang.String senderHost)
Enable UDP connection through a stateful firewall.
|
boolean |
enableStatefulFirewallConnection(java.lang.String senderHost,
int senderPort)
Enable UDP connection through a stateful firewall.
|
protected void |
endFrame()
Final adjustments after processing all data for a frame.
|
boolean |
flystickBeep(int flystickId,
double durationMs,
double frequencyHz)
Send Flystick feedback command to start a beep on a specific Flystick.
|
boolean |
flystickVibration(int flystickId,
int vibrationPattern)
Send Flystick feedback command to start a vibration pattern on a specific Flystick.
|
java.util.List<DTrackBody> |
getBody()
Get a list containing all standard body data.
|
DTrackBody |
getBody(int id)
Get standard body data.
|
java.lang.String |
getBuf()
Get content of the UDP buffer.
|
int |
getDataPort()
Get UDP data port where tracking data is received.
|
java.util.List<DTrackFlystick> |
getFlystick()
Get a list containing all Flystick data.
|
DTrackFlystick |
getFlystick(int id)
Get Flystick data.
|
int |
getFrameCounter()
Get frame counter.
|
java.util.List<DTrackHand> |
getHand()
Get a list containing all FINGERTRACKING hand data.
|
DTrackHand |
getHand(int id)
Get FINGERTRACKING hand data.
|
java.util.List<DTrackHuman> |
getHuman()
Get a list containing all ART-Human model data.
|
DTrackHuman |
getHuman(int id)
Get ART-Human model data.
|
java.util.List<DTrackInertial> |
getInertial()
Get a list containing all hybrid body data.
|
DTrackInertial |
getInertial(int id)
Get hybrid body data.
|
DTrackSDK.Errors |
getLastDataError()
Get last error at receiving tracking data (data transmission).
|
int |
getLastDTrackError()
Get last DTrack2/DTRACK3 command error code.
|
java.lang.String |
getLastDTrackErrorDescription()
Get last DTrack2/DTRACK3 command error description.
|
DTrackSDK.Errors |
getLastServerError()
Get last error at exchanging commands with Controller (command transmission).
|
int |
getLatencyUsec()
Get latency (delay between exposure and sending UDP data in Controller).
|
java.util.List<DTrackMarker> |
getMarker()
Get a list containing all marker data.
|
DTrackMarker |
getMarker(int index)
Get single marker data.
|
java.util.List<DTrackMeaRef> |
getMeaRef()
Get a list containing all measurement reference data.
|
DTrackMeaRef |
getMeaRef(int id)
Get measurement reference data.
|
java.util.List<DTrackMeaTool> |
getMeaTool()
Get a list containing all measurement tool data.
|
DTrackMeaTool |
getMeaTool(int id)
Get measurement tool data.
|
boolean |
getMessage()
Get DTrack2/DTRACK3 event message from the Controller.
|
int |
getMessageErrorId()
Get error id of last DTrack2/DTRACK3 event message.
|
int |
getMessageFrameNr()
Get frame counter of last DTrack2/DTRACK3 event message.
|
java.lang.String |
getMessageMsg()
Get message text of last DTrack2/DTRACK3 event message.
|
java.lang.String |
getMessageOrigin()
Get origin of last DTrack2/DTRACK3 event message.
|
java.lang.String |
getMessageStatus()
Get status of last DTrack2/DTRACK3 event message.
|
int |
getNumBody()
Get number of calibrated standard bodies (as far as known).
|
int |
getNumFlystick()
Get number of Flystick data.
|
int |
getNumHand()
Get number of FINGERTRACKING hands (as far as known).
|
int |
getNumHuman()
Get number of ART-Human models.
|
int |
getNumInertial()
Get number of hybrid bodies.
|
int |
getNumMarker()
Get number of tracked single markers.
|
int |
getNumMeaRef()
Get number of measurement references.
|
int |
getNumMeaTool()
Get number of measurement tools.
|
java.lang.String |
getParam(java.lang.String parameter)
Get DTrack2/DTRACK3 parameter using a string containing parameter category and name.
|
java.lang.String |
getParam(java.lang.String category,
java.lang.String name)
Get DTrack2/DTRACK3 parameter.
|
DTrackStatus |
getStatus()
Get system status data.
|
double |
getTimeStamp()
Get timestamp since midnight.
|
int |
getTimeStampSec()
Get timestamp since Unix epoch (1970-01-01 00:00:00), seconds.
|
int |
getTimeStampUsec()
Get timestamp since Unix epoch (1970-01-01 00:00:00), microseconds.
|
boolean |
isCommandInterfaceFullAccess()
Returns if TCP connection has full access for DTrack2/DTRACK3 commands.
|
boolean |
isCommandInterfaceValid()
Returns if TCP connection for DTrack2/DTRACK3 commands is active.
|
boolean |
isDataInterfaceValid()
Returns if UDP socket is open to receive tracking data on local machine.
|
boolean |
isStatusAvailable()
Returns if system status data is available.
|
boolean |
isValid()
Returns if constructor was successful due to the wanted mode.
|
protected boolean |
parse(java.lang.String string)
Parses a DTrack String (eg.
|
boolean |
processPacket(java.lang.String data)
Process a tracking packet manually.
|
boolean |
receive()
Receive and process one tracking data packet.
|
int |
sendDTrack2Command(java.lang.String dtrack2Command)
Send DTrack2/DTRACK3 command to DTRACK (TCP command interface).
|
int |
sendDTrack2Command(java.lang.String dtrack2Command,
java.lang.StringBuilder dtrack2Response)
Send DTrack2/DTRACK3 command to DTRACK and receive answer (TCP command interface).
|
boolean |
setCommandTimeoutUS(int timeout)
Set TCP timeout for exchanging commands with Controller.
|
boolean |
setDataBufferSize(int bufSize)
Set UDP buffer size for receiving tracking data.
|
boolean |
setDataTimeoutUS(int timeout)
Set UDP timeout for receiving tracking data.
|
void |
setLogLevel(java.util.logging.Level level)
Set level of the logger.
|
boolean |
setParam(java.lang.String parameter)
Set DTrack2/DTRACK3 parameter using a string containing parameter category, name and new value.
|
boolean |
setParam(java.lang.String category,
java.lang.String name,
java.lang.String value)
Set DTrack2/DTRACK3 parameter.
|
protected void |
startFrame()
Set default values at start of a new frame.
|
boolean |
startMeasurement()
Start measurement.
|
boolean |
stopMeasurement()
Stop measurement.
|
boolean |
tactileFinger(int handId,
int fingerId,
double strength)
Send tactile FINGERTRACKING command to set feedback on a specific finger of a specific hand.
|
boolean |
tactileHand(int handId,
double[] strength)
Send tactile FINGERTRACKING command to set tactile feedback on all fingers of a specific hand.
|
boolean |
tactileHandOff(int handId,
int numFinger)
Send tactile FINGERTRACKING command to turn off tactile feedback on all fingers of a specific hand.
|
public DTrackSDK(java.lang.String connection)
Examples for connection string:
Remember to insert close()
after SDK usage or use try-with-resources to
close all sockets.
connection
- Connection string ("<data port>" or "<ip/host>:<data port>" or "<ip/host>:<port>:fw")public DTrackSDK(int dataPort)
Remember to insert close()
after SDK usage or use try-with-resources to
close all sockets.
dataPort
- Port number (UDP) to receive tracking data from DTrack (0 if to be chosen by SDK)public DTrackSDK(java.net.InetAddress multicastIp, int dataPort)
Remember to insert close()
after SDK usage or use try-with-resources to
close all sockets.
multicastIp
- Multicast IP address to receive data from DTrackdataPort
- Port number (UDP) to receive tracking data from DTrack (0 if to be chosen by SDK)public DTrackSDK(java.lang.String controllerHost, int dataPort)
Remember to insert close()
after SDK usage or use try-with-resources to
close all sockets.
controllerHost
- Hostname or IP address of ControllerdataPort
- Port number (UDP) to receive tracking data from DTrack (0 if to be chosen by SDK)public final boolean isValid()
Convenience routine, checks: - isDataInterfaceValid() (for all modes) - isCommandInterfaceValid() and isCommandInterfaceFullAccess() (for communicating mode)
To get more information about a failure call above routines separately.
public final boolean isDataInterfaceValid()
Needed to receive DTrack UDP data, but does not guarantee this. Especially in case no data is sent to this port.
public final int getDataPort()
public final boolean isCommandInterfaceValid()
public final boolean isCommandInterfaceFullAccess()
public boolean setDataTimeoutUS(int timeout)
timeout
- Timeout for receiving tracking data in us; 0 to set default (1.0 s)public boolean setCommandTimeoutUS(int timeout)
timeout
- Timeout for reply of Controller in us; 0 to set default (10.0 s)public boolean setDataBufferSize(int bufSize)
bufSize
- Buffer size for receiving tracking data in bytes; 0 to set default (32768)public boolean enableStatefulFirewallConnection(java.lang.String senderHost)
In order to enable UDP traffic through a stateful firewall. Just necessary for listening modes, will be done automatically for communicating mode. Default port is working just for DTrack3 v3.1.1 or newer.
senderHost
- Hostname or IP address of Controllerpublic boolean enableStatefulFirewallConnection(java.lang.String senderHost, int senderPort)
In order to enable UDP traffic through a stateful firewall. Just necessary for listening modes, will be done automatically for communicating mode.
senderHost
- Hostname or IP address of ControllersenderPort
- Port number from which Controller is sending tracking datapublic boolean receive()
Updates internal data structures.
public boolean processPacket(java.lang.String data)
Updates internal data structures.
data
- Data packet to be processedpublic final java.lang.String getBuf()
public final DTrackSDK.Errors getLastDataError()
public final DTrackSDK.Errors getLastServerError()
public final int getLastDTrackError()
public final java.lang.String getLastDTrackErrorDescription()
public boolean startMeasurement()
Ensure via DTrack frontend that tracking data is sent to correct UDP data port.
false
public boolean stopMeasurement()
true
public java.lang.String getParam(java.lang.String category, java.lang.String name)
category
- Parameter categoryname
- Parameter namenull
if unsuccessful (a DTrack error message is available)public java.lang.String getParam(java.lang.String parameter)
parameter
- Parameter key (category, name)null
if unsuccessful (a DTrack error message is available)public boolean setParam(java.lang.String category, java.lang.String name, java.lang.String value)
category
- Parameter categoryname
- Parameter namevalue
- Parameter valuepublic boolean setParam(java.lang.String parameter)
parameter
- Parameter string (category, name, value)public boolean getMessage()
Updates internal message structures. Use the appropriate methods to get the contents of the message.
public final int getMessageFrameNr()
public final int getMessageErrorId()
public final java.lang.String getMessageOrigin()
public final java.lang.String getMessageStatus()
public final java.lang.String getMessageMsg()
public int sendDTrack2Command(java.lang.String dtrack2Command)
Answers like "dtrack2 ok" and "dtrack2 err .." are processed. Both cases are reflected in the return value. getLastDTrackError() and getLastDTrackErrorDescription() will return more information.
dtrack2Command
- DTrack2/DTRACK3 command stringgetLastDataError()
and getLastDTrackErrorDescription()
public int sendDTrack2Command(java.lang.String dtrack2Command, java.lang.StringBuilder dtrack2Response)
Answers like "dtrack2 ok" and "dtrack2 err .." are processed. Both cases are reflected in the return value. getLastDTrackError() and getLastDTrackErrorDescription() will return more information.
dtrack2Command
- DTrack2/DTRACK3 command stringdtrack2Response
- DTrack2/DTRACK3 answer stringgetLastDataError()
and getLastDTrackErrorDescription()
public boolean tactileFinger(int handId, int fingerId, double strength)
Sends command to the sender IP address of the latest received UDP data, if no hostname or IP address of a Controller is defined.
handId
- Hand id, range 0 ..fingerId
- Finger id, range 0 ..strength
- Strength of feedback, between 0.0 and 1.0public boolean tactileHand(int handId, double[] strength)
Sends command to the sender IP address of the latest received UDP data, if no hostname or IP address of a Controller is defined.
handId
- Hand id, range 0 ..strength
- Strength of feedback on all fingers, between 0.0 and 1.0public boolean tactileHandOff(int handId, int numFinger)
Sends command to the sender IP address of the latest received UDP data, if no hostname or IP address of a Controller is defined.
handId
- Hand id, range 0 ..numFinger
- Number of fingerspublic boolean flystickBeep(int flystickId, double durationMs, double frequencyHz)
Sends command to the sender IP address of the latest received UDP data, if no hostname or IP address of a Controller is defined.
flystickId
- Flystick id, range 0 ..durationMs
- Time duration of the beep (in milliseconds)frequencyHz
- Frequency of the beep (in Hertz)public boolean flystickVibration(int flystickId, int vibrationPattern)
Sends command to the sender IP address of the latest received UDP data, if no hostname or IP address of a Controller is defined.
flystickId
- Flystick id, range 0 ..vibrationPattern
- Vibration pattern id, range 1 ..public void setLogLevel(java.util.logging.Level level)
level
- New level of the loggerLevel
public void close()
Use try-with-resources to automatically close the sdk after usage:
try ( DTrackSDK sdk = new DTrackSDK( ... ) ) { // Use sdk here }
close
in interface java.lang.AutoCloseable
protected void startFrame()
protected void endFrame()
public final int getFrameCounter()
Refers to last received frame.
public final double getTimeStamp()
Refers to last received frame.
public final int getTimeStampSec()
Refers to last received frame.
public final int getTimeStampUsec()
Refers to last received frame.
public final int getLatencyUsec()
Refers to last received frame.
public final int getNumBody()
Refers to last received frame.
public final java.util.List<DTrackBody> getBody()
Refers to last received frame.
public final DTrackBody getBody(int id)
Refers to last received frame.
id
- Id, range 0 ..public final int getNumFlystick()
Refers to last received frame.
public final java.util.List<DTrackFlystick> getFlystick()
Refers to last received frame.
public final DTrackFlystick getFlystick(int id)
Refers to last received frame.
id
- Id, range 0 ..public final int getNumMeaTool()
Refers to last received frame.
public final java.util.List<DTrackMeaTool> getMeaTool()
Refers to last received frame.
public final DTrackMeaTool getMeaTool(int id)
Refers to last received frame.
id
- Id, range 0 ..public final int getNumMeaRef()
Refers to last received frame.
public final java.util.List<DTrackMeaRef> getMeaRef()
Refers to last received frame.
public final DTrackMeaRef getMeaRef(int id)
Refers to last received frame.
id
- Id, range 0 ..public final int getNumHand()
Refers to last received frame.
public final java.util.List<DTrackHand> getHand()
Refers to last received frame.
public final DTrackHand getHand(int id)
Refers to last received frame.
id
- Id, range 0 ..public final int getNumHuman()
Refers to last received frame.
public final java.util.List<DTrackHuman> getHuman()
Refers to last received frame.
public final DTrackHuman getHuman(int id)
Refers to last received frame.
id
- Id, range 0 ..public final int getNumInertial()
Refers to last received frame.
public final java.util.List<DTrackInertial> getInertial()
Refers to last received frame.
public final DTrackInertial getInertial(int id)
Refers to last received frame.
id
- Id, range 0 ..public final int getNumMarker()
Refers to last received frame.
public final java.util.List<DTrackMarker> getMarker()
Refers to last received frame.
public final DTrackMarker getMarker(int index)
Refers to last received frame.
index
- Index, range 0 ..public final boolean isStatusAvailable()
Refers to last received frame.
public final DTrackStatus getStatus()
Refers to last received frame.
protected boolean parse(java.lang.String string)
string
- A DTrack Stringtrue
String has been parsed correctly; if failed, see log for further information