Zum Hauptinhalt springen

Schnellstart: VerseGrip Eingabestift

VerseGrips erweitern den Inverse3 um eine Orientierungsfunktion. In diesem Artikel werden die Einrichtung des VerseGrip Stylus und seine Funktionen beschrieben.

Der VerseGrip-Stift

Der VerseGrip Stylus Inverse3 nutzt modernste, proprietäre drahtlose Hochgeschwindigkeits-Kommunikationstechnologie, um Orientierung und E/A direkt in der Hand zu ermöglichen. Er setzt neue Maßstäbe für unübertroffene Vielseitigkeit in diesem Bereich.

Einige der unglaublichen Funktionen, die wir für Sie entwickelt haben:

  • 2 Tasten zur Benutzereingabe,
  • 1 Kalibrierungstaste,
  • 1 Netz-/Standby-Taste und
  • 2 RGB-LED-Anzeigeleuchten
  • 10-12 Stunden Akkulaufzeit
  • USB-c-Anschluss zum Aufladen
  • Drahtlose Kommunikationsgeschwindigkeit bis zu 1 KHz
  • Bis zu 8 VerseGrip Stylus können mit einem Dongle an einem einzigen Band gekoppelt werden

Der VerseGrip Stylus hat sieben Hauptmerkmale an der Außenseite: (1) Der Kugelanschluss, der in den Inverse3 Gimbal passt, (2) und (3) Eingabetasten, (4) USB-C-Ladeanschluss, (5) Kalibrierungstaste, (6) Status-LEDs und (7) eine Einschalttaste.

Kundenbetreuung

Sollten Sie jemals Fragen oder Bedenken zu Ihrem Gerät und dessen Verwendung haben, zögern Sie nicht, uns zu kontaktieren. Wir helfen Ihnen gerne, Ihre Fragen zu beantworten. Der VerseGrip Stylus ist ein funktionsfähiges Gerät mit komplexer und geschützter drahtloser Technologie im Inneren. Jeder Versuch, das Gerät zu öffnen, führt nicht nur zum Erlöschen der Garantie, sondern kann das Gerät sehr schnell unbrauchbar machen. Um langwierige Versand- und kostspielige Reparaturprozesse zu vermeiden, versuchen Sie NICHT, das Gerät zu öffnen.

VerseGrip-Stift - Einrichtung und Kalibrierung

In diesem Abschnitt werden die Schritte des Anschließens des Dongles, des Einschaltens des VerseGrip Stylus und der Kalibrierung beschrieben.

Einrichten

  • Stecken Sie den Dongle in eine USB-Buchse an Ihrem Computer.
  • Legen Sie den Griff auf eine ebene Fläche, auf der er sich nicht bewegen kann, wobei die Tasten nach oben und der Kugelstecker auf den Bildschirm gerichtet sein müssen.

Einschalten und Kalibrierung

  • Drücken Sie einmal die Einschalttaste. Die Statusleuchte wird rot und wechselt dann zu blau. Blau zeigt an, dass die IMU im Gerät eine Selbstkalibrierung durchläuft.
  • Nach der Selbstkalibrierung blinkt die Statusleuchte alle 0,5 Sekunden einmal rot. Dies ist der Standby-Modus.
  • Drücken Sie eine beliebige Taste, um das Gerät aus dem Standby-Modus aufzuwecken. Die Statusanzeige blinkt grün, während das Gerät hochfährt, und leuchtet dann dauerhaft grün. Das Gerät überträgt nun Daten an das WLAN.
  • Bei niedrigem Batteriestand schaltet sich der VerseGrip Stylus alle 2 Minuten aus. Bitte laden Sie ihn dann sofort wieder auf.

Rekalibrierung

  • Zur Neukalibrierung halten Sie die Kalibrierungstaste drei Sekunden lang gedrückt, oder bis Sie sehen, dass sich die Ausrichtung in Ihrer Simulation verschoben hat.

Standby und Ausschalten

  • Drücken Sie die Netztaste erneut, um in den Standby-Modus zurückzukehren. Die Statusleuchte leuchtet rot und blinkt alle 2 Sekunden, und die Datenübertragung wird beendet.
  • Um den VerseGrip Stylus auszuschalten, halten Sie die Einschalttaste 5 Sekunden lang gedrückt und lassen Sie sie dann los. Wenn Sie loslassen, sollte die Statusleuchte erlöschen und es werden keine Anzeigen mehr angezeigt. Es werden keine Daten mehr übertragen.

Aufladen

  • Schließen Sie den VerseGrip Stylus über die USB-C-Ladebuchse an den Strom an.
  • Die Ladelampe leuchtet blau, wenn das Gerät an das Stromnetz angeschlossen ist, und bei voller Ladung blinkt sie schnell blau. Wenn Sie das Gerät an das Stromnetz anschließen, startet es und geht in den Standby-Modus.

WARNUNG: Lassen Sie die Batterie nicht leerlaufen! Sie kann sonst ihre Ladung nicht aufrechterhalten. Sollte dies geschehen, funktioniert der VerseGrip Stylus trotzdem, solange er eingesteckt bleibt.

Zustände und Lichtindikatoren

Status Lichtfarbe und VerhaltenStaat
Rot, einfarbigAnstehende Initialisierung von Komponenten
Blau, einfarbigDie IMU im Griff wird selbst kalibriert
Rot, blinkt alle 2 SekundenStandby-Modus. Keine Datenübertragung.
Grün, blinkt alle 2 SekundenNormaler Modus, automatische Übertragung von Daten an den Funk.
Kein Licht, keine AnzeigeDer Strom ist ausgeschaltet.
Farbe der LadekontrollleuchteStaat
Blau, einfarbigAufladen
Blau, schnell blinkendDies zeigt an, dass das Gerät vollständig aufgeladen ist.
Kein Licht, keine AnzeigeDas Gerät wird nicht geladen

Beispiel-Code

Hier ist ein einfaches Beispiel für die Verwendung des 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;
}