Skip to main content
Version : 3.5.x

Tutoriels

Chaque tutoriel est un programme autonome qui illustre l'une des fonctionnalités d'Inverse Service. Trois variantes de langage sont fournies simultanément afin que vous puissiez comparer les syntaxes et choisir la pile la mieux adaptée à votre projet :

  • Python — le point d'entrée le plus court et le plus simple (websockets + json)
  • C++ (nlohmann/json) — C++11 portable, JSON analysé à l'exécution
  • C++ (Glaze) — C++20 moderne avec réflexion à la compilation et analyse syntaxique sans allocation de mémoire, recommandé pour les boucles haptiques en temps réel

Le code source est publié dans deux dépôts publics contenant des exemples :

  • Exemples de code C++ pour l'inversion haply — un répertoire par tutoriel, contenant à la fois les variantes nlohmann/json (C++11) et Glaze (C++20). Les cibles de compilation ont un -glz suffixe pour la variante Glaze.
  • haply — un répertoire par tutoriel.

À chaque nouvelle version du service Inverse, une balise correspondante est ajoutée aux deux dépôts : suivez les release/<version> branche afin de rester sur la version correspondant à cette documentation.

Conditions préalables

  • Les Service Inverse
    est en cours d'exécution (soit via le Hub Haply ou le programme d'installation autonome) sur le port 10001.
  • Au moins un Haply a été détecté. Chaque tutoriel est destiné à une gamme d'appareils spécifique — voir le tableau ci-dessous.
  • Tutoriels Python: pip install websockets (les tutoriels 04, 05, 06 et 07 nécessitent en outre keyboard(ce qui nécessite des privilèges élevés sous Linux).
  • Tutoriels C++: CMake 3.15 ou une version ultérieure et un compilateur C++11 pour les variantes nlohmann, C++20 pour Glaze (-glz) variantes. Le répertoire de niveau supérieur du dépôt d'exemple CMakeLists.txt récupère libhv, nlohmann/jsonet glaze via FetchContent — aucune configuration manuelle des dépendances.

Liste des tutoriels

#NomDispositifsVariantesCe que vous apprendrez
00Liste des appareilsN'importe quelPy · C++ · C++ GlazeDétection des périphériques via HTTP, requêtes limitées à la session
01Imprimer Inverse3Inverse3Py · C++ · C++ GlazeDiffusion en continu de l'état WebSocket, maintien de connexion sans effort, établissement de la connexion au premier message
02Imprimer VerseGripWired VGPy · C++ · C++ GlazeRépartition par niveau, probe_orientation keepalive, quaternion → Euler
03Imprimer sans fil VGWVGPy · C++ · C++ GlazeBoutons, pile, capteur à effet Hall
04Bonjour FloorInverse3Py · C++ · C++ GlazePremier effet haptique — set_cursor_force ressort de pénalité
05Contrôle de positionInverse3Py · C++ · C++ Glazeset_cursor_position commandes, cibles aléatoires (C++) ou déplacement par maintien des touches WASD (Python)
06CombinéInverse3 WVGPy · C++ · C++ GlazeBoucle multi-appareils, pilotage du curseur par conversion de quaternion en direction
07Socle et supportInverse3Py · C++ · C++ Glazeconfigure.basis, configure.preset, et le temps d'exécution configure.mount Remplacements ; exclusion mutuelle entre le préréglage et le montage
08Configuration à distance (bientôt disponible)N'importe quelPyConfiguration à distance des appareils via HTTP ; détection des sessions par profil
10EvénementsPy · C++ · C++ GlazeÉcouteur de flux d'événements sur le port 10020, filtrage par niveau/nom

Conseil — Évaluez la boucle haptique

Le tutoriel 10 (Événements) est conçu pour être suivi en parallèle de n'importe quel autre tutoriel. Avec --no-hide-rate s'il est activé, il affiche le system-rate-report événement, qui inclut la fréquence de tick effective du dispositif. Comparez cette fréquence entre les versions Python, C++ (nlohmann) et C++ (Glaze) du même tutoriel afin d'observer l'impact de la surcharge liée à la sérialisation sur une boucle de contrôle d'environ 4 kHz.

# Terminal 1 — pick a tutorial variant
./04-haply-inverse-hello-floor # C++ nlohmann
./04-haply-inverse-hello-floor-glz # C++ Glaze
python 04-haply-inverse-hello-floor.py # Python

# Terminal 2 — watch the rate
./10-haply-inverse-events --no-hide-rate