Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » teaser usb -- utiliser une calto comme écran pour son PC
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

teaser usb -- utiliser une calto comme écran pour son PC

Posté le 26/03/2023 23:08

C'est une démo de mon nouveau driver USB dans gint 2.10 : des caltos comme écrans virtuels !


La Graph 90+E et la fx-CG 50 sur cette photo se comportent comme des écrans auxiliaires, on peut y glisser la souris, des fenêtres, etc. On peut aussi contrôler le PC en utilisant le clavier de la calto.

Niveau implémentation, j'ai créé deux écrans virtuels dans sway (mon gestionnaire de bureau), que j'expose avec un serveur VNC. Ensuite un client VNC (dont le code est à gauche sur la photo et ici sur le dépôt) récupère les images, qu'il transfère aux calculatrices en utilisant la libfxlink (nouvellement disponible avec le fxSDK 2.10).

Sur la calto, un add-in assez simple (dont le code source est ici sur le dépôt) récupère les images et renvoie des mises à jour sur l'état du clavier, lequel est relayé au serveur VNC.

Petite vidéo explicative avec les visuels juteux (en anglais mais il y a les sous-titres) :


Et voilà, enjoy!

Sources et instructions d'utilisation : Dépôt Gitea Lephenixnoir/cg-virtual-monitor


Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 26/03/2023 23:11 | #


Omgg incroyable :o :o :o
C'est fucking propre wow, je sens que ça va m'aider dans mes projets ça éhé
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 26/03/2023 23:15 | #


J'ai fait ça "plutôt bien", dans le sens où c'est reproductible (le temps que j'ajoute toutes les instructions) et les programmes sont pas écrits complètement à l'arrache. J'ai testé que ça freeze/crashe pas quand on débranche une calto, couple le client VNC, etc. Bon courage si ça t'aide. Effectivement pour ton histoire de N64 perso j'avais pas pensé jusqu'ici à faire une capture vidéo via un serveur VNC. Je sais pas trop si c'est efficace par contre, là je me suis pas posé la question parce que mon PC il en a vu des pires (c'est du 396x224 lol !) mais sur ton Pi faudra voir.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 27/03/2023 02:19 | #


Juste incroyable ! Je tire mon chapeau !
"La créativité est contagieuse faites la tourner"
Albert Einstein
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 27/03/2023 11:30 | #


C'est vraiment un superbe développement, comme dit rapidement hier dans la shout.
Bravo Lephé, c'est du super boulot.

On peut penser à vraiment beaucoup de choses qui pourraient profiter de cette possibilité de communiquer efficacement entre la calculatrice et le PC:
- Effectivement "déporter" l'écran, soit du PC vers la machine, ou inversement et pourquoi pas jouer à Rogue Life en upscaled sur le PC (fxlink pourrait alors chopper l'image et l'upscaler au vol (note que je réfléchi à ça aussi pour la capture de la cible fxascg.
- Utiliser le PC comme un mode serveur, pour du multijoueur
- Pourquoi pas utiliser le PC comme une ressource externe de calcul si disponible (je sais ça sert à rien, mais c'est marrant comme concept ) : la machine regarde si elle est connectée, et si oui elle sous-traite des calculs au PC pour alléger sa charge
- ultimement une connexion avec GDB (je sais que tu en rêves aussi Lephé )
...
et certainement encore plein d'autres trucs sympa auxquels on ne pense pas encore.

Je suis vraiment impressionné (et teasé), bravo à toi.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 28/03/2023 00:17 | #


Merci ! Oui il y a pas mal d'options si on est assez inventif. J'ai mis à jour le post principal avec les explications et une vidéo que j'ai enregistrée ce soir. La mise à jour de gint devrait arriver demain, comme ça vous pourrez vous lancer dans tous les projets en question !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tituya Hors ligne Administrateur Points: 2156 Défis: 26 Message

Citer : Posté le 28/03/2023 02:03 | #


J'ai pu mettre en place le serveur sur mon PC sans trop de problèmes :
- TigerVNC
x0vncserver -rfbauth ~/.vnc/passwd -rfbport 5910 -Geometry 394x224+0+150 pour lancer le serveur

C'est tout simplement magnifique et très fluide. C'est là qu'on se rend compte que l'écran de la 90+E est vraiment pas mal et que son potentiel est fou. Je n'ai pas pu m'empêcher de mettre une vidéo YouTube dessus, regardez moi ce résultat (la vidéo est en non-répertoriée) :


Et rien que pour ça, franchement merci !

C'est très impressionnant, même si je n'ai pas beaucoup d'utilité en tête (si ce n'est un rpi branché en USB, histoire de profiter de l'écran de la calculatrice @Potter360 )
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire le contraire)
Projet en cours : Adoranda

Mes programmes
Hésite pas à faire un test !


Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 28/03/2023 08:02 | #


Merci ! Est-ce que x0vncserver te crée un nouvel écran ou utilise juste un coin de l'original ?

Pendant que j'y suis est-ce que je peux lier ta vidéo dans le README ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 28/03/2023 08:57 | #


