fxIP : Implémentation TCP/IP, avec client IRC et serveur web !
Posté le 22/07/2021 15:35
Plus tôt dans le mois, Manawyrm nous a présenté une nouveauté impressionnante : un port d'un client TCP/IP pour sa fx-9750G II (équivalent à la Graph 35+USB). Le programme utilise un port de µIP, et s'en sert pour supporter un client IRC, et même un serveur web permettant d'accéder à une page web hébergée sur sa calculatrice !
Tenez-vous bien à vos chaises, c'est une sacrée affaire !
fxIP utilise un port de µIP (projet Github) qui est une mini-implémentation du protocole TCP/IP. µIP permet de créer et décoder des paquets IP (qui sont des messages dans le protocole d'Internet) et des paquets TCP (un protocole qui étend IP en garantissant que les messages arrivent intacts et dans le bon ordre).
La calculatrice qui exécute fxIP communique avec un ordinateur par le biais du câble 3-pin qui est connecté à un port série. La calculatrice dispose de sa propre adresse IP (attribuée par l'ordinateur), de sorte que tous les messages à destination de la calculatrice qui passent par l'ordinateur lui sont transférés. Normalement on ne peut pas utiliser le protocole TCP/IP directement sur une liaison série parce qu'on ne peut pas détecter la fin des paquets, donc fxIP envoie des messages dans le protocole SLIP qui ajoute une marqueur de paquet. Voyez le détail de la configuration réseau ici.
Notez que le driver série n'est pas disponible dans gint, donc Manawyrm et TobleMiner ont encapsulé les syscalls de communication série.
Le résultat de cet effort, c'est que la calculatrice devient un objet connecté à Internet par le biais de son ordinateur, et peut communiquer avec d'autres machines et serveurs.
On peut voir par exemple sur cette capture que la calculatrice répond au ping de l'ordinateur.
La suite évidemment c'est de programmer des applications qui accèdent au réseau. Pour ça, fxIP contient un client IRC qui se connecte automatiquement à libera.chat (le successeur de freenode déchu), ce qui en fait un véritable chat Internet sur la calculatrice !!
Les messages échangés avec le serveur IRC sont stockés dans un buffer tournant pour conserver un historique.
Et ce n'est pas tout, parce que Manawyrm a aussi profité d'avoir sa calculatrice en réseau pour en faire un serveur web et y héberger une page accessible par le public ! Vous pouvez voir une capture de la première version ci-dessous ou visiter directement le site à l'adresse http://fxip.as203478.net/ (avec presque l'uptime d'un vrai serveur professionnel ).
La calculatrice fait tourner le serveur HTTP complet et envoie la page directement à votre navigateur, l'ordinateur ne sert que comme pont pour accéder à Internet. Si vous n'êtes pas familier avec les technologies web ça peut être un peu dur à voir, mais c'est un énorme boulot qui est fait côté calculatrice !
Dans tous les cas l'exploit est impressionnant. Il ne reste plus qu'à coller une ESP8266 (petit composant électronique pouvant échanger en WiFi) dans le boîtier pour donner à fxIP la mobilité et les capacités d'un véritable objet connecté !
Conclusion
fxIP repousse les limites de la communication série/réseau sur calculatrice CASIO, en portant sur une fx-9750G II (Graph 35+USB) les protocoles fondamentaux du web, TCP et IP. En utilisant un ordinateur comme point d'accès via la liaison série, fxIP peut discuter sur des salons IRC publics et même servir de serveur web en utilisant les protocoles standard.
Bravo Manawyrm et TobleMiner pour le superbe défi technique ! o/
Il va nous falloir un peu plus de temps pour corriger ça, soit un peu patient on enverra le g1a ici quand il sera prêt. Ne t'inquiète pas on essaye de faire ça le plus vite possible, on a aussi d'autres choses à faire à côté
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire le contraire)
En attendant est-ce que tu as vérifié que tu as bien une interface série pour le câble 3-pin 2.5 mm et de quoi faire la config réseau (telle qu'expliquée pour Linux dans le README sur Github) ?
Merci beaucoup! Ca c'est un message que j'aime lire! Quand tu a fini envoie le ici mais si je repond pas envoie le moi en message privés et merci infiniment
J'ai l'impression que les détails du processus t'échappent pas mal... faire la communication par USB est possible en principe (y'a un driver dans gint) mais ce serait un changement important dans le projet. Si tu n'as pas d'expérience pour comprendre ou modifier le code, pas de SDK, pas de connexion physique appropriée et de config réseau... que j'imagine tu dois faire sous Windows... tes chances de reproduire le travail d'origine et d'héberger un site web sur ta calto sont limitées.
(Ou, dit de façon un peu plus cash : ce projet nécessite que tu comprennes ce que tu fais, sans quoi t'as aucune chance)
Edit : et au passage ça crashe sur ma 35+E II aussi (instantanément) mais je ne sais pas si c'est à cause des versions bizarres de gint avec lesquelles je bosse en ce moment
Bah là tout de suite si t'as pas le câble pour connecter le port 3-pin à ton PC et pas l'expérience pour modifier le code pour utiliser l'USB... y'a clairement un truc qui coince : faut bien connecter la calto au PC d'une façon ou d'une autre.
Pour être honnête j'attends de voir si la nature de la tâche se révèle à toi, i.e. le fait que la version publiée de fxIP doit être modifiée sérieusement pour passer par le câble, que fxIP est programmé en langage C avec des outils inhabituels (le fxSDK), et que par conséquent c'est loin d'être trivial.
Genre je sais pas si tu réalises (et je dis pas ça méchamment, c'est pas une évidence) que dans cette affaire le HTML c'est l'ameublement du troisième étage de l'immeuble et que là y'a des difficultés qu'il faut résoudre avec les fondations. Pour rappel, fxIP fait de la calculatrice un noeud du réseau via le PC auquel elle est connectée. Pour l'instant y'a pas de connexion entre la calto et le PC puisque fxIP utilise le port série et que tu n'as probablement pas de câble/port approprié sur ton PC. Pour utiliser l'USB, il faudrait modifier fxIP et sans SDK c'est pas la peine d'y penser.
Oooouh, intéressant le projet
Bon bien que html et le web m'échappent beaucoup en général, je comprends un peu l'idée
J'ai pensé à un truc similaire récemment, et je me suis demandé si ce serait possible pour la calculatrice d'accéder au wifi via l'ordi, plutôt que d'installer un composant pour le wifi, ce qui serait moins accessible
Donc, est-ce théoriquement possible ?
"Always believe in your dreams, and work hard to achieve them"
FastGeek, a very simple guy
Projet(s) terminé(s) : CRL
Projet(s) en cours :CRLII
J'ai pensé à un truc similaire récemment, et je me suis demandé si ce serait possible pour la calculatrice d'accéder au wifi via l'ordi, plutôt que d'installer un composant pour le wifi, ce qui serait moins accessible
Donc, est-ce théoriquement possible ?
C'est bien ce qui se passe ici. Ce qui ne dépend pas particulièrement de la WiFi d'ailleurs, la calto accède juste à Internet via l'ordinateur, peut importe si l'ordinateur est connecté en WiFi, en Ethernet, sur un USB ou autre chose encore.
Lephenixnoir a écrit : C'est bien ce qui se passe ici. Ce qui ne dépend pas particulièrement de la WiFi d'ailleurs, la calto accède juste à Internet via l'ordinateur, peut importe si l'ordinateur est connecté en WiFi, en Ethernet, sur un USB ou autre chose encore.
Ah d'accord, c'est plus que cool alors
Donc bientôt on aura peut-être fortnite en multi sur calto
"Always believe in your dreams, and work hard to achieve them"
FastGeek, a very simple guy
Projet(s) terminé(s) : CRL
Projet(s) en cours :CRLII
je suis sur dans le futur on auras fortnite et google sur des calculatrices a moins que c'est deja possible attender on peux mettre chat gpt en local non?
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 14/04/2024 18:49 | #
euuu il est ou le fichier je vois rien
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 18:50 | #
Tu as juste à cliquer sur ce lien : https://www.planet-casio.com/storage/forums/Fxip-197000.g1a pour télécharger le fichier directement
Il était au niveau de ce message : https://www.planet-casio.com/Fr/forums/topic16830-last-fxip-implementation-tcpip-avec-client-irc-et-serveur-web.html#197000
(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 14/04/2024 18:51 | #
Merci bon je le transfere a ma calculette et je te reponds
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 18:53 | #
aie il y a un proble avec le proble c est que ca se lance mais sa crash apres 2 secondes
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 19:03 | #
Il va nous falloir un peu plus de temps pour corriger ça, soit un peu patient on enverra le g1a ici quand il sera prêt. Ne t'inquiète pas on essaye de faire ça le plus vite possible, on a aussi d'autres choses à faire à côté
(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 14/04/2024 19:04 | #
En attendant est-ce que tu as vérifié que tu as bien une interface série pour le câble 3-pin 2.5 mm et de quoi faire la config réseau (telle qu'expliquée pour Linux dans le README sur Github) ?
Citer : Posté le 14/04/2024 19:06 | #
Merci beaucoup! Ca c'est un message que j'aime lire! Quand tu a fini envoie le ici mais si je repond pas envoie le moi en message privés et merci infiniment
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 19:07 | #
attend moi j'utilise un usb et non je n'ais pas fais la config
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 19:13 | #
J'ai l'impression que les détails du processus t'échappent pas mal... faire la communication par USB est possible en principe (y'a un driver dans gint) mais ce serait un changement important dans le projet. Si tu n'as pas d'expérience pour comprendre ou modifier le code, pas de SDK, pas de connexion physique appropriée et de config réseau... que j'imagine tu dois faire sous Windows... tes chances de reproduire le travail d'origine et d'héberger un site web sur ta calto sont limitées.
(Ou, dit de façon un peu plus cash : ce projet nécessite que tu comprennes ce que tu fais, sans quoi t'as aucune chance)
Edit : et au passage ça crashe sur ma 35+E II aussi (instantanément) mais je ne sais pas si c'est à cause des versions bizarres de gint avec lesquelles je bosse en ce moment
Citer : Posté le 14/04/2024 19:14 | #
Ah aucune chance c'est un peu radical donc je dois arreter?
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 19:15 | #
Bah là tout de suite si t'as pas le câble pour connecter le port 3-pin à ton PC et pas l'expérience pour modifier le code pour utiliser l'USB... y'a clairement un truc qui coince : faut bien connecter la calto au PC d'une façon ou d'une autre.
Citer : Posté le 14/04/2024 19:23 | #
benh j'utilise le usb et mes connaisances de programation html ,css, js et j'apprend le micropython mais c quoi un 3-pin
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 20:20 | #
update?
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 20:32 | #
Pour être honnête j'attends de voir si la nature de la tâche se révèle à toi, i.e. le fait que la version publiée de fxIP doit être modifiée sérieusement pour passer par le câble, que fxIP est programmé en langage C avec des outils inhabituels (le fxSDK), et que par conséquent c'est loin d'être trivial.
Genre je sais pas si tu réalises (et je dis pas ça méchamment, c'est pas une évidence) que dans cette affaire le HTML c'est l'ameublement du troisième étage de l'immeuble et que là y'a des difficultés qu'il faut résoudre avec les fondations. Pour rappel, fxIP fait de la calculatrice un noeud du réseau via le PC auquel elle est connectée. Pour l'instant y'a pas de connexion entre la calto et le PC puisque fxIP utilise le port série et que tu n'as probablement pas de câble/port approprié sur ton PC. Pour utiliser l'USB, il faudrait modifier fxIP et sans SDK c'est pas la peine d'y penser.
Donc je comprends pas où tu vas...
Citer : Posté le 14/04/2024 20:40 | #
Oooouh, intéressant le projet
Bon bien que html et le web m'échappent beaucoup en général, je comprends un peu l'idée
J'ai pensé à un truc similaire récemment, et je me suis demandé si ce serait possible pour la calculatrice d'accéder au wifi via l'ordi, plutôt que d'installer un composant pour le wifi, ce qui serait moins accessible
Donc, est-ce théoriquement possible ?
FastGeek, a very simple guy
Projet(s) terminé(s) : CRL
Projet(s) en cours :CRLII
Citer : Posté le 14/04/2024 20:44 | #
Bon bah je crois que je vais abondoner au moins j'aurais essayé...
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 20:50 | #
Donc, est-ce théoriquement possible ?
C'est bien ce qui se passe ici. Ce qui ne dépend pas particulièrement de la WiFi d'ailleurs, la calto accède juste à Internet via l'ordinateur, peut importe si l'ordinateur est connecté en WiFi, en Ethernet, sur un USB ou autre chose encore.
Citer : Posté le 14/04/2024 20:53 | #
j'espere que un jour ou je serais plus avance je reussirai a le faire
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 20:59 | #
C'est bien ce qui se passe ici. Ce qui ne dépend pas particulièrement de la WiFi d'ailleurs, la calto accède juste à Internet via l'ordinateur, peut importe si l'ordinateur est connecté en WiFi, en Ethernet, sur un USB ou autre chose encore.
Ah d'accord, c'est plus que cool alors
Donc bientôt on aura peut-être fortnite en multi sur calto
FastGeek, a very simple guy
Projet(s) terminé(s) : CRL
Projet(s) en cours :CRLII
Citer : Posté le 14/04/2024 21:18 | #
xD
je suis sur dans le futur on auras fortnite et google sur des calculatrices a moins que c'est deja possible attender on peux mettre chat gpt en local non?
https://discord.gg/HsyCrYRQdE
Citer : Posté le 14/04/2024 21:23 | #
et aussi quand j'y pense j'au juste a acheter un port 3 pin non? et ca va marcher????
https://discord.gg/HsyCrYRQdE