π
<-
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 !

Unread postby Epharius » 11 Aug 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 depuis 0 la toolchain basée sur LLVM.
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 : Si vous n'avez pas installé la toolchain basée sur LLVM, ou que vous n'avez jamais fait de C, vous risquez d'être perdu dans les explications. 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 :
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 basée sur LLVM

    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). La marche à suivre est indiquée ici. Courage ! En plus de pouvoir utiliser la lib, ça vous permettra d'accéder à une meilleure version C !
  • 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 mis à disposition en bas du post et transférez-le à 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: 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 -> Plus -> Partage de connexion internet -> 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
Installation de la toolchain LLVM :
https://github.com/CE-Programming/toolc ... lvm-branch
Branche USBDRVCE de la toolchain :
https://github.com/CE-Programming/toolc ... c/usbdrvce
Attachments
usbdrvce.8xv
(6.57 KiB) Downloaded 15 times
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
User avatar
EphariusPremium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.7%
 
Posts: 1020
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Male
Calculator(s):
Class: ENSIMAG

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

Unread postby TheMachine02 » 11 Aug 2020, 16:31

Très joli. Il n'y a plus qu'à corriger tes TODO maintenant :troll:
User avatar
TheMachine02Généreux
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 5.7%
 
Posts: 310
Images: 0
Joined: 16 Jan 2013, 18:27
Gender: Not specified
Calculator(s):
Class: Médecine

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

Unread postby Epharius » 11 Aug 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
User avatar
EphariusPremium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.7%
 
Posts: 1020
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Male
Calculator(s):
Class: ENSIMAG

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

Unread postby Ti64CLi++ » 11 Aug 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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 1.5%
 
Posts: 3333
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
Class: MP
GitHub: Ti64CLi

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

Unread postby Epharius » 11 Aug 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
User avatar
EphariusPremium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.7%
 
Posts: 1020
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Male
Calculator(s):
Class: ENSIMAG

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

Unread postby Adriweb » 11 Aug 2020, 17:24

Interessant :)
Je relaie sur IRC sur #ez80-dev, ou tu devrais venir aussi :D
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 55.5%
 
Posts: 13084
Images: 1087
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

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

Unread postby Wistaro » 11 Aug 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 . 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!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.7%
 
Posts: 3006
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
Class: Etudiant ingénieur (dernière année)
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

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

Unread postby Epharius » 12 Aug 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
User avatar
EphariusPremium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.7%
 
Posts: 1020
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Male
Calculator(s):
Class: ENSIMAG

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

Unread postby Wistaro » 12 Aug 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 . 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!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.7%
 
Posts: 3006
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
Class: Etudiant ingénieur (dernière année)
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

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

Unread postby Epharius » 13 Aug 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
User avatar
EphariusPremium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.7%
 
Posts: 1020
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Male
Calculator(s):
Class: ENSIMAG

Next

Return to Langages alternatifs

Who is online

Users browsing this forum: No registered users and 2 guests

-
Search
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.2 pour les Nspire CX II
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
733 utilisateurs:
>722 invités
>5 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)

-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)