Zum Haupttext springen

import Tabs aus '@theme/Tabs'; import TabItem aus '@theme/TabItem';

Erste Schritte mit dem VerseGrip Stylus

VerseGrips erweitert „ Inverse3 “, „Inverse3X“ und „MinVerse“ um eine Funktion zur Richtungserkennung. In diesem Dokument werden die Einrichtungsschritte und Funktionen des VerseGrip-Stifts erläutert.

Vorstellung des VerseGrip-Stifts​

Der VerseGrip Stylus nutzt eine proprietäre Hochgeschwindigkeits-Funktechnologie, um die Richtungserfassung sowie die Eingabe und Ausgabe (I/O) im gehaltenen Zustand zu ermöglichen. Er wurde für den breiten Einsatz in verschiedenen Anwendungsbereichen entwickelt.

Die wichtigsten Funktionen sind folgende:

  • 2 Schaltflächen für Benutzereingaben,
  • 1 Kalibrierungstaste,
  • 1 Ein-/Standby-Taste
  • 2 Status-LEDs
  • USB-C-Ladeanschluss
  • Drahtlose Übertragungsgeschwindigkeit von bis zu 1 kHz
  • Akkulaufzeit 10 bis 12 Stunden
  • Pro Band können bis zu 8 VerseGrip Stylus-Geräte mit einem Dongle gekoppelt werden.

Kundensupport​

Sollten Sie Fragen oder Bedenken bezüglich des Geräts oder dessen Funktionsweise haben, wenden Sie sich bitte an unseren Support. Der VerseGrip Stylus enthält eine komplexe, proprietäre Funktechnologie. Das Öffnen des Geräts führt zum Erlöschen der Garantie und kann dazu führen, dass das Gerät nicht mehr funktioniert. Um längere Lieferzeiten oder hohe Reparaturkosten zu vermeiden, öffnen Sie das Gerät bitte auf keinen Fall.

Einrichtung und Kalibrierung des VerseGrip-Stifts​

In diesem Abschnitt werden die Schritte zum Anschließen des Dongles, zum Einschalten des VerseGrip Stylus und zur Durchführung der Kalibrierung beschrieben.

Einstellungen​

  • Schließen Sie den Dongle an den USB-Anschluss Ihres Computers an.
  • Legen Sie das Gerät auf eine ebene Fläche, auf der sich der Lenker nicht bewegen kann. Achten Sie darauf, dass die Tasten nach oben und der Kugelstecker zum Bildschirm zeigen.

Einschalten und Kalibrierung​

  • Drücken Sie einmal auf den Ein-/Aus-Schalter. Die Statusanzeige leuchtet zunächst rot auf und wechselt dann zu gelb. Dies zeigt an, dass die im Gerät integrierte IMU gerade eine Selbstkalibrierung durchführt.
  • Sobald die automatische Kalibrierung abgeschlossen ist, wird der Stylus an den Computer angeschlossen.
  • Wenn der Stylus erfolgreich verbunden ist und Daten drahtlos überträgt, blinkt die Statusanzeige grün.
  • Wenn der Akku fast leer ist, schaltet sich der VerseGrip Stylus alle zwei Minuten automatisch aus. Laden Sie ihn bitte umgehend auf.

Neukalibrierung​

Der Kalibrierungsprozess setzt das Koordinatensystem des VerseGrip zurück, sodass die Ausrichtung, in der das Gerät während der Kalibrierung gehalten wird, zur neuen Referenzachse wird.

  • Um die Kalibrierung durchzuführen, halten Sie den Stylus an der gewünschten Stelle fest und drücken Sie die Kalibrierungstaste 3 Sekunden lang oder so lange, bis sich die Ausrichtung in der Simulation ändert.

Im Folgenden sehen Sie eine Demonstration, in der das Verhalten des Geräts vor und nach der Kalibrierung verglichen wird. Für diese Demonstration muss die Position des VerseGrip vor der Kalibrierung wie in der folgenden Abbildung gezeigt beibehalten werden.

Standby-Modus und Ausschalten​

  • Drücken Sie einmal auf die Ein-/Aus-Taste, um in den Standby-Modus zurückzukehren. Die Statusanzeige beginnt, weiß zu blinken, und die Datenübertragung wird unterbrochen.
  • Um den VerseGrip Stylus auszuschalten, halten Sie die Ein-/Aus-Taste 5 Sekunden lang gedrückt und lassen Sie sie dann los. Sobald Sie die Taste loslassen, erlischt die Statusanzeige und es wird keine Anzeige mehr angezeigt. Die Datenübertragung wird ebenfalls unterbrochen.

