Chalut chalut, vu que c'est les vacances et que j'ai du temps libre, j'ai eu l'idée de faire un projet : surfer reddit sur ma casio (en perme, ou en maths).
Pour ceux qui ne connaissent pas, reddit c'est un genre de forum avec plein de sous-forums sur différents thèmes, enfin c'est un peu dur à expliquer vu qu'il n'y a aucun équivalent français. (si vous voulez voir, c'est http://reddit.com/)
Le but sera d'aller sur un add-in qui serait l'équivalent d'une application reddit sur téléphone : on pourra aller entre les posts, et regarder les commentaires. C'est que du texte donc ce serait pas trop trop difficile à afficher, surtout que le format est très simple.
Donc le fonctionnement du truc :
-Une appli sur mon tel (android) se connecte à reddit.com via ma 3g (ça consommera ma 3g mais je m'en fous c'est que du texte, ça bouffe rien) et, après avoir filtré l'html inutile genre la sidebar etc (ça aidera à la transmission étant donné que si j'ai bien compris il y a des limites de transmission assez basses), transmet l'html filtré à la calculatrice via bluetooth
-La calculatrice reçoit l'html via bluetooth et l'affiche avec l'add-in
-L'add-in transmet les commandes de l'utilisateur (afficher une page, etc) via bluetooth
-Le téléphone reçoit les commandes de l'utilisateur et fait une requête web en conséquence
-etc
Donc voilà, si quelqu'un veut aider (dans le dev de l'appli android ou dans le dev de l'add-in) qu'il soit le bienvenu mais pour l'instant ma seule question est : où brancher l'adaptateur bluetooth sur ma casio 95 SD ? Je le branche sur les piles comme pour l'adaptateur wifi, ou je le branche autre part ?
Merci d'avance
Edit: Pour les gens du futur qui s'intéresseraient à ce projet :
- Le projet a été terminé et fonctionne :
- Le code est ici : http://git.planet-casio.com/Zezombye/caddit/tree/master
Il faut compiler l'addin (avec le SDK sous windows ou GCC sous linux, il y a des tutoriels sur le forum) et l'application android avec Android Studio.
- À noter que ça bug un peu, j'ai retesté récemment et les titres des posts bugent (le reste marche plus ou moins, il y a un petit bug après 10000 octets).
- Concernant le hardware (le module bluetooth) voici un schéma + photos :
Hardware
Hardware
Toutefois si vous voulez vous lancer dans ce projet je vous déconseille de faire comme j'ai fait au niveau du port 3-pin femelle (les fils se barrent et le scotch ne tient pas, donc niveau discrétion c'pas top si on doit passer 5 mn à remettre les fils en place).
Si tu fais ça en 4 jours, tu gagneras mon respect le plus grand éternellement. 8)
Mais plus sérieusement, comptes plutôt en semaines parce que les imprévus en prog... il y en a beaucoup !
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexionjewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
– 5h sur la théorie : comment organiser le filtre, etc. ?
La théorie j'ai déjà tout pensé donc pas la peine
Est-ce que tu as pensé à :
– l'algorithme du filtrage du html ? C'est pas tout de savoir quoi virer, c'est plus le comment qui m'inquiète.
– comment gérer la communication avec le module bluetooth ?
– l'algorithme de rendu des pages ? C'est pas tout de se baser sur WebCalc, dans ton cas faudra mettre les mains dans le cambouis.
– Plein d'autres trucs (j'en ai au moins 15 en tête, mais qui sont pas les plus importants)
⇒ 5h à tout mettre sur papier me semble limite peu. Ah oui, j'insiste : ne code(z) jamais sans organiser l'algo sur papier ! Sauf si : – vous êtes un pro (et encore, justement, les pros le font). – la fonction est ridiculement petite. C'est un coup à se perdre dans le code au bout de 500 lignes.
– 4-10h sur le module Bluetooth (test via une Arduino pour vérifier son bon fonctionnement, montage, test on-calc (création d'un addin de test)). Selon les aléas dus au module.
4 à 10 h sur le module bluetooth ? O_o je vois honnêtement pas comment ça prendrait autant de temps, faut pas plusieurs heures pour envoyer des données au module, et programmer un add-in qui afficherait juste les données ça devrait pas prendre beaucoup de temps, 2-3 h max nan ?
Eh ben ouais, mais par exemple, il m'a fallu 3h pour me rendre compte que mon module WiFi ne marchait pas correctement. Parce que tu essaie de résoudre le problème, que tu épluche la datasheet, que tu te rend compte qu'elle est inexacte voire totalement fausse, que tu va (re)faire une soudure, placer des fils, les coller. Et encore, je compte pas la création de l'addin de test, là c'est juste avec l'Arduino.
⇒ T'en as pour 4 heures si tout va bien jusqu'à plus de 10h en cas de pépin à répétition.
– 10h sur l'appli Androïd : je pense pas que ça soit aussi rapide que tu ne le penses, surtout from stratch
– 10h sur l'addin.
Ouais c'est vrai que from scratch ça va me ralentir pour l'appli et l'add-in, pour ça que j'ai mis 2-3 jours.
Moi je compterai plutôt en heures de travail : dès fois tu peux passer 8h dessus une journée, d'autres fois 1h et ça te saoulera déjà. Je pense aux bugs qui apparaissent sauvagement par exemple.
D'ailleurs, là-dedans je ne compte pas les heures que tu passera à lire des tutos (bien 10h), à aller te renseigner sur les protocoles de communication (Bluetooth et Serial : 5h), à aller te renseigner sur les syscalls en C pour Casio (1h sans comprendre, 5h en comprenant), etc.
Du coup, ma première estimation était peu être un peu optimiste. Mais comme l'a dit BTL, si tu me sors un truc en une semaine – ne soyons pas radins –, je suis près à te nommer "Successeur de PLL" (grande distinction pour les habitués du site).
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye a écrit : -niveau appli : me faut juste trouver comment faire une appli basique android, faire en sorte que cette appli transfère des données d'un serveur web (doit pas être super dur, suffit de regarder le nombre d'applis pour sites web), que cette appli transfère des données via bluetooth, et qu'elle réduise l'html envoyé (facile à faire)
Il faut trouver comment faire et il faut le faire ! Je t'assure que tu vas pas établir la communication avec le module Bluetooth si facilement si tu ne l'as jamais fait. -_-
Ah oui, pour le téléchargement j'espère que t'as une API tout faite sinon ben, il faut trouver une bibliothèque qui le fasse, ça peut être la libcurl par exemple, mais tu perds du temps de recherche, ensuite il faut lire la doc de base pour comprendre le fonctionnement, et appliquer.
Pour le debuggage tu vas devoir passer par l'écran, j'espère que t'as la doc de l'API d'Android sous la main.
Réduire l'html envoyé... tu vas rire je pense. Déjà pour le réduire correctement il faut le comprendre et pour que ton programme le comprenne il faut l'interpréter un minimum ! Heureusement, la syntaxe de HTML n'est pas trop capricieuse, mais c'est pas facile pour autant...
Zezombye a écrit : -niveau hardware : brancher un adaptateur bluetooth sur la calculette, suffit de trouver où le mettre et ça devrait pas prendre 1 an à le faire
Darks le défend bien : si tu penses qu'il suffit de le brancher et d'utiliser la fonction pour que ça fonctionne...
Zezombye a écrit : -niveau add-in : recevoir et transmettre des données via bluetooth, et après quand j'aurai fait ça suffira de régler l'add-in pour qu'il affiche correctement l'html transmis
Commence par faire la liaison avec la transmission série. Tape dans l'utilisation de syscalls, comprends leur fonctionnement, et transmets des données via le port. Ensuite, mets le module Bluetooth et déjà si tu arrives à transmettre en Bluetooth, ce sera du bon boulot.
Pour l'affichage de l'html, l'API de webcalc est simple, il suffit d'appeler une fonction d'interprétation qui prend un pointeur sur les données et la taille des données, une fonction d'application des styles, et d'afficher avec une boucle que tu peux piquer dans le programme.
Par contre t'as intérêt à ce que le code soit clean jusqu'au bout sinon le moteur plantera.
Zezombye a écrit : Donc ça devrait pas me prendre plus de 2-3 jours pour l'appli vu qu'il y a franchement quasi rien à faire (peut être moins), 1 h pour le truc bluetooth et 3-4 jours pour l'add-in (je sais pas trop combien de temps ça va prendre étant donné que je sais pas exactement ce qu'il faut modifier dans WebCalc), au total ce temps sera passé à programmer au lieu de glander sur cs, au moins
Si t'as jamais écrit de programmes, je pense que tu comprendras vite... faut au moins prévoir du temps de debuggage... oO
Zezombye a écrit : Sinon merci
Oh mais de rien. Avec ces quelques pistes qu'on t'a données ça devrait aller bien.
Si t'as jamais écrit de programmes, je pense que tu comprendras vite... faut au moins prévoir du temps de debuggage... oO
Ouaip, comme vous l'avez vu j'ai un peu tendance à sous-estimer le temps passé. Genre quand j'ai écrit mon programme d'input (en basic) pour rentrer des nombres où on veut dans les programmes, j'avais pas prévu que ça prendrait 10 h
Il faut trouver comment faire et il faut le faire ! Je t'assure que tu vas pas établir la communication avec le module Bluetooth si facilement si tu ne l'as jamais fait. -_-
Ah oui, pour le téléchargement j'espère que t'as une API tout faite sinon ben, il faut trouver une bibliothèque qui le fasse, ça peut être la libcurl par exemple, mais tu perds du temps de recherche, ensuite il faut lire la doc de base pour comprendre le fonctionnement, et appliquer.
Pour le debuggage tu vas devoir passer par l'écran, j'espère que t'as la doc de l'API d'Android sous la main.
Ca m'a l'air assez complet ça, et j'ai Android Studio pour le débuggage, donc je pense que ça devrait aller nan ?
Réduire l'html envoyé... tu vas rire je pense. Déjà pour le réduire correctement il faut le comprendre et pour que ton programme le comprenne il faut l'interpréter un minimum ! Heureusement, la syntaxe de HTML n'est pas trop capricieuse, mais c'est pas facile pour autant...
Le truc pour réduire l'html ce sera genre : il supprime les trucs superflus genre header, scripts, etc (ce sera reproduit sur l'add-in), et il transmet juste le nombre de posts, comments, etc. Même pas besoin de l'interpréter, suffit de le lire. Après réduction le truc devrait ressembler à ça :
Donc pour le système de transmission ce serait, par exemple, pour le premier post (puppy doesn't understand hiccups) :
-Transmet le rang de la submission (1)
-Transmet le nombre de commentaires (146)
-Transmet le nombre d'upvotes (4104)
-Transmet la date de la submission (il y a 3 heures)
-Transmet le subreddit (/r/gifs)
-Transmet l'ID du post (34coj1)
-Transmet le lien du post
-Transmet le pseudo du submitteur
Tout ça avec des tags (genre {submission id="34coj1" sub="gifs" upvotes="4104" rank="1"} enfin je sais pas la syntaxe, mais vous comprenez le principe)
L'add-in ferait comme une appli et organiserait les données (mettre les commentaires à gauche, classer les submissions par rang, etc). Ensuite, pour les données de l'add-in, même chose. Par exemple, si l'utilisateur a cliqué sur la submission avec l'ID 34coj1 dans le subreddit gifs, il envoie ces données à l'appli qui génère une url en fonction de ces données (http://reddit.com/r/gifs/comments/34coj1) et s'y connecte, envoie les données à l'addin, etc.
– l'algorithme du filtrage du html ? C'est pas tout de savoir quoi virer, c'est plus le comment qui m'inquiète.
Ca doit pas être super dur d'isoler une pièce de code et de n'envoyer que ça (genre isoler un div avec une id spécifique, et isoler les différents éléments du code pour les envoyer) si ?
Par exemple, voici le code d'un post :
Suffit de faire en sorte que l'algorithme isole le post (commence en voyant <div class="thing link et finit en voyant </div></div>), puis isole les différents éléments avec les <span>. Si android supporte le regex ça ira.
– l'algorithme de rendu des pages ? C'est pas tout de se baser sur WebCalc, dans ton cas faudra mettre les mains dans le cambouis.
Si tu parles du layout, alors oui j'ai déjà tout pensé vu que je m'inspirerai de l'appli mobile que j'utilise (avec quelques modifs).
D'ailleurs, là-dedans je ne compte pas les heures que tu passera à lire des tutos (bien 10h), à aller te renseigner sur les protocoles de communication (Bluetooth et Serial : 5h), à aller te renseigner sur les syscalls en C pour Casio (1h sans comprendre, 5h en comprenant), etc.
Ouais
Eh ben ouais, mais par exemple, il m'a fallu 3h pour me rendre compte que mon module WiFi ne marchait pas correctement. Parce que tu essaie de résoudre le problème, que tu épluche la datasheet, que tu te rend compte qu'elle est inexacte voire totalement fausse, que tu va (re)faire une soudure, placer des fils, les coller. Et encore, je compte pas la création de l'addin de test, là c'est juste avec l'Arduino.
⇒ T'en as pour 4 heures si tout va bien jusqu'à plus de 10h en cas de pépin à répétition.
Hmm ouais je vois. Enfin mon module bluetooth logiquement il devrait marcher vu que mon père l'a déjà testé sur un arduino. Mais bon avant de le brancher, faudrait déjà savoir où le mettre, donc je le mets sur les piles ou sur le processeur ? (vu qu'il faudrait du 3,3 volts)
Sinon pour l'add-in de test c'est vrai que j'ai absolument aucune idée de comment récupérer les données bluetooth :/ elles sont stockées où ?
Ca m'a l'air assez complet ça, et j'ai Android Studio pour le débuggage, donc je pense que ça devrait aller nan ?
Whoah. Si toutes les API étaient comme ça, ce serait le bonheur.
Tu devrais pas avoir trop de problèmes !
Zezombye a écrit : Le truc pour réduire l'html ce sera genre : il supprime les trucs superflus genre header, scripts, etc (ce sera reproduit sur l'add-in), et il transmet juste le nombre de posts, comments, etc. Même pas besoin de l'interpréter, suffit de le lire.
Oui mais faut bien détecter le bouzin. Enfin, tu verras.
Zezombye a écrit : Donc pour le système de transmission ce serait, par exemple, pour le premier post (puppy doesn't understand hiccups) :
-Transmet le rang de la submission (1)
-Transmet le nombre de commentaires (146)
-Transmet le nombre d'upvotes (4104)
-Transmet la date de la submission (il y a 3 heures)
-Transmet le subreddit (/r/gifs)
-Transmet l'ID du post (34coj1)
-Transmet le lien du post
-Transmet le pseudo du submitteur
Tout ça avec des tags (genre {submission id="34coj1" sub="gifs" upvotes="4104" rank="1"} enfin je sais pas la syntaxe, mais vous comprenez le principe)
Utilise un protocole complet, somme de contrôle etc. Ce sera plus fiable (faut aussi pense aux pertes de données).
Zezombye a écrit :
– l'algorithme du filtrage du html ? C'est pas tout de savoir quoi virer, c'est plus le comment qui m'inquiète.
Ca doit pas être super dur d'isoler une pièce de code et de n'envoyer que ça (genre isoler un div avec une id spécifique, et isoler les différents éléments du code pour les envoyer) si ?
[...]
Suffit de faire en sorte que l'algorithme isole le post (commence en voyant <div class="thing link et finit en voyant </div></div>), puis isole les différents éléments avec les <span>. Si android supporte le regex ça ira.
Le problème c'est que le jour ou reddit change son html t'es marron. C'est pour ça que le truc est bancal, tu peux bien te baser sur les classes à la limite mais </div></div>, ça a beau fonctionner, c'est horrible.
Zezombye a écrit :
– l'algorithme de rendu des pages ? C'est pas tout de se baser sur WebCalc, dans ton cas faudra mettre les mains dans le cambouis.
Si tu parles du layout, alors oui j'ai déjà tout pensé vu que je m'inspirerai de l'appli mobile que j'utilise (avec quelques modifs).
Utilise les styles natifs de WebCalc. Ah mais zut, ton html est déjà écrit...
Zezombye a écrit : Sinon pour l'add-in de test c'est vrai que j'ai absolument aucune idée de comment récupérer les données bluetooth :/ elles sont stockées où ?
Ben elles vont arriver dans le buffer du port série, évidemment ! Tu pensais à quoi ? oO
Le problème c'est que le jour ou reddit change son html t'es marron. C'est pour ça que le truc est bancal, tu peux bien te baser sur les classes à la limite mais </div></div>, ça a beau fonctionner, c'est horrible.
Vu que reddit n'a pas changé son design depuis 2005 y'a pas trop de problème à ce niveau mais sinon je vois pas d'autre solution que se baser sur les classes, tu proposerais quoi ?
Ben elles vont arriver dans le buffer du port série, évidemment ! Tu pensais à quoi ? oO
A rien justement, mais je voulais juste savoir comment je pouvais les récupérer (genre je fais quel syscall) ?
Zezombye a écrit : Vu que reddit n'a pas changé son design depuis 2005 y'a pas trop de problème à ce niveau mais sinon je vois pas d'autre solution que se baser sur les classes, tu proposerais quoi ?
Non mais ça va fonctionner, mais c'est moche. Le plus propre serait d'interpréter la page et de filtrer, mais ce n'est pas adapté : au final, ta méthode est pas terrible en elle.
Zezombye a écrit :
Ben elles vont arriver dans le buffer du port série, évidemment ! Tu pensais à quoi ? oO
A rien justement, mais je voulais juste savoir comment je pouvais les récupérer (genre je fais quel syscall) ?
Maintenant que tu le dis c'est vrai qu'il doit y en avoir une d'api, je regarderai sur /r/redditdev, et au pire je regarderai comment font les applis mobiles.
http://www.reddit.com/dev/api
Premier lien en tapant « reddit api » sur DuckDuckGo.
Après, j'ai pas regardé ce qu'elle fait, mais jette un coup d'œil.
Bonne chance !
En fait, pourquoi utiliser du Bluetooth ? Tu pourrais passer par un cable OTG + cable USB sur la calto. Ça éviterait d'acheter un module Bluetooth, et les cables OTG sont vraiment pas chers, et peuvent servir à autre chose (c'est super utile) . Après, les syscalls USB sont moins documentés, mais c'est possible. Android propose une API pour utiliser facilement l'OTG à partir de la version 3.0 je crois.
En fait, pourquoi utiliser du Bluetooth ? Tu pourrais passer par un cable OTG + cable USB sur la calto. Ça éviterait d'acheter un module Bluetooth, et les cables OTG sont vraiment pas chers, et peuvent servir à autre chose (c'est super utile) . Après, les syscalls USB sont moins documentés, mais c'est possible. Android propose une API pour utiliser facilement l'OTG à partir de la version 3.0 je crois.
Parce que le cable usb relié au tel c'pas trop trop discret
Ca doit pas être super dur d'isoler une pièce de code et de n'envoyer que ça (genre isoler un div avec une id spécifique, et isoler les différents éléments du code pour les envoyer) si ?
Oh que si ! ><
donc je le mets sur les piles ou sur le processeur ?
C'est toi qui vois si tu veux prendre le risque de cramer le CPU ou non. Perso je me brancherai sur les piles (moins fiable pour la tension, mais plus sûr pour l'intégrité de la machine)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Mais plus sérieusement, comptes plutôt en semaines parce que les imprévus en prog... il y en a beaucoup !
Vu que je viens de passer 4 h à tenter d'afficher un string sur l'écran (et j'ai toujours pas réussi) je plussoie o/
C'est toi qui vois si tu veux prendre le risque de cramer le CPU ou non. Perso je me brancherai sur les piles (moins fiable pour la tension, mais plus sûr pour l'intégrité de la machine)
Mais si le CPU supporte du 3,3V, comment on peut le cramer si l'adaptateur c'est aussi du 3,3V ?
Parce que le fer à souder est à plus de 300°C, et que le CPU n'est censé supporter que des chaleurs inférieures à 100°C. Du coup ça passe, mais faut faire ça rapidement et précisément.
À moins que tu ne compte pas souder l'alim, mais là c'est mission impossible pour faire un truc opérationnel
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
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 29/04/2015 23:11 | #
Si tu fais ça en 4 jours, tu gagneras mon respect le plus grand éternellement. 8)
Mais plus sérieusement, comptes plutôt en semaines parce que les imprévus en prog... il y en a beaucoup !
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013
Citer : Posté le 30/04/2015 00:02 | #
Je confirme les dires de mon VDD.
La théorie j'ai déjà tout pensé donc pas la peine
Est-ce que tu as pensé à :
– l'algorithme du filtrage du html ? C'est pas tout de savoir quoi virer, c'est plus le comment qui m'inquiète.
– comment gérer la communication avec le module bluetooth ?
– l'algorithme de rendu des pages ? C'est pas tout de se baser sur WebCalc, dans ton cas faudra mettre les mains dans le cambouis.
– Plein d'autres trucs (j'en ai au moins 15 en tête, mais qui sont pas les plus importants)
⇒ 5h à tout mettre sur papier me semble limite peu.
Ah oui, j'insiste : ne code(z) jamais sans organiser l'algo sur papier ! Sauf si : – vous êtes un pro (et encore, justement, les pros le font). – la fonction est ridiculement petite. C'est un coup à se perdre dans le code au bout de 500 lignes.
4 à 10 h sur le module bluetooth ? O_o je vois honnêtement pas comment ça prendrait autant de temps, faut pas plusieurs heures pour envoyer des données au module, et programmer un add-in qui afficherait juste les données ça devrait pas prendre beaucoup de temps, 2-3 h max nan ?
Eh ben ouais, mais par exemple, il m'a fallu 3h pour me rendre compte que mon module WiFi ne marchait pas correctement. Parce que tu essaie de résoudre le problème, que tu épluche la datasheet, que tu te rend compte qu'elle est inexacte voire totalement fausse, que tu va (re)faire une soudure, placer des fils, les coller. Et encore, je compte pas la création de l'addin de test, là c'est juste avec l'Arduino.
⇒ T'en as pour 4 heures si tout va bien jusqu'à plus de 10h en cas de pépin à répétition.
– 10h sur l'addin.
Ouais c'est vrai que from scratch ça va me ralentir pour l'appli et l'add-in, pour ça que j'ai mis 2-3 jours.
Moi je compterai plutôt en heures de travail : dès fois tu peux passer 8h dessus une journée, d'autres fois 1h et ça te saoulera déjà. Je pense aux bugs qui apparaissent sauvagement par exemple.
D'ailleurs, là-dedans je ne compte pas les heures que tu passera à lire des tutos (bien 10h), à aller te renseigner sur les protocoles de communication (Bluetooth et Serial : 5h), à aller te renseigner sur les syscalls en C pour Casio (1h sans comprendre, 5h en comprenant), etc.
Du coup, ma première estimation était peu être un peu optimiste. Mais comme l'a dit BTL, si tu me sors un truc en une semaine – ne soyons pas radins –, je suis près à te nommer "Successeur de PLL" (grande distinction pour les habitués du site).
Citer : Posté le 30/04/2015 06:24 | #
-niveau appli : me faut juste trouver comment faire une appli basique android, faire en sorte que cette appli transfère des données d'un serveur web (doit pas être super dur, suffit de regarder le nombre d'applis pour sites web), que cette appli transfère des données via bluetooth, et qu'elle réduise l'html envoyé (facile à faire)
Il faut trouver comment faire et il faut le faire ! Je t'assure que tu vas pas établir la communication avec le module Bluetooth si facilement si tu ne l'as jamais fait. -_-
Ah oui, pour le téléchargement j'espère que t'as une API tout faite sinon ben, il faut trouver une bibliothèque qui le fasse, ça peut être la libcurl par exemple, mais tu perds du temps de recherche, ensuite il faut lire la doc de base pour comprendre le fonctionnement, et appliquer.
Pour le debuggage tu vas devoir passer par l'écran, j'espère que t'as la doc de l'API d'Android sous la main.
Réduire l'html envoyé... tu vas rire je pense. Déjà pour le réduire correctement il faut le comprendre et pour que ton programme le comprenne il faut l'interpréter un minimum ! Heureusement, la syntaxe de HTML n'est pas trop capricieuse, mais c'est pas facile pour autant...
-niveau hardware : brancher un adaptateur bluetooth sur la calculette, suffit de trouver où le mettre et ça devrait pas prendre 1 an à le faire
Darks le défend bien : si tu penses qu'il suffit de le brancher et d'utiliser la fonction pour que ça fonctionne...
-niveau add-in : recevoir et transmettre des données via bluetooth, et après quand j'aurai fait ça suffira de régler l'add-in pour qu'il affiche correctement l'html transmis
Commence par faire la liaison avec la transmission série. Tape dans l'utilisation de syscalls, comprends leur fonctionnement, et transmets des données via le port. Ensuite, mets le module Bluetooth et déjà si tu arrives à transmettre en Bluetooth, ce sera du bon boulot.
Pour l'affichage de l'html, l'API de webcalc est simple, il suffit d'appeler une fonction d'interprétation qui prend un pointeur sur les données et la taille des données, une fonction d'application des styles, et d'afficher avec une boucle que tu peux piquer dans le programme.
Par contre t'as intérêt à ce que le code soit clean jusqu'au bout sinon le moteur plantera.
Donc ça devrait pas me prendre plus de 2-3 jours pour l'appli vu qu'il y a franchement quasi rien à faire (peut être moins), 1 h pour le truc bluetooth et 3-4 jours pour l'add-in (je sais pas trop combien de temps ça va prendre étant donné que je sais pas exactement ce qu'il faut modifier dans WebCalc), au total ce temps sera passé à programmer au lieu de glander sur cs, au moins
Si t'as jamais écrit de programmes, je pense que tu comprendras vite... faut au moins prévoir du temps de debuggage... oO
Sinon merci
Oh mais de rien. Avec ces quelques pistes qu'on t'a données ça devrait aller bien.
Citer : Posté le 30/04/2015 08:46 | #
Ouaip, comme vous l'avez vu j'ai un peu tendance à sous-estimer le temps passé. Genre quand j'ai écrit mon programme d'input (en basic) pour rentrer des nombres où on veut dans les programmes, j'avais pas prévu que ça prendrait 10 h
Ah oui, pour le téléchargement j'espère que t'as une API tout faite sinon ben, il faut trouver une bibliothèque qui le fasse, ça peut être la libcurl par exemple, mais tu perds du temps de recherche, ensuite il faut lire la doc de base pour comprendre le fonctionnement, et appliquer.
Pour le debuggage tu vas devoir passer par l'écran, j'espère que t'as la doc de l'API d'Android sous la main.
https://developer.android.com/reference/android/bluetooth/package-summary.html
Ca m'a l'air assez complet ça, et j'ai Android Studio pour le débuggage, donc je pense que ça devrait aller nan ?
Le truc pour réduire l'html ce sera genre : il supprime les trucs superflus genre header, scripts, etc (ce sera reproduit sur l'add-in), et il transmet juste le nombre de posts, comments, etc. Même pas besoin de l'interpréter, suffit de le lire. Après réduction le truc devrait ressembler à ça :
Donc pour le système de transmission ce serait, par exemple, pour le premier post (puppy doesn't understand hiccups) :
-Transmet le rang de la submission (1)
-Transmet le nombre de commentaires (146)
-Transmet le nombre d'upvotes (4104)
-Transmet la date de la submission (il y a 3 heures)
-Transmet le subreddit (/r/gifs)
-Transmet l'ID du post (34coj1)
-Transmet le lien du post
-Transmet le pseudo du submitteur
Tout ça avec des tags (genre {submission id="34coj1" sub="gifs" upvotes="4104" rank="1"} enfin je sais pas la syntaxe, mais vous comprenez le principe)
L'add-in ferait comme une appli et organiserait les données (mettre les commentaires à gauche, classer les submissions par rang, etc). Ensuite, pour les données de l'add-in, même chose. Par exemple, si l'utilisateur a cliqué sur la submission avec l'ID 34coj1 dans le subreddit gifs, il envoie ces données à l'appli qui génère une url en fonction de ces données (http://reddit.com/r/gifs/comments/34coj1) et s'y connecte, envoie les données à l'addin, etc.
Ca doit pas être super dur d'isoler une pièce de code et de n'envoyer que ça (genre isoler un div avec une id spécifique, et isoler les différents éléments du code pour les envoyer) si ?
Par exemple, voici le code d'un post :
Suffit de faire en sorte que l'algorithme isole le post (commence en voyant <div class="thing link et finit en voyant </div></div>), puis isole les différents éléments avec les <span>. Si android supporte le regex ça ira.
Si tu parles du layout, alors oui j'ai déjà tout pensé vu que je m'inspirerai de l'appli mobile que j'utilise (avec quelques modifs).
Ouais
⇒ T'en as pour 4 heures si tout va bien jusqu'à plus de 10h en cas de pépin à répétition.
Hmm ouais je vois. Enfin mon module bluetooth logiquement il devrait marcher vu que mon père l'a déjà testé sur un arduino. Mais bon avant de le brancher, faudrait déjà savoir où le mettre, donc je le mets sur les piles ou sur le processeur ? (vu qu'il faudrait du 3,3 volts)
Sinon pour l'add-in de test c'est vrai que j'ai absolument aucune idée de comment récupérer les données bluetooth :/ elles sont stockées où ?
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 30/04/2015 11:35 | #
https://developer.android.com/reference/android/bluetooth/package-summary.html
Ca m'a l'air assez complet ça, et j'ai Android Studio pour le débuggage, donc je pense que ça devrait aller nan ?
Whoah. Si toutes les API étaient comme ça, ce serait le bonheur.
Tu devrais pas avoir trop de problèmes !
Le truc pour réduire l'html ce sera genre : il supprime les trucs superflus genre header, scripts, etc (ce sera reproduit sur l'add-in), et il transmet juste le nombre de posts, comments, etc. Même pas besoin de l'interpréter, suffit de le lire.
Oui mais faut bien détecter le bouzin. Enfin, tu verras.
Donc pour le système de transmission ce serait, par exemple, pour le premier post (puppy doesn't understand hiccups) :
-Transmet le rang de la submission (1)
-Transmet le nombre de commentaires (146)
-Transmet le nombre d'upvotes (4104)
-Transmet la date de la submission (il y a 3 heures)
-Transmet le subreddit (/r/gifs)
-Transmet l'ID du post (34coj1)
-Transmet le lien du post
-Transmet le pseudo du submitteur
Tout ça avec des tags (genre {submission id="34coj1" sub="gifs" upvotes="4104" rank="1"} enfin je sais pas la syntaxe, mais vous comprenez le principe)
Utilise un protocole complet, somme de contrôle etc. Ce sera plus fiable (faut aussi pense aux pertes de données).
Ca doit pas être super dur d'isoler une pièce de code et de n'envoyer que ça (genre isoler un div avec une id spécifique, et isoler les différents éléments du code pour les envoyer) si ?
[...]
Suffit de faire en sorte que l'algorithme isole le post (commence en voyant <div class="thing link et finit en voyant </div></div>), puis isole les différents éléments avec les <span>. Si android supporte le regex ça ira.
Le problème c'est que le jour ou reddit change son html t'es marron. C'est pour ça que le truc est bancal, tu peux bien te baser sur les classes à la limite mais </div></div>, ça a beau fonctionner, c'est horrible.
Si tu parles du layout, alors oui j'ai déjà tout pensé vu que je m'inspirerai de l'appli mobile que j'utilise (avec quelques modifs).
Utilise les styles natifs de WebCalc. Ah mais zut, ton html est déjà écrit...
Sinon pour l'add-in de test c'est vrai que j'ai absolument aucune idée de comment récupérer les données bluetooth :/ elles sont stockées où ?
Ben elles vont arriver dans le buffer du port série, évidemment ! Tu pensais à quoi ? oO
Citer : Posté le 30/04/2015 11:49 | #
Vu que reddit n'a pas changé son design depuis 2005 y'a pas trop de problème à ce niveau
A rien justement, mais je voulais juste savoir comment je pouvais les récupérer (genre je fais quel syscall) ?
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 30/04/2015 11:54 | #
Mais plutôt que de parser le html, reddit a pas une api ?
Coïncidence ? Je ne pense pas.
Citer : Posté le 30/04/2015 11:56 | #
Vu que reddit n'a pas changé son design depuis 2005 y'a pas trop de problème à ce niveau
Non mais ça va fonctionner, mais c'est moche. Le plus propre serait d'interpréter la page et de filtrer, mais ce n'est pas adapté : au final, ta méthode est pas terrible en elle.
A rien justement, mais je voulais juste savoir comment je pouvais les récupérer (genre je fais quel syscall) ?
Ben c'est dans la doc
http://media.taricorp.net/prizm/simon_chm/fx_legacy_Serial.htm
Citer : Posté le 30/04/2015 11:56 | #
Maintenant que tu le dis c'est vrai qu'il doit y en avoir une d'api, je regarderai sur /r/redditdev, et au pire je regarderai comment font les applis mobiles.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 30/04/2015 11:58 | #
S'il y a une application mobile il y très probablement une API ! Mais faut savoir si t'as le droit de t'en servir.
Citer : Posté le 30/04/2015 12:01 | #
Logiquement oui vu qu'il y a aucune appli officielle.
Ben heu c'est ce que je fais, nan ?
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 30/04/2015 12:10 | #
http://www.reddit.com/dev/api
Premier lien en tapant « reddit api » sur DuckDuckGo.
Après, j'ai pas regardé ce qu'elle fait, mais jette un coup d'œil.
Bonne chance !
Citer : Posté le 30/04/2015 12:30 | #
Mais faut savoir si t'as le droit de t'en servir.
The reddit API and code are open source.
Ca devrait être bon.
Citer : Posté le 30/04/2015 12:58 | #
En fait, pourquoi utiliser du Bluetooth ? Tu pourrais passer par un cable OTG + cable USB sur la calto. Ça éviterait d'acheter un module Bluetooth, et les cables OTG sont vraiment pas chers, et peuvent servir à autre chose (c'est super utile) . Après, les syscalls USB sont moins documentés, mais c'est possible. Android propose une API pour utiliser facilement l'OTG à partir de la version 3.0 je crois.
Citer : Posté le 30/04/2015 13:03 | #
Parce que le cable usb relié au tel c'pas trop trop discret
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 30/04/2015 13:04 | #
En même temps, le module Bluetooth c'est pas forcément très discret non plus
Citer : Posté le 30/04/2015 16:05 | #
Oh que si ! ><
C'est toi qui vois si tu veux prendre le risque de cramer le CPU ou non. Perso je me brancherai sur les piles (moins fiable pour la tension, mais plus sûr pour l'intégrité de la machine)
Citer : Posté le 30/04/2015 17:16 | #
Vu que je viens de passer 4 h à tenter d'afficher un string sur l'écran (et j'ai toujours pas réussi) je plussoie o/
Mais si le CPU supporte du 3,3V, comment on peut le cramer si l'adaptateur c'est aussi du 3,3V ?
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 30/04/2015 17:35 | #
Parce que le fer à souder est à plus de 300°C, et que le CPU n'est censé supporter que des chaleurs inférieures à 100°C. Du coup ça passe, mais faut faire ça rapidement et précisément.
À moins que tu ne compte pas souder l'alim, mais là c'est mission impossible pour faire un truc opérationnel
Citer : Posté le 30/04/2015 18:25 | #
Vu que je viens de passer 4 h à tenter d'afficher un string sur l'écran (et j'ai toujours pas réussi) je plussoie o/
C'est pourtant pas compliqué :
unsigned key;
PrintXY([i]x[/i],[i]y[/i],(const unsigned char *)[i]str[/i],[i]mode[/i]);
GetKey(&key); // appelle indirectement Bdisp_PutDisp_DD();
Pour le mode tu laisse 0 si tu veux du noir sur blanc non transparent.
Citer : Posté le 30/04/2015 18:29 | #
Nan, sur android je parle. J'ai pas encore touché à l'add-in.
Ecrivez vos programmes basic sur PC avec BIDE