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) :
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.
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 ...
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 !
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)
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 ...
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)
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.
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.
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 ;_;
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
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.
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
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é
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.
Citer : Posté le 27/03/2023 02:19 | #
Juste incroyable ! Je tire mon chapeau !
Albert Einstein
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.
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 !
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 )
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
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 ?
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.
Citer : Posté le 28/03/2023 16:02 | #
Au final voici les étapes que j'ai suivie :
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
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
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.
Citer : Posté le 26/08/2024 18:48 | # | Fichier joint
Good news, ça arrive...
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.
Citer : Posté le 26/08/2024 22:58 | #
En tout cas ça a l'air super cool ce que nous prépare
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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 ;_;
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 :
Citer : Posté le 27/08/2024 15:20 | #
Je suis impatient de voir ça alors
Tu n'as même pas eu à modifier le code ?
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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.
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 ...
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 27/08/2024 16:01 | #
Noooope.
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.