J'espère que vous allez bien et que vous prenez soin de vos tulipes. Je vous présente aujourd'hui un projet qui m'a beaucoup tenu à coeur et que j'ai mis quelques mois à faire

Rapidement, INTERNETCE est une "librairie C" qui permet à vos programmes de récupérer le contenu présent à n'importe quelle adresse HTTP (de votre propre site web, à google en passant par l'adresse d'une image PNG).
Il est de plus nécessaire d'acheter un câble mini USB vers USB. Ce n'est pas cher (~3€ utilisable pour n'importe quel projet utilisant le port USB, pas que INTERNETCE) mais il faut être un minimum motivé.

Internet sur calculatrice ? Comment ça marche ?
Expliquons un peu comment ça fonctionne :
Comme vous le savez, les CE ont un port mini USB. Ce port mini USB sert entre autre à connecter la calculatrice à un ordinateur, ou à un clavier USB. Et si on le connectait à un smartphone et qu'on y activait le partage de connexion USB ? Oui, c'est tout. Ça a l'air simple, hein ?
Vous l'aurez compris, le programme tire parti de la fonctionnalité de partage de connexion USB qui est gérée par tous les smartphones un minimum récents. Si vous ne savez pas utiliser cette fonctionnalité largement méconnue et sous-côtée, ne paniquez pas : j'explique comment faire plus bas.
Et plus précisément, qu'est-ce ça permet de faire ?
De plus, depuis le début je mets des guillemets à "Librairie C". Ne vous inquiétez pas, c'est volontaire et j'explique peu après pourquoi j'en mets.
Concrètement, INTERNETCE est donc une "librairie C" : Vous installez la librairie comme décrit plus bas, et vous pouvez utiliser les fonctions qu'elle met à disposition dans votre projet ! Voici un aperçu clair de la portée de la librairie :
- Ce que la librairie fait : Récupérer le contenu d'une page web de type
http://
. Pour ceux qui s'y connaissent, elle permet d'exécuter des requêtes HTTP de type GET ou POST, et stocke ensuite le résultat téléchargé dans la mémoire (sans interpréter le contenu).
Pour ceux qui s'y connaissent encore plus, elle donne aussi la possibilité de d'allouer et d'écouter des ports, d'envoyer des messages TCP et UDP etc. Il est donc possible de gérer d'autres protocoles que ceux de base à savoir FTP, IRC, SSH, etc. - Ce que ne fait pas la librairie : Afficher une page web (interpréter le HTML), une image. Les seuls protocoles de la couche application que le lib gère est HTTP1.1 et DNS (ainsi que DHCP mais de manière transparente pour l'utilisateur).
Pour les plus curieux, voici un aperçu de toutes les fonctions mises à disposition dans INTERNETCE :
Show/Hide spoilerAfficher/Masquer le spoiler
web_Cleanup
web_HTTPGet
web_HTTPPost
web_UnlockData
web_LockData
web_SendDNSRequest
web_ScheduleDNSRequest
web_SendTCPSegment
web_PushTCPSegment
web_PushUDPDatagram
web_PushIPv4Packet
web_SendARPQuery
web_PushEthernetFrame
web_PushRNDISPacket
web_SendRNDISPacket
web_getMyIPAddr
web_Connected
web_WaitForEvents
web_RequestPort
web_ListenPort
web_UnlistenPort
web_pushMessage
web_popMessage
it ain't much but it's honest work
Installation
Maintenant qu'on a vu qu'est-ce que ça fait, on va voir comment l'utiliser !
- La toolchain (version 10.2 conseillée)
En effet, le code de INTERNETCE ayant été fait avec cette version de la toolchain, vous devrez avoir la même version (ou une version supérieure). L'installation est assez simple et vous trouverez des explications ici. - USBDRVCE
USBDRVCE est une Lib C qui permet d'utiliser le port USB de la calculatrice. USBDRVCE n'est pas encore proposé par défaut avec la toolchain. Vous devez donc l'intégrer vous-même à votre toolchain. Pour cela :- Téléchargez usbdrvce.h et mettez le dans le dossier
include/
de votre toolchain - Téléchargez le fichier usbdrvce.lib et mettez-le dans le dossier
lib/libload/
- Téléchargez usbdrvce.8xv et transférez-le sur votre calculatrice.
- Téléchargez usbdrvce.h et mettez le dans le dossier
Une fois que vous avez installé USBDRVCE, on va passer à l'installation de INTERNETCE. Mais avant ça, pourquoi ai-je mis des guillemets à chaque fois que j'ai employé les termes "Librairie C" ?
En fait, INTERNETCE n'est pas à proprement parler une librairie C, mais plutôt une extension de projet : le code de la librairie ne sera non pas dans une appvar en .8xv, mais directement dans votre programme .8xp.
Vous l'aurez compris, c'est un peu moins pratique que si c'était une véritable librairie. Seulement, je n'ai pas encore trouvé le moyen de transformer mon programme C en LibC. Peut-être pour une prochaine version ? Dans tous les cas, ne vous inquiétez pas : une fois l'installation terminée, il n'y a pas de différence avec une vraie lib : il suffit d'inclure le .h et d'appeler les fonctions de la même manière.
Mais revenons à nos moutons : voici comment installer INTERNETCE :
- Dans un premier temps, téléchargez le fichier internet.h et mettez le dans le dossier
include/
de votre toolchain (à faire qu'une seule fois pour tous vos projets donc). - Ensuite, créez un projet dans votre toolchain, avec un dossier
src/
etinclude/
et avec le Makefile habituel. - Puis, téléchargez internet.c et utils.asm et mettez les 2 fichiers dans le dossier
src/
de votre projet. - Téléchargez internetstatic.h et mettez le dans le dossier
include/
de votre projet. - Enfin, comme pour n'importe quel autre projet, créez un fichier dans le dossier
src/
avec votre fonctionmain()
en mettant comme include#include <internet.h>
- Il ne reste plus qu'à faire
make
et à transférer à votre calculatrice !
Comment faire pour utiliser la lib ? Y a-t-il une documentation quelque part ?
Pour apprendre à utiliser la lib il y a deux grands moyens :
- S'inspirer des exemples dans le dossier
tests/
du projet github. - Parcourir le fichier
internet.h
où le fonctionnement de toutes les fonctions est soigneusement expliqué.
internet.h

Pour vous mâcher le travail, voici le code minimal pour utiliser la "lib" :
- Code: Select all
#include <internet.h>
int main(void)
{
web_Init();
while(!web_Connected())
web_WaitForEvents();
// Do whatever you want
web_Cleanup();
return 0;
}
Si avec ça vous n'arrivez pas à faire vos propres programmes, je ne sais pas ce que je peux faire

Une fois que mon programme est sur la calculatrice, comment faire ?
Eh bien c'est simple Jamy ! D'abord, assurez-vous que votre calculatrice et votre téléphone sont chargés à plus de 75% (ça fonctionne mieux). Ensuite, il suffit de brancher la calculatrice à votre téléphone, d'exécuter le programme, puis d'activer le partage de connexion USB dans :
Paramètres -> Réseaux et Internet -> Point d'accès et partage de connexion -> Partage via USB
Les noms des menus peuvent varier mais dans l'idée voilà comment on active le partage USB !
Et alors là, la question que tout le monde se pose c'est : comment brancher la calculatrice à mon téléphone ?
Pour cela, et c'est le principal désavantage du port mini USB des calculatrices CE, il n'existe pas de câble simple permettant de relier directement la calculatrice à son téléphone. A part si vous avez une armoire bien fournie, il vous faudra donc faire une petite dépense pour pouvoir brancher votre calculatrice à une clé USB, à une souris USB, à un clavier USB ou, dans notre cas, à votre téléphone.
Pour résumer, il faudrait un câble avec du Mini USB Type A d'un côté et du micro USB ou USB-C (ça dépend de votre portable) de l'autre.
Au lieu d'essayer de chercher un câble qui répond à ces spécifications, il vaut mieux faire une combinaison de 2 câbles. Un exemple de combinaison que je peux vous conseiller est d'utiliser :
- Votre chargeur d'un côté
- Cet adaptateur là de l'autre, disponible sur AliExpress. ATTENTION à bien choisir le câble Mini A dans la section Couleur.

Et maintenant ?
Vous l'aurez remarqué, cette "librairie" ne s'adresse pas à n'importe qui, mais davantage aux passionnés et aux curieux. C'est avant tout une petite prouesse technologique (c'est plus difficile que seulement utiliser le partage de connexion USB !), et un défi que je m'étais lancé dès que j'ai eu ma 83-PCE. J'espère quand même que cela intéressera quelques uns d'entre vous. Et puis, pourquoi pas...
- faire un client IRC ?
- utiliser la lib dans un jeu pour faire un classement mondial des meilleurs scores ?
- faire un navigateur web simpliste qui enlèverait juste les balises HTML ?
- et bien plus ?

Pour ce qui est du projet en lui-même, il reste quelques trucs qui permettraient de rendre la lib encore meilleure, et que j'aimerais vraiment mettre en place :
- La première chose, vous le savez, c'est faire en sorte que INTERNETCE soit vraiment une librairie. Eh oui, l'actuel format de la "lib" crée pas mal de problèmes : les programmes sont lourds vu qu'ils emportent tout le code avec eux, l'installation n'est pas naturelle puisqu'elle est différente des autres lib, mais surtout cela oblige l'utilisateur à avoir la même version de la toolchain que moi, ce qui peut vite rebuter !
- La deuxième chose est le câble qu'il faut acheter. C'est sûr que s'il n'y avait rien besoin d'acheter, tout serait beaucoup plus accessible ! Malheureusement pour ce point là, ça m'étonnerait que je trouve une solution.
- Le dernier point concerne le HTTPS, voilà quelque chose qui est plus abordable ! Pour l'instant la "lib" ne gère que les connexions HTTP sans TLS. Pour la plupart des sites ça ne pose pas de problème, mais certains n'autorisent pas les connexions non sécurisées. Donc dans le futur ce serait bien que je gère TLS.
Merci à ceux qui ont lu jusqu'au bout. Si vous avez la moindre question n'hésitez pas à la poser ici, ou sur le chat si vous me croisez (ou même en MP si vous êtes du genre discret...).
Liens :
Projet Github : https://github.com/MathisLav/internetce
Branche USBDRVCE de la toolchain : https://github.com/CE-Programming/toolc ... c/usbdrvce