Low-Level C# SDK  v1.1
No Matches
Low-Level C# SDK

Welcome to the Weart Low-Level C# SDK documentation.

The SDK allows to connect to the Weart middleware and perform various actions with the TouchDIVER devices:

  • Start and Stop the middleware operations
  • Calibrate the device
  • Receive tracking data from the devices
  • Send haptic effects to the devices


C++ SDK Architecture


The minimum setup to use the weart SDK consists of:

  • A PC with the Middleware installed
  • A TouchDIVER device
  • A C# project using the Low-Level SDK

The SDK can be downloaded as a zip file containing all the necessary files. To use it in your C# project, unzip it and move the files in a folder inside your project. Then, add the sdk files in your project. In Visual Studio, this can be done by including the sdk directory into the project (Right Click on Solution -> Add -> Existing Directory).

To start using the SDK in your project, start the Middleware application and connect a TouchDIVER device to it.

Import the main namespaces:

using WeArt.Core;
Definition: TouchEffect.cs:9
Definition: IWeArtEffect.cs:9

Create the WeArtClient and start the communication with the middleware:

// Create weart client
WeArtClient weArtClient = new WeArtClient { IpAddress = WeArtNetwork.LocalIPAddress, Port = 13031 };
// Start connection and send start message to middleware
Network client used to send and receive message to/from the hardware middleware. This class is meant ...
Definition: WeArtClient.cs:21
Task Start(TrackingType trackingType=TrackingType.WEART_HAND)
Establishes a connection to the middleware and send the StartFromClientMessage
Definition: WeArtClient.cs:125
The call to WeArtClient.Start() will also start the middleware, so be sure to have connected the devices before


Start/Stop Client

As seen in the previous section, to start the middleware operations, call the Start() method.


To stop the middleware, call the Stop() method.

void Stop()
Stops the middleware and the established connection.
Definition: WeArtClient.cs:173

Devices calibration

After starting the communication with the middleware, it's now possible to calibrate the TouchDIVER devices. The calibration allows to set the initial offsets of each thimble relative to the control unit position, in order to improve the finger tracking output.

The SDK client allows to add callbacks to monitor the calibration procedure status and result. For example, to start the calibration and print "Success" or "Failed":

weArtClient.OnCalibrationResultSuccess += (HandSide hand) => Console.WriteLine("Success!");
weArtClient.OnCalibrationResultFail += (HandSide hand) => Console.WriteLine("Failed");
void StartCalibration()
Starts the calibration procedure.
Definition: WeArtClient.cs:182
The hand side, left or right.
Definition: WeArtCommon.cs:18

Haptic feedback

The TouchDIVER allows to perform haptic feedback on the user's finger through its thimbles. Every thimble can apply a certain amount of pressure, temperature and vibration based on the processed object and texture.

Haptic Object

A WeArtHapticObject is the basic object used to apply haptic feedback. To create one, use the following code:

// create haptic object to manage actuation on Right hand and Index Thimble
WeArtHapticObject hapticObject = new WeArtHapticObject(_weartClient);
hapticObject.HandSides = HandSideFlags.Right;
hapticObject.ActuationPoints = ActuationPointFlags.Index;
This component controls the haptic actuators of one or more hardware thimbles. The haptic control can...
Definition: WeArtHapticObject.cs:24
The multi-selectable version of ActuationPoint
Definition: WeArtCommon.cs:116
The multi-selectable version of HandSide
Definition: WeArtCommon.cs:28

The attirbutes handSideFlag and actuationPointFlag accept multiple values. The next example presents a single haptic object that, when applied a WeArtEffect, will affect both hands and all fingers.

hapticObject.HandSides = HandSideFlags.Right | HandSideFlags.Left;
hapticObject.ActuationPoints = ActuationPointFlags.Index | ActuationPointFlags.Middle | ActuationPointFlags.Thumb;

Create Effect

The SDK contains a basic TouchEffect class to apply effects to the haptic device. The TouchEffect class contains the effects without any processing. For different use cases (e.g. values not directly set, but computed from other parameters), create a different effect class by implementing the IWeArtEffect interface.

Create the object on which the temperature, force and texture values will be applied:

TouchEffect touchEffect = new TouchEffect();
Internal class used to create the haptic effet on collision.
Definition: TouchEffect.cs:14

Add or Update Effect

It's possible to add a new effect to an haptic object, or to update an existing one.

In the example below, the effect created in the previous section is updated with a new temperature, force and texture. It is then added to the haptic object if not already present (if the effect is already applied to the thimble, it will update it automatically through the OnUpdate event).

// create temperature component
temperature.Active = true; // must be active to work
temperature.Value = 0.2f;
// create force component
force.Active = true;
force.Value = 0.7f;
// create texture component
texture.Active = true;
texture.TextureType = TextureType.ProfiledAluminiumMeshFast;
// effect set proporties
touchEffect.Set(temperature, force, texture);
// add effect if needed, to thimble
if (hapticObject.ActiveEffect == null)
WeArt.Core.Texture Texture
Definition: WeArtHapticObject.cs:11
void Set(Temperature temperature, Force force, Texture texture)
The Set.
Definition: TouchEffect.cs:41
IWeArtEffect ActiveEffect
The currently active effects on this object.
Definition: WeArtHapticObject.cs:151
void AddEffect(IWeArtEffect effect)
Adds a haptic effect to this object. This effect will have an influence as long as it is not removed ...
Definition: WeArtHapticObject.cs:168
Texture type to Haptic feel.
Definition: WeArtCommon.cs:128
The force applied as haptic pressure on the actuation point. The minimum value indicates no pressure,...
Definition: WeArtForce.cs:18
static Force Default
The default force is zero.
Definition: WeArtForce.cs:22
The temperature applied to the thermal actuator on the actuation point. The minimum value indicates t...
Definition: WeArtTemperature.cs:18
static Temperature Default
The default temperature is the ambient one, with the actuator off.
Definition: WeArtTemperature.cs:22
When a new effect is added, the last effect applied is replaced by the new effect.

Remove Effect

If an effect is not needed anymore, it can be removed from the haptic object with the RemoveEffect method.

void RemoveEffect(IWeArtEffect effect)
Removes a haptic effect from the set of influencing effects.
Definition: WeArtHapticObject.cs:181
When a new effect is added, the last effect applied is replaced by the new effect.


After starting the middleware and performing the device calibration, it's possible to receive tracking data related to the TouchDIVER thimbles.

To read these values, create and set a thimble tracker object for monitoring the closure/abduction value of a given finger:

WeArtThimbleTrackingObject thumbThimbleTracking = new WeArtThimbleTrackingObject(weArtClient, HandSide.Right, ActuationPoint.Index);
This component receives and exposes tracking data from the hardware.
Definition: WeArtThimbleTrackingObject.cs:15
The point of application of the haptic feeling.
Definition: WeArtCommon.cs:38

Once this object is created, it will start receiving the tracking values. To access the closure and abduction values, simply use the getters provided by the thimble tracking object.

The closure value ranges from 0 (opened) to 1 (closed).

The abduction value ranges from 0 (finger near the hand's central axis) to 1 (finger far from the hand central axis).

float closure = thumbThimbleTracking.Closure.Value;
float abduction = thumbThimbleTracking.Abduction.Value;
Abduction Abduction
The abduction measure received from the hardware (if any)
Definition: WeArtThimbleTrackingObject.cs:47
Closure Closure
The closure measure received from the hardware.
Definition: WeArtThimbleTrackingObject.cs:42
The closure value is available for all thimbles, while the abduction value is available only for the thumb (other thimbles will have a value of 0).