[RESOLU] Lire un appareil USB

Mammouth du PHP | 881 Messages

17 juin 2022, 04:06

Bonjour à tous,

il y a bien longtemps que je cherche une solution au problème suivant et j'ose espérer que les nouvelles fonctionnalités HTML5 et cie me permettront de faire aboutir mon projet.

C'est du javascript, code trouvé sur internet est emprunté afin de faire un pas de plus

Code : Tout sélectionner

alert("Voici la ligne de 98"); navigator.usb.getDevices() .then(devices => { console.log("Total devices: " + devices.length); devices.forEach(device => { console.log("Product name: " + device.productName + ", serial number " + device.serialNumber); alert("Product name: " + device.productName + ", serial number " + device.serialNumber); }); }); alert("Y sommes-nous enfin ? ");
Avec Chromium, les deux alertes (première et dernière) sont affichées.
Avec Firefox, seule la première est affichée. J'ai lu que les choix de programmation de l'équipe Firefox avait jugé trop périlleux ce type de code.

J'aimerais comprendre pourquoi, je ne vois jamais l'alerte du centre, celle qui m'intéresse le plus: la liste des appareils connectés.
En console locale, lsusb me retourne

Code : Tout sélectionner

Bus 002 Device 011: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Je m'attendrais donc à voir cet appareil être affiché


Plus haut dans mon code j'ai des commandes sous le thème de mediaDevices qui repèrent très bien la caméra et les choses habituelles des vidéo-conférences.

Pour ma part, je veux lire des montres spécialisées en plongée subaquatique (ordinateurs de plongée).
Je veux que les usagers de mon site puissent permettre à mon site de lire leur ordinateur de plongée pour en faire un enregistrement dans leur dossier.

Merci de votre aide.
Soyez artisans de paix

Mammouth du PHP | 1967 Messages

17 juin 2022, 10:50

Que vois tu dans la console ?
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 juin 2022, 11:14

USB.getDevices() est une fonctionnalité expérimentale qui ne fonctionne que sur Chrome, Edge et Opéra (car ils sont sur la même base Chromium) :
https://developer.mozilla.org/en-US/doc ... getDevices

N'hésite pas à aller dans la console js de ton navigateur pour faciliter le debugage: Ctrl+Maj+i puis onglet Console
Tu aurais probablement vu que si ton alert() du centre ne renvoie rien, c'est parce que ton code détecte 0 périphériques USB.
Sur Chrome tu as aussi la page about://device-log pour voir les périphériques connectés, ça peut aider :)

Ma dernière recommandation serait que tu suives (et reproduise) ce tuto pas à pas car il est très complet et instructif : https://web.dev/usb/
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 881 Messages

17 juin 2022, 13:40

Merci @rthur ... c'est bien un tuto de ce type qu'il me faut.

Pour répondre aux autres questions: il n'y rien en console et c'est pourquoi j'écrivis cette question. Pourquoi n'y a-t-il rien de détecté ?

Avec le tuto https://web.dev/usb/ j'espère avancer dans mon projet.
Je passe en « résolu » car c'est ce genre d'outil que je cherchais.

Merci.
Soyez artisans de paix

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 juin 2022, 14:09

Merci @rthur ... c'est bien un tuto de ce type qu'il me faut.

Pour répondre aux autres questions: il n'y rien en console et c'est pourquoi j'écrivis cette question. Pourquoi n'y a-t-il rien de détecté ?
J'ai testé ton code car il me semblait correct, et je confirme qu'il y a bien quelque chose qui s'inscrit : "Total devices: 0"
Qui indique le navigateur ne renvoie aucun device.

C'est probablement car il te manque un ou plusieurs critères de sécurité mentionnés dans le tuto (https, user gesture...)
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 1967 Messages

17 juin 2022, 15:17

Par curiosité quelle est l'ordinateur que tu cherche à connecter ?
Je sais qu'ils ont tous un protocole diffèrent et peu transparent. certains nécessite du retroengineering pour décoder toute les infos des plongées
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 881 Messages

13 sept. 2022, 17:34

Spols,

je ne veux pas me casser la tête sur les spécificités des ordinateurs de plongée, je me fie - en cela - à scubasurface qui offre tout le code nécessaire sur github. Lorsque j'aurai surmonté mon obstacle de lecture USB, je traiterai le connexion avec ces outils déjà performants. Ils fonctionnent bien en console Linux, sont adaptés aussi à Windows et Mac. Ne me reste qu'à faire la jonction web - console

Et oui - Spols - les compagnie d'équipement subaquatique sont loin - très loin - du monde OpenSource et jalouses de leurs codes.
Soyez artisans de paix

Mammouth du PHP | 881 Messages

14 sept. 2022, 14:37

Afin d'aider quiconque voudrait commencer en ce domaine, voici mes sources et commentaires:

Conditions :
- Pour l'instant (octobre 2022), l'accès à des appareils USB n'est possible que dans la famille Chromium.
- Aussi, cet accès n'est possible que via une navigation sous certificat ( https )

Références:
- pour créer des certificats et naviguer en HTTPS sur serveur de développement (en local):
https://deliciousbrains.com/ssl-certifi ... velopment/ (tout est là; pour Win, Mac, Linux)

- pour accéder à des appareils USB, les repérer à l'ouverture de la page ou lors de connexion / déconnexion :
https://web.dev/usb/ c'est là aussi un site complet avec explications et exemple
Soyez artisans de paix