Zum Hauptinhalt springen

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​

FarbeLichtsequenzBeschreibung
GelbSchnelle Ein- und AusblendungAutomatische Erstkalibrierung des Sensors (stellen Sie das VerseGrip-Gerät bewegungslos auf den Tisch)
Schnelles BlinkenKalibrierungsknopf für die Ausrichtung gedrückt, Kalibrierungsvorgang gestartet
FixeKalibrierungstaste für die Ausrichtung gedrückt, Kalibrierung abgeschlossen
RougeSchnelle Ein- und AusblendungAdapter nicht angeschlossen, kein Signal vom Host
Schnelles BlinkenEin-/Standby-Taste gedrückt, Ausschaltvorgang gestartet
VertEingangs-/Ausgangs-FonduAdapter angeschlossen, VerseGrip im aktiven Datenübertragungsmodus
FixeAdapter angeschlossen, VerseGrip im aktiven Datenübertragungsmodus, USB-Stromversorgung angeschlossen
BlancEingangs-/Ausgangs-FonduAdapter angeschlossen, VerseGrip im Standby-/Ruhemodus, keine Datenübertragung
FixeAdapter angeschlossen, VerseGrip im Standby-/Ruhemodus, keine Datenübertragung, USB-Stromversorgung angeschlossen
OrangeBlitz (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
SarcelleEingangs-/Ausgangs-FonduVorgehensweise zum Aktualisieren der Firmware des Geräts
(Plus vif)FixeBei gedrückten Bedientasten ist die aktuelle Anzeigefarbe fest und kräftiger
AusKein LichtAnhalten, Ausschalten
Farbe der LadeanzeigeLichtsequenzBeschreibung
BlauFixeZuständig
Schnelles BlinkenDas Aufladen ist fast abgeschlossen
AusKein LichtAufladen 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.

FarbeLichtsequenzBeschreibung
RougeFixeInitialisierung der Komponenten steht noch aus
BlinkenStandby-Modus. Keine Datenübertragung
BlauFixeAutomatische Erstkalibrierung des Sensors (stellen Sie das VerseGrip-Gerät bewegungslos auf den Tisch)
VertBlinkenAdapter angeschlossen, VerseGrip im aktiven Datenübertragungsmodus
AusKein LichtAnhalten, Ausschalten
Farbe der LadeanzeigeLichtsequenzBeschreibung
BlauFixeZuständig
Schnelles BlinkenDas Aufladen ist fast abgeschlossen
AusKein LichtAufladen 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);

}
}