Moi j'ai pensé à une d'autres utilisations possibles :
- se servir de sa CG50 comme d'un streamdeck pour OBS par exemple, pour ceux qui font des vidéos.
- ou comme un pavé numérique externe pour ceux qui sont sur portable sans pavé numérique
- ou bien comme mini écran de status/sensors monitor

Franchement on va trouver plein d'idées.

Effectivement couplé à un Pi, ca peut être vraiment génial aussi.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Tituya Hors ligne Administrateur Points: 2156 Défis: 26 Message

Citer : Posté le 28/03/2023 16:02 | #


Au final voici les étapes que j'ai suivie :
git clone https://gitea.planet-casio.com/Lephenixnoir/cg-virtual-monitor
sudo pacman -S libvncserver
sudo pacman -S tigervnc

cd cg-virtual-monitor/vnc-client
cmake -B build
make -C build
cd ../cgvm-addin
fxsdk build-cg -s

vncpasswd
x0vncserver -rfbport 5910 -rfbauth ~/.vnc/passwd -Geometry 396x224+{offset_x}+{offset_y}

# Dans un autre terminal
./cgvm_vnc --calc


x0vncserver utilise une partie de l'écran principal ($DISPLAY), le -Geometry permet de spécifier l'offset par rapport au haut gauche de l'écran.
Je suis en train de regarder pour utiliser Xvnc à la place, j'arrive à correctement lancer le serveur mais je n'ai aucune idée de comment y afficher des choses
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire le contraire)
Projet en cours : Adoranda

Mes programmes
Hésite pas à faire un test !


Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 26/08/2024 13:43 | #


J'ai reçu plusieurs demandes (dans les commentaires de la vidéo YouTube) pour faire marcher ça sous Windows.

Je me suis donc attaqué au problème, en m'inspirant énormément de Cahute, qui est déjà compatible avec Windows (merci Cake !). J'ai donc installé une VM Windows 10, fait un build minimal du fxSDK pour Windows, et commencé à jouer avec libusb.

Pour l'instant j'arrive à faire en sorte que ma calculatrice soit détectée par libusb, mais fxlink ne la détecte pas encore. Je vais debugger ça.

Cette petite excursion va probablement permettre un support futur de Windows pour fxlink, ce qui devrait en particulier permettre de prendre des captures d'écran et vidéo pour les utilisateurs Windows.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 26/08/2024 18:48 | # | Fichier joint


Good news, ça arrive...


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 26/08/2024 22:56 | # | Fichier joint


Bon, j'arrive pas à avoir un écran virtuel sur ma VM. Je crois que VirtualBox joue un rôle dans le problème mais je suis pas sûr.

J'arrive par contre à sortir du VNC (après avoir trouvé qu'il faut désactiver l'accélération matérielle dans la VM) et à transmettre un seul frame à la calculatrice. Ensuite, ça freeze, je sais pas trop pourquoi. C'est un début on va dire.


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 26/08/2024 23:35 | #


Note avant d'aller dormir : j'ai réussi à avoir un écran virtuel de 396x224 en plus de l'écran normal sous Windows mais ça rend VirtualBox super confus que la fenêtre avec laquelle je travaille soit pas de la taille du bureau Windows donc ça désync la position de ma souris et de celle de Windows c'est quasi-inutilisable ;_;
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 27/08/2024 15:17 | #


Problèmes résolus, en désactivant l'intégration de la souris VirtualBox se plante plus (c'est juste que du coup le curseur Windows et Linux sont pas unifiés, mais c'est pas grave), et j'ai amélioré la situation avec l'écran 396x224.

Du coup, le système marche presque parfaitement chez moi, à part que :
  • Sur la calto y'a plein de bandes noires passagères quand je bouge des trucs sur le PC (je soupçonne que ça envoie trop de frames et que la calto arrive pas à suivre)
  • Pour que le VNC marche j'ai du couper l'accélération matérielle dans VirtualBox, donc Windows rame un peu (pas de solution je crois)
  • Le processus pour arriver là est un peu long, donc le tutoriel sera un peu long aussi

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 27/08/2024 15:22 | #


J'ai dû modifier pas mal de choses dans les systèmes de build, désactivé les couleurs de terminal, ce genre de conneries, mais le seul changement de code que j'ai dû faire est dans fxlink. J'utilise l'API "avancée" de libusb pour détecter la connexion et la déconnexion des périphériques en temps réel. Mais cette API n'est pas supportée sur Windows, donc j'ai dû faire en sorte que ça détecte au moins les périphériques connectés quand on lance le programme.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 27/08/2024 15:31 | #


Ça semble assez portable alors tout ça . J'attends de voir si un jour le fxsdk conquerrait AmigaOS et windows comme cahute il y a quelque temps ...
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 27/08/2024 16:01 | #


Noooope.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 11/09/2024 21:51 | #


Je crois pas l'avoir annoncé mais j'ai fini le tutoriel texte pour Windows il y a un petit moment :
https://git.planet-casio.com/Lephenixnoir/cg-virtual-monitor

J'ai enregistré les manips' pour pouvoir faire une vidéo mais je ne pense pas que ça arrive de sitôt, j'ai trop de trucs dans l'immédiat.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 118 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd