import Tabs aus '@theme/Tabs'; import TabItem aus '@theme/TabItem';
Erste Schritte mit dem VerseGrip-Stift
Die VerseGrips erweitern die Modelle „ Inverse3 “, „Inverse3X“ und „ MinVerse “ um eine Funktion zur Erfassung der Ausrichtung. In diesem Artikel werden die Vorgehensweise zur Konfiguration des VerseGrip Stylus sowie dessen Funktionen vorgestellt.
Vorstellung des VerseGrip Stylus
Das VerseGrip Stylus-Gerät nutzt eine proprietäre drahtlose Hochgeschwindigkeits-Kommunikationstechnologie, um die Ausrichtung sowie die Ein- und Ausgänge (E/A) in der Hand zu erfassen. Es wurde entwickelt, um eine hohe Vielseitigkeit in einer Vielzahl von Anwendungsbereichen zu bieten.
Die wichtigsten Merkmale sind folgende:
- 2 Tasten zur Benutzereingabe,
- 1 Kalibrierungsknopf,
- 1 Ein-/Standby-Taste
- 2 LED-Statusanzeigen
- USB-C-Ladeanschluss
- Drahtlose Übertragungsgeschwindigkeit von bis zu 1 kHz
- Akkulaufzeit von 10 bis 12 Stunden
- Bis zu 8 VerseGrip-Stifte können über ein einziges Band mit einem Dongle gekoppelt werden

Kundenservice
Sollten Sie Fragen oder Bedenken bezüglich Ihres Geräts oder dessen Funktionsweise haben, wenden Sie sich bitte an unser Support-Team, um Unterstützung zu erhalten. Das VerseGrip Stylus-Gerät enthält eine komplexe, proprietäre Funktechnologie. Das Öffnen des Geräts führt zum Erlöschen Ihrer Garantie und kann das Gerät unbrauchbar machen. Um längere Versandzeiten und kostspielige Reparaturen zu vermeiden, ÖFFNEN SIE DAS GERÄT BITTE NICHT.
Konfiguration und Kalibrierung des VerseGrip-Taststifts
In diesem Abschnitt werden die Schritte zum Anschließen des Dongles, zum Einschalten des VerseGrip Stylus-Geräts und zur Durchführung der Kalibrierung beschrieben.
Einrichtung
- Schließen Sie den Dongle an einen USB-Anschluss Ihres Computers an.
- Legen Sie den Griff auf eine ebene Fläche, auf der er nicht verrutschen kann, wobei die Tasten nach oben und der Kugelstecker in Richtung Bildschirm zeigen.
Inbetriebnahme und Kalibrierung
- Drücken Sie einmal auf die Ein-/Standby-Taste. Die Statusanzeige leuchtet zunächst rot auf und wechselt dann zu gelb, um anzuzeigen, dass die Trägheitsmesseinheit (IMU) des Geräts gerade eine Selbstkalibrierung durchführt.
- Sobald die Selbstkalibrierung abgeschlossen ist, wird der Stift mit dem Computer verbunden.
- Wenn der Stift erfolgreich verbunden ist und Daten drahtlos überträgt, blinkt die Status-LED grün.
- Wenn der Akkustand kritisch ist, schaltet sich der VerseGrip Stylus alle 2 Minuten automatisch aus; laden Sie ihn bitte umgehend auf.
Neukalibrierung
Durch den Kalibrierungsvorgang wird das Koordinatensystem von VerseGrip zurückgesetzt, sodass die Richtung, in der das Gerät während der Kalibrierung gehalten wird, zur neuen Referenzachse wird.
- Um die Kalibrierung durchzuführen, halten Sie den Stift in der Position, in der Sie die Kalibrierung vornehmen möchten, und drücken Sie dann die Kalibrierungstaste. Halten Sie diese drei Sekunden lang gedrückt oder bis sich die Ausrichtung in der Simulation ändert.
Nachstehend finden Sie eine Demonstration, in der das Verhalten des Geräts im nicht kalibrierten und im kalibrierten Zustand verglichen wird. Für unsere Demonstrationen muss das VerseGrip-Gerät vor der Kalibrierung in der abgebildeten Konfiguration gehalten werden.