Aufladen​

  • Schließen Sie den VerseGrip Stylus über den USB-C-Ladeanschluss an.
  • Sobald das Gerät an die Stromversorgung angeschlossen ist, leuchtet die Ladeanzeige durchgehend blau; sobald der Ladevorgang abgeschlossen ist, erlischt sie.
  • Wenn Sie den Stylus im ausgeschalteten Zustand an die Stromversorgung anschließen, schaltet er sich automatisch ein.

Warnung: Wenn Sie einen VerseGrip Stylus verwenden, der zwischen August und Dezember 2024 ausgeliefert wurde, achten Sie bitte darauf, dass der Akku nicht vollständig entladen wird. Ist der Akku einmal entladen, kann er möglicherweise keine Ladung mehr halten. In diesem Fall funktioniert der VerseGrip Stylus nur noch, solange er an eine Stromquelle angeschlossen ist. Um eine Firmware-Update-Datei zur Behebung dieses Problems zu erhalten, wenden Sie sich bitte an den Support unter Haply .

Status und Anzeigen​

FarbeAnzeigemusterBeschreibung
gelbSchnelles Ein- und AusblendenAnfängliche Kalibrierung des automatischen Sensors (Legen Sie den VerseGrip ruhig auf den Tisch.)
Schnelles BlinkenDie Taste zur Richtungskalibrierung wurde gedrückt, wodurch der Kalibrierungsvorgang gestartet wurde.
Leuchtet dauerhaftDie Kalibrierung wurde durch Drücken der Kalibrierungstaste abgeschlossen.
RotSchnelles Ein- und AusblendenAdapter getrennt, kein Signal vom Host
Schnelles BlinkenDer Netzschalter wurde gedrückt, woraufhin der Ausschaltvorgang begann.
GrünEin-/AusblendenAdapter angeschlossen, VerseGrip im aktiven Datenstrom-Modus
Leuchtet dauerhaftAdapter angeschlossen, VerseGrip im aktiven Datenstrom-Modus, USB-Stromversorgung angeschlossen
WeißEin-/AusblendenAdapter angeschlossen, VerseGrip im Ruhe-/Standby-Modus, kein Daten-Streaming
Leuchtet dauerhaftAdapter angeschlossen, VerseGrip im Ruhe-/Standby-Modus, kein Daten-Streaming, USB-Stromversorgung angeschlossen
orangeFlackern (Interlacing)Warnanzeige bei niedrigem Akkustand; die Benachrichtigung wird im aktuellen Zustand im Interlace-Verfahren angezeigt
Doppelblitz (Interlacing)Warnanzeige „Batterie fast leer“; die Benachrichtigung wird im aktuellen Zustand im Interlace-Verfahren angezeigt
türkisEin-/AusblendenModus zum Aktualisieren der Geräte-Firmware
(heller)Leuchtet dauerhaftDie Benutzertaste wurde gedrückt, die aktuell angezeigte Farbe leuchtet weiterhin und ist heller.
AusschaltenKeine KontrollleuchteBeenden, Ausschalten
Farbe der LadeanzeigeAnzeigemusterBeschreibung
BlauLeuchtet dauerhaftWird aufgeladen
Schnelles BlinkenAufladen fast abgeschlossen
AusschaltenKeine KontrollleuchteAufladen abgeschlossen

Status und Anzeigen früherer Versionen​

Die unten aufgeführten Anzeigestatus und Farben entsprechen den alten Statusangaben, die bei früheren Versionen des VerseGrip Stylus (Firmware 1.10 oder älter) verwendet wurden.

FarbeAnzeigemusterBeschreibung
RotLeuchtet dauerhaftWarten auf die Initialisierung der Komponenten
BlinkenStandby-Modus. Keine Datenübertragung
BlauLeuchtet dauerhaftAnfängliche Kalibrierung des automatischen Sensors (Legen Sie den VerseGrip ruhig auf den Tisch.)
GrünBlinkenAdapter angeschlossen, VerseGrip im aktiven Datenstrom-Modus
AusschaltenKeine KontrollleuchteBeenden, Ausschalten
Farbe der LadeanzeigeAnzeigemusterBeschreibung
BlauLeuchtet dauerhaftWird aufgeladen
Schnelles BlinkenAufladen fast abgeschlossen
AusschaltenKeine KontrollleuchteAufladen abgeschlossen

Beispielcode​

Im Folgenden finden Sie ein einfaches Beispiel, das zeigt, wie Sie den VerseGrip Stylus in einer C++-Umgebung verwenden können.

#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);

}
}