Aller au contenu principal

Tutoriel

Chaque tutoriel est un programme autonome qui illustre l'une des fonctionnalités d'Inverse Service. Trois variantes linguistiques sont proposées en parallèle afin de vous permettre de comparer les conventions de codage respectives et de choisir la pile technologique la mieux adaptée à votre projet :

  • Python — La façon la plus simple et la plus accessible de se lancer (websockets + json)
  • C++ (nlohmann/json) — Bibliothèque C++11 portable permettant l'analyse de JSON à l'exécution
  • C++ (Glaze) — Basé sur le C++20 moderne, utilisant la réflexion à la compilation et l'analyse sans allocation, recommandé pour les boucles tactiles en temps réel

Le code source est disponible dans deux dépôts d'exemples publics :

Chaque version d'Inverse Service se voit attribuer une balise correspondante dans deux dépôts : veuillez suivre release/<version> Branche, afin de conserver une version cohérente avec le présent document.

Conditions préalables​

  • Service Inverse
    En cours d'exécution (via Hub Haply ou Programme d'installation autonome (démarrage), le port d'écoute est 10001。
  • Au moins un appareil Haply a été détecté. Chaque tutoriel est dédié à une gamme d'appareils spécifique ; veuillez vous reporter au tableau ci-dessous.
  • Tutoriel Python:pip install websockets(Les tutoriels 04, 05, 06, 07, 08 et 09 sont encore nécessaires) keyboard, sous Linux, des droits d'administrateur sont nécessaires ; les tutoriels 08 et 09 nécessitent également requests).
  • Tutoriel C++: La variante nlohmann nécessite CMake 3.15 ou une version ultérieure, ainsi qu'un compilateur prenant en charge C++11 ; Glaze (-glz) Cette variante nécessite un compilateur prenant en charge C++20. À la racine du dépôt d'exemples, le fichier CMakeLists.txt sera récupéré via FetchContent libhv,nlohmann/json et glaze, sans avoir à configurer manuellement les dépendances.

Liste des tutoriels​

#NomÉquipementsVariantesContenu pédagogique
00Liste des équipementsAu choixPy · C++ · C++ GlazeDétection des périphériques HTTP, requête au niveau de la session
01Imprimer Inverse3Inverse3Py · C++ · C++ GlazeDiffusion en continu de l'état WebSocket, maintien de la connexion sans effort, poignée de main lors du premier message
02Imprimer VerseGripVG par câblePy · C++ · C++ GlazeDiffusion en continu des poses,probe_orientation Recherche de crèche, quaternions → angles d'Euler
03Impression sans fil VGWVGPy · C++ · C++ GlazeBoutons, piles, capteurs à effet Hall
04Bonjour FloorInverse3Py · C++ · C++ GlazePremier effet tactile — set_cursor_force Ressort de punition
05Contrôle de positionInverse3Py · C++ · C++ Glazeset_cursor_position Commandes : cibles aléatoires (C++) ou déplacement en maintenant les touches WASD enfoncées (Python)
06CombinaisonInverse3 WVGPy · C++ · C++ GlazeBoucle multi-périphériques, pilotage du curseur : conversion des quaternions en directions
07Basis et MountInverse3Py · C++ · C++ Glazeconfigure.basis,configure.preset, ainsi que lors de l'exécution configure.mount Couverture ; les commandes « preset » et « mount » sont incompatibles
08Configuration à distance via HTTPInverse3Py · C++ · C++ GlazeConfigurateur intersessionnel réservé au protocole HTTP : détection des sessions par profil (profile), via une requête POST interactive REST vers /preset/mount
09WS TélécommandeInverse3Py · C++ · C++ GlazeNavigateur d'espace de travail en temps réel : détection préalable des sessions HTTP et des appareils, puis diffusion en continu à chaque tick via WebSocket set_transform
10Événement—Py · C++ · C++ GlazeÉcoute du flux d'événements sur le port 10020, avec prise en charge du filtrage par niveau/nom

Remarque — Test de performance de la boucle tactile​

Le tutoriel n° 10 (Événements) est conçu pour pouvoir être suivi en parallèle avec n'importe quel autre tutoriel. Activer --no-hide-rate 后,它会输出服务的 system-rate-report Exemple illustrant une fréquence de tick valide pour un périphérique. En comparant les fréquences entre les différentes variantes du même tutoriel en Python / C++ (nlohmann) et en C++ (Glaze), on peut 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