π
<-
Chat plein-écran
[^]

[LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+CE !

Assembleur, Axe, C/C++, ICE...

[LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+CE !

Message non lude Epharius » 11 Aoû 2020, 14:32

Coucou c'est moi (eh oui, Chiquito)
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 8-)
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).


Avant d'entrer dans le vif du sujet, cette "librairie" s'adresse aux utilisateurs plutôt expérimentés ou du moins motivés. En effet, elle nécessite de savoir installer la toolchain pour programmer en C pour eZ80.
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é.

Ceci étant dit, INTERNETCE fonctionne bel et bien et pour peu que vous soyez "un minimum motivé", vous allez pouvoir réaliser des trucs qui étaient jusque là impossible sur CE (navigateur internet, client IRC, bot, hebergeur de site web, etc), alors amusez-vous bien 8-)



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 ?

RAPPEL : L'utilisation de INTERNETCE requiert un minimum de connaissances à propos des libC et de la toolchain. Si vous êtes motivé pour apprendre, n'hésitez pas à poser vos questions soit dans le chat, soit sur ce topic (en vous étant un peu renseigné avant quand même).
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_Init
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 !
Prérequis :
  • 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.


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/ et include/ 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 fonction main() 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é.
Il n'existe donc pas à proprement parler une documentation en ligne. Mais vous verrez que tout est expliqué dans internet.h ;)
Pour vous mâcher le travail, voici le code minimal pour utiliser la "lib" :
Code: Tout sélectionner
#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 voilà ! Pour environ 3€ pour pouvez utiliser internet sur votre calculatrice :favorite:


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 ?
Maintenant qu'il est possible d'accéder à internet, cela ouvre un champ de possibilité immense ! J'espère que certains sauront tirer profit de tout ça 8-)

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
Dernière édition par Epharius le 06 Oct 2022, 16:36, édité 3 fois.
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7%
 
Messages: 1107
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude TheMachine02 » 11 Aoû 2020, 16:31

Très joli. Il n'y a plus qu'à corriger tes TODO maintenant :troll:
Avatar de l’utilisateur
TheMachine02Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 29.4%
 
Messages: 341
Images: 0
Inscription: 16 Jan 2013, 18:27
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Médecine

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude Epharius » 11 Aoû 2020, 16:34

Ah oui t'as pu observer les magnifiques Notes à moi-même au début de la lib :troll:
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7%
 
Messages: 1107
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude Ti64CLi++ » 11 Aoû 2020, 16:47

Superbe projet :bj:
D'ici peu on pourra parler sur le chat de TI-Planet depuis sa calculatrice, poster des messages sur le forum, ou encore directement télécharger les programmes pour la TI-83 PCE :D
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude Epharius » 11 Aoû 2020, 16:59

Libre à toi :p
Ce qui est sûr c'est que faire un client IRC est quelque chose d'abordable à ce niveau là (faudrait se renseigner mais il doit suffire d'écouter un port et d'envoyer des messages TCP) ;)
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7%
 
Messages: 1107
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude Adriweb » 11 Aoû 2020, 17:24

Interessant :)
Je relaie sur IRC sur #ez80-dev, ou tu devrais venir aussi :D
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude Wistaro » 11 Aoû 2020, 21:42

Bravo, c'est vraiment bluffant, j'ai hâte de tester ça !

Flemme d'acheter un câble par contre, je vais bidouiller un adaptateur avec ce que j'ai. J'achèterai si vraiment je galère trop^^

Ça me donne envie de reprendre un peu le dev sur CE ça :D
Nouveau sur le site, Anonymous ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 87.5%
 
Messages: 3153
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude Epharius » 12 Aoû 2020, 15:04

Interessant :)
Je relaie sur IRC sur #ez80-dev, ou tu devrais venir aussi

Merci :*
Oui je devrais mais comme j'ai pas de client IRC ça m'oblige à me connecter à chaque fois par la navigateur :p

Bravo, c'est vraiment bluffant, j'ai hâte de tester ça !
Flemme d'acheter un câble par contre, je vais bidouiller un adaptateur avec ce que j'ai. J'achèterai si vraiment je galère trop^^
Ça me donne envie de reprendre un peu le dev sur CE ça

Content que ça attise ta curiosité ! Mais bon courage pour le cable, c'est un peu un truc de niche d'avoir du mini USB A d'un côté et du microUSB/USB-C de l'autre :p
Je précise bien évidemment que l'adaptateur de l'article est juste une proposition, du moment que votre "montage" respecte les specs ça fonctionne.
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7%
 
Messages: 1107
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude Wistaro » 12 Aoû 2020, 18:14

Il semblerait que cela ne fonctionne pas sur Android 9 et 10, sauf si quelqu'un a réussi à le faire fonctionner sur ces OS là :)

Epharius a testé sur Android 9, moi sur Android 10 et impossible d'établir la communication.
Nouveau sur le site, Anonymous ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 87.5%
 
Messages: 3153
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [LIB C] INTERNETCE : Internet pour 83 Premium CE et 84+C

Message non lude Epharius » 13 Aoû 2020, 11:17

Oui jsuis en train de me renseigner. Je pense qu'ils ont du changer qqchose au niveau de la communication USB sur ces OS là.
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7%
 
Messages: 1107
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Suivante

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1144 utilisateurs:
>1135 invités
>4 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)