using System;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading;
namespace PsTech.Reference
{
public class Reference
{
[DllImport("Kernel32")]
private static extern bool SetConsoleCtrlHandler(ConsoleEventHandler handler, bool add);
private delegate bool ConsoleEventHandler(CtrlType sig);
static ConsoleEventHandler ConsoleCtrlEventHandler;
public enum CtrlType
{
CtrlCEvent = 0,
CtrlBreakEvent = 1,
CtrlCloseEvent = 2,
CtrlLogOffEvent = 5,
CtrlShutdownEvent = 6,
}
private static bool ConsoleHandler(CtrlType sig)
{
Exithandler((int)sig);
return true;
}
public static void PrintMatrix(float[] matrix)
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
Console.Write(matrix[j + i * 4] + "\t");
}
Console.WriteLine();
}
}
static bool Running = true;
static int NumberOfSamplesToGrab = 1000;
static int SamplesGrabbed = 0;
{
{
if (SamplesGrabbed++ >= NumberOfSamplesToGrab)
{
Running = false;
}
}
}
static void Exithandler(int sig)
{
Running = false;
}
static int Main(string[] args)
{
ConsoleCtrlEventHandler += new ConsoleEventHandler(ConsoleHandler);
SetConsoleCtrlHandler(ConsoleCtrlEventHandler, true);
try
{
{
Console.Write(
"Running PST Server version " + tracker.
GetVersionInfo() +
"\n");
Console.Write(
"System check: " + tracker.
Systemcheck() +
"\n\n");
Console.Write(
"Frame rate set to " + tracker.
GetFramerate() +
"\n\n");
Console.Write("*******************\n\n");
Console.Write("Current reference system transformation matrix:\n");
Console.Write("\n\n*******************\n\n");
float[] reference = { -1.0f, 0.0f, 0.0f, 0.1f,
0.0f, 0.0f, 1.0f, -0.5f,
0.0f, 1.0f, 0.0f, 0.5f,
0.0f, 0.0f, 0.0f, 1.0f };
Console.Write("New reference system transformation matrix:\n");
{
Console.Write("Reference set correctly!\n");
}
else
{
Console.Write("Reference not set correctly!\n");
}
Console.Write("\n\n*******************\n\n");
float[] nonOrthoNormalReference = { -1.0f, 1.0f, 0.0f, 0.1f,
0.0f, 0.0f, -1.0f, -0.5f,
0.0f, -1.0f, 0.0f, 0.5f,
0.0f, 0.0f, 0.0f, 1.0f };
try
{
Console.Write("Reference input incorrectly applied!");
}
{
Console.Write("Reference input correctly ignored: " + e.Message + "\n");
}
Console.Write("New reference system after applying non-orthonormal transformation:\n");
Console.Write("\n\n*******************\n\n");
float[] relativeReference = { 0.0f, -1.0f, 0.0f, 0.5f,
1.0f, 0.0f, 0.0f, 0.4f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
Console.Write("New reference system after applying relative transformation:\n");
Console.Write("\n\n*******************\n\n");
Console.Write("Reset default reference system:\n");
while (Running)
{
Thread.Sleep(100);
}
}
}
{
Console.Write(e + "\n");
}
Console.Write("Press enter to continue...\n");
Console.Read();
return 0;
}
}
}
Tracking information retrieved from tracker.
Definition TrackerData.cs:25
Main PST SDK class implementing tracker communication.
Definition Tracker.cs:198
static void Shutdown()
Shutdown the tracking system, stopping tracking.
Definition Tracker.cs:548
double GetFramerate()
Get current frame rate.
Definition Tracker.cs:589
void StartTracker()
Start tracking.
Definition Tracker.cs:524
StatusMessage Systemcheck()
Check if the tracker is running correctly.
Definition Tracker.cs:568
void AddTrackerListener(TrackerListener listener)
Add a listener for tracker data and/or mode change reporting.
Definition Tracker.cs:476
float[] GetReference()
Gets the transformation matrix for the current reference system.
Definition Tracker.cs:938
void SetReference(float[] creference, bool relative=false)
Set the reference system in which tracking results are reported.
Definition Tracker.cs:910
void SetDefaultReference()
Reset the reference system to the default reference system.
Definition Tracker.cs:923
void SetFramerate(double fps)
Set tracker frame rate.
Definition Tracker.cs:579
string GetVersionInfo()
Get version information of the SDK.
Definition Tracker.cs:400
Implements the TrackerListener class to receive tracking information and tracking mode updates.
Definition Tracker.cs:166
Generic tracker exception.
Definition TrackerExceptions.cs:16
ErrorStatus
Tracker error messages enum class.
Definition ErrorHandler.cs:17