Standby und Ausschalten
- Drücken Sie einmal auf die Ein-/Standby-Taste, um in den Standby-Modus zurückzukehren. Die Status-LED beginnt weiß zu blinken, und die Datenübertragung wird unterbrochen.
- Um das VerseGrip Stylus-Gerät auszuschalten, halten Sie die Ein-/Standby-Taste 5 Sekunden lang gedrückt und lassen Sie sie dann los. Sobald Sie die Taste loslassen, sollte die Statusanzeige erlöschen und es wird kein Lichtsignal mehr ausgegeben. Die Datenübertragung wird beendet.
Aufladen
- Schließen Sie das VerseGrip Stylus-Gerät an den USB-C-Ladeanschluss an.
- Die Ladeanzeige leuchtet blau, solange das Gerät an das Stromnetz angeschlossen ist, und erlischt, sobald der Akku vollständig aufgeladen ist.
- Wenn der Stift ausgeschaltet ist, wenn Sie ihn an das Stromnetz anschließen, schaltet er sich automatisch ein.
WARNUNG: Wenn Sie ein VerseGrip Stylus-Gerät besitzen, das zwischen August und Dezember 2024 ausgeliefert wurde, lassen Sie den Akku nicht vollständig entladen. Ist der Akku einmal vollständig entladen, kann er möglicherweise keine Ladung mehr speichern. In diesem Fall funktioniert das VerseGrip Stylus-Gerät weiterhin, solange es an das Stromnetz angeschlossen ist. Wenden Sie sich an den Support von Haply , um die Firmware-Update-Datei zur Behebung dieses Problems zu erhalten.
Status und Leuchtanzeigen
| Farbe | Lichtsequenz | Beschreibung |
|---|---|---|
| Gelb | Schnelle Ein- und Ausblendung | Automatische Erstkalibrierung des Sensors (stellen Sie das VerseGrip-Gerät bewegungslos auf den Tisch) |
| Schnelles Blinken | Kalibrierungsknopf für die Ausrichtung gedrückt, Kalibrierungsvorgang gestartet | |
| Fixe | Kalibrierungstaste für die Ausrichtung gedrückt, Kalibrierung abgeschlossen | |
| Rouge | Schnelle Ein- und Ausblendung | Adapter nicht angeschlossen, kein Signal vom Host |
| Schnelles Blinken | Ein-/Standby-Taste gedrückt, Ausschaltvorgang gestartet | |
| Vert | Eingangs-/Ausgangs-Fondu | Adapter angeschlossen, VerseGrip im aktiven Datenübertragungsmodus |
| Fixe | Adapter angeschlossen, VerseGrip im aktiven Datenübertragungsmodus, USB-Stromversorgung angeschlossen | |
| Blanc | Eingangs-/Ausgangs-Fondu | Adapter angeschlossen, VerseGrip im Standby-/Ruhemodus, keine Datenübertragung |
| Fixe | Adapter angeschlossen, VerseGrip im Standby-/Ruhemodus, keine Datenübertragung, USB-Stromversorgung angeschlossen | |
| Orange | Blitz (abwechselnd) | Warnung bei niedrigem Akkustand; die Benachrichtigung wird im aktuellen Status abwechselnd angezeigt |
| Doppeltes Blinken (abwechselnd) | Warnung wegen kritisch niedrigem Akkustand; die Benachrichtigung wird im aktuellen Status abwechselnd angezeigt | |
| Sarcelle | Eingangs-/Ausgangs-Fondu | Vorgehensweise zum Aktualisieren der Firmware des Geräts |
| (Plus vif) | Fixe | Bei gedrückten Bedientasten ist die aktuelle Anzeigefarbe fest und kräftiger |
| Aus | Kein Licht | Anhalten, Ausschalten |
| Farbe der Ladeanzeige | Lichtsequenz | Beschreibung |
|---|---|---|
| Blau | Fixe | Zuständig |
| Schnelles Blinken | Das Aufladen ist fast abgeschlossen | |
| Aus | Kein Licht | Aufladen abgeschlossen |
Frühere Zustände und Leuchtanzeigen
Die unten abgebildeten Statusanzeigen entsprechen den früheren Status und Farben, die in früheren Versionen des VerseGrip Stylus (Firmware 1.10 und älter) zu finden waren.
| Farbe | Lichtsequenz | Beschreibung |
|---|---|---|
| Rouge | Fixe | Initialisierung der Komponenten steht noch aus |
| Blinken | Standby-Modus. Keine Datenübertragung | |
| Blau | Fixe | Automatische Erstkalibrierung des Sensors (stellen Sie das VerseGrip-Gerät bewegungslos auf den Tisch) |
| Vert | Blinken | Adapter angeschlossen, VerseGrip im aktiven Datenübertragungsmodus |
| Aus | Kein Licht | Anhalten, Ausschalten |
| Farbe der Ladeanzeige | Lichtsequenz | Beschreibung |
|---|---|---|
| Blau | Fixe | Zuständig |
| Schnelles Blinken | Das Aufladen ist fast abgeschlossen | |
| Aus | Kein Licht | Aufladen abgeschlossen |
Beispielcode
Hier ist ein einfaches Beispiel für die Verwendung von VerseGrip Stylus mit C++.
#include <external/libhv.h>
#include <nlohmann/json.hpp>
#include <chrono>
#include <cstdio>
#include <string>
using namespace hv;
using json = nlohmann::json;
// Procedure to get the first detected and available Wired VerseGrip Stylus device id
std::string get_first_verse_grip_device_id(const json &data) {
const auto& vgs = data["wireless_verse_grip"];
if (vgs.empty()) {
return "";
}
return vgs.items().begin().key();
}
int main() {
const auto print_delay = std::chrono::milliseconds(100);
auto current = std::chrono::high_resolution_clock::now();
bool first_message = true;
std::string device_id;
WebSocketClient ws;
ws.onmessage = [&](const std::string &msg) {
json data = json::parse(msg);
if (first_message) {
first_message = false;
const std::string first_id = get_first_verse_grip_device_id(data);
if (first_id.empty()) {
printf("no Wireless VerseGrip found.\n");
ws.close();
return;
}
device_id = first_id;
}
if (device_id.empty() || !data["wireless_verse_grip"].contains(device_id)) {
return;
}
const auto now = std::chrono::high_resolution_clock::now();
if (std::chrono::high_resolution_clock::now() > current + print_delay) {
current = now;
const json state = data["wireless_verse_grip"][device_id];
printf("Rotation : { x:%f, y:%f, z:%f, w:%f }, Hall:%i, Button : [%d, %d, %d], Battery: {%f}\n",
state["orientation"]["x"].get<float>(),
state["orientation"]["y"].get<float>(),
state["orientation"]["z"].get<float>(),
state["orientation"]["w"].get<float>(),
state["hall"].get<int8_t>(),
state["buttons"]["a"].get<bool>(),
state["buttons"]["b"].get<bool>(),
state["buttons"]["c"].get<bool>(),
state["battery_level"].get<float>());
}
};
ws.open("ws://localhost:10000");
printf("Press ENTER to stop...\n\n");
while (std::cin.get() != '\n') {
}
if (ws.isConnected()) {
ws.close();
}
return 0;
}
#include <string.h>
#include <chrono>
#include <iostream>
#include <iterator>
#include <string>
#include <thread>
#include "HardwareAPI.h"
int main(int argc, char* argv[])
{
char* portName;
if (argc < 2)
{
std::printf("Usage: %s <port>\n", argv[0]);
}
else
{
#if defined(_WIN32) || defined(_WIN64)
portName = _strdup(argv[1]); // argv1;
#endif
#if defined(__linux__)
portName = strdup(argv[1]); // argv1;
#endif
}
Haply::HardwareAPI::IO::SerialStream serial_stream(portName);
Haply::HardwareAPI::Devices::Handle handle(&serial_stream);
while (true)
{
Haply::HardwareAPI::Devices::Handle::VersegripStatusResponse data;
data = handle.GetVersegripStatus();
std::printf(
"device_id: %d battery_level: %f quaternion: %f %f %f %f buttons: "
"%d error_flags: %d\n",
data.device_id, data.battery_level, data.quaternion[0],
data.quaternion[1], data.quaternion[2], data.quaternion[3],
data.buttons, data.error_flag);
}
}