Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Surfer sur reddit, avec bluetooth
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Surfer sur reddit, avec bluetooth

Posté le 29/04/2015 19:13

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).


Précédente 1, 2, 3, 4, 5, 6, 7, 8 Suivante
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 27/03/2016 15:07 | #


Ça devrait marcher en effet
On attend la réponse !
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 28/03/2016 07:12 | #


Pour l'instant on cherche à alimenter le module avec une pile externe comme ça on risque au moins pas de cramer l'arduino du coup c'est p'têt pas pour aujourd'hui non plus, on verra de toute façon, j'ai les vacs dans une semaine

Ajouté le 22/04/2016 à 19:21 :
Il y a de la magie vaudou dans mon code et j'aimerais m'en débarasser.

Quand on initialise l'appli ça donne ça :



Le string complet est :

<t This is the text post kek.> <1 Another top lvl comment > <1 Top lvl comment, with word wrap > <2 Second level comment with word wrap> <3 Third level comment with word wrap too> <4 Top-level comment that is very long like verrry long daufq> <2 Another second lvl comment>


Donc on peut constater plusieurs erreurs :

- Au niveau du text post : quand je ne mets pas un espace avant le >, ça met toujours le mot sur une nouvelle ligne. On peut constater ce comportement avec certains commentaires certaines fois. Le plus bizarre est que le bug qui met le mot sur une nouvelle ligne (alors qu'il ne devrait pas) prend quand même en compte la hauteur... sauf dans le text post. En toute logique la fonction dispStr() devrait retourner la valeur exacte de la hauteur vu qu'elle retourne la différence entre la hauteur initiale (donc là où on lui a demandé d'afficher le string) et la hauteur finale (là où elle a dessiné le dernier pixel), et comme elle a dessiné ces pixels elle aurait du en toute logique incrémenter la hauteur...

-Au niveau du 1er commentaire : il y a une ligne ajoutée à la fin, pour je ne sais quelle raison. Mais le plus bizarre est qu'en appuyant sur une touche (donc en appelant la méthode une deuxième fois), la ligne ajoutée à la fin s'auto-corrige, et reste auto-corrigée même en réappuyant.

-Au niveau du 2nd commentaire : il y a une ligne ajoutée à la fin, pour je ne sais quelle raison. Le plus bizarre est qu'avant c'était le 1er commentaire, et qu'il faisait le comportement de celui qui est maintenant le 1er (mais le comportement inverse : c'est à dire qu'en appuyant sur une touche, il ajoutait la ligne), mais en voulant débugger, j'ai changé le texte du text post (qui pour je sais pas quelle raison a une influence sur le texte du commentaire, alors que ces textes sont envoyés séparément à la fonction d'affichage...?), et quand je l'ai changé il ajoutait tout le temps la ligne. J'ai remis le texte du text post exactement comme avant, et là il ajoute tout le temps la ligne, au lieu de ne pas l'ajouter la 1ère fois.

Donc en gros il y a des comportements pas consistants du tout dans mon code, dont je n'ai aucune idée d'où ils viennent, et qui n'ont aucune logique. o_o

Si vous voulez tester l'addin, le voilà (il faut monochromelib) :

main.c http://pastebin.com/QENDLAu0
fonts.h http://pastebin.com/LPe1QaAe

Si vous pouviez me trouver ce bug ce serait assez sympa svp parce que là je suis perdu, et c'est le seul bug qui reste, après j'aurai terminé l'addin
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 22/04/2016 20:11 | #


Bon, je m'excuse d'avance mais je n'ai pas lu en détail le code. Ayant vu des choses bizarres du même ordre avec WebCalc, j'ai peut-être des idées pour les problèmes d'algo :

Au niveau du text post : quand je ne mets pas un espace avant le >, ça met toujours le mot sur une nouvelle ligne.

T'es sûr que la longueur du dernier mot est calculée correctement ? Je me demande si le calcul de longueur ne dépasse pas le caractère '>'. Dans ce cas, l'espace forcerait le calcul à s'arrêter et renverrait le bon résultat.

Au niveau du 1er commentaire : il y a une ligne ajoutée à la fin, pour je ne sais quelle raison.

Ton algorithme de word wrap ne doit ajouter des fins de ligne que lorsqu'il y a encore du texte à afficher. Est-ce que voyant que la ligne est pleine, tu ne serais pas revenu à la ligne en incrémentant tes compteurs, pour arrêter ensuite le dessin en te rendant compte qu'il n'y a plus rien à afficher ?

J'ai l'impression que le dernier cas est sensiblement identique au deuxième.

Au passage ton code ne modifie pas les chaines de caractères, n'est-ce pas ? Bon, ben déclarer les en const char *, ça t'évitera des risques.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 22/04/2016 20:28 | #


T'es sûr que la longueur du dernier mot est calculée correctement ? Je me demande si le calcul de longueur ne dépasse pas le caractère '>'. Dans ce cas, l'espace forcerait le calcul à s'arrêter et renverrait le bon résultat.


Le calcul de longueur ne dépasse pas le caractère '>' sinon il serait affiché. En fait je déclare un char post[30000], donc logiquement il y a que des \0 dedans, ensuite je mets le contenu du string strCmt dans le post jusqu'à ce qu'il rencontre un '>'. Il appelle ensuite la fonction d'affichage, avec comme string post et comme longueur le nombre de caractères stockés.

Donc la fonction d'affichage elle reçoit "This is the text post kek.\0\0\0". À chaque espace elle calcule la longueur de chaque caractère après l'espace, jusqu'à rencontrer un autre espace ou un '\0'. Donc logiquement elle devrait traiter le \0 après le '.' comme un espace. Après le '.' la longueur est finie donc il n'essaie plus d'afficher.

Non, le truc qui m'embête le plus c'est que ce comportement n'est pas consistant. Si à chaque fois mon algorithme d'affichage me faisait ce bug alors je saurais que c'est ça. Mais là, quand j'affiche le text post, ça me fait un comportement différent que quand j'affiche un commentaire ou quand j'affiche la liste des posts. Par exemple on voit que le 3e commentaire est totalement normal alors que je n'ai pas mis d'espace avant le '>'. Mais le 2ème commentaire, je dois mettre un espace avant le '>' sinon il m'affiche tout le temps une nouvelle ligne. Et le 1er commentaire, je dois mettre un espace avant le '>' sinon il m'affiche tout le temps une nouvelle ligne, mais uniquement après avoir appuyé sur une touche (donc rappelé la méthode).

Donc le dernier cas est un peu similaire au deuxième, sauf qu'il fait exactement le contraire (l'un corrige la ligne, l'autre la rajoute), et le 2e cas n'apparaît pas à l'initialisation. C'est même pas mon truc de word wrap (comme on pourrait le penser) parce que quand je modifie le texte du text post, ça modifie le comportement des commentaires, parfois irréversiblement (cad: je modifie le texte, là la ligne apparait tout le temps, je le remets comme avant, le comportement ne se remet pas comme avant), et logiquement le text post ne devrait avoir absolument aucun rapport avec les commentaires vu qu'ils sont envoyés séparément à la fonction d'affichage.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 22/04/2016 20:45 | #


En fait je déclare un char post[30000], donc logiquement il y a que des \0 dedans

Non. Le tableau là n'est pas initialisé, il n'y a n'importe quoi dedans. Si tu veux l'initialiser, il faut le faire explicitement. Par chance, si l'on veut remplir un tableau de 0, il y a une solution facile :
char post[30000] = { 0 };

Attention, cela ne fonctionne qu'avec la valeur 0 ! Si une autre valeur est indiquée, seule la première case sera initialisée.

Du coup ce que tu dis dans le second paragraphe n'est plus vrai et tu retombes sous mon hypothèse.

Non, le truc qui m'embête le plus c'est que ce comportement n'est pas consistant.

Passe les pointeurs en const ! Vérifie l'initialisation de toutes tes variables et simule tranquillement l'algo dans ta tête.

Il y a quelque chose qui change d'un appel à l'autre. Contenu du texte, valeur de variable modifiée, argument différent ? Vérifie bien, il y a forcément quelque chose.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 22/04/2016 20:49 | #


Attention, cela ne fonctionne qu'avec la valeur 0 ! Si une autre valeur est indiquée, seule la première case sera initialisée.


...tu viens de régler tout mon problème o_o

(mais heu quand on fait char post[30000] c'est pas censé réserver 30000 octets qui sont donc initialisés à 0? pourquoi ça fait pas ça ?)

merci lephe
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 22/04/2016 21:13 | #


Non ça ne met pas à 0. Pour mettre à 0, tu peux créer une boucle qui parcours tout le tableau en mettant les valeurs à 0.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 22/04/2016 21:15 | #


Fife86 a écrit :
Non ça ne met pas à 0. Pour mettre à 0, tu peux créer une boucle qui parcours tout le tableau en mettant les valeurs à 0.

Oui, c'est-à-dire :
memset(array, 0, 30000);


Mais en fait l'initialisation à zéro existe déjà, sous la forme que j'ai déjà citée :
char array[30000] = { 0 };

Inutile donc de faire une boucle.

Zezombye a écrit :
(mais heu quand on fait char post[30000] c'est pas censé réserver 30000 octets qui sont donc initialisés à 0? pourquoi ça fait pas ça ?)

Parce que souvent il n'y a pas besoin d'initialiser les tableaux, donc on ne le fait pas parce que c'est coûteux.

Zezombye a écrit :
merci lephe

Je t'en prie
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 23/04/2016 20:44 | #


Bref donc maintenant l'affichage marche parfaitement, v'la une petite démo :



J'ai reçu le matos pour le bluetooth et la connexion marche parfaitement avec serial monitor, on peut faire la communication casio-téléphone

Par contre j'arrive pas à implémenter les fonctions pour le port série sur mon addin: le SDK ne reconnait pas les fonctions Serial_WriteByte, Serial_ReadByte, Serial_Open, etc, qui sont dans les sources de serial monitor. De plus je m'aperçois que sur la doc de simon lothar il n'y a absolument aucune mention de serial_writebyte ou serial_readbyte (par contre il y a mention de serial_open). Du coup je pourrais faire comment pour implémenter le port série (sachant qu'il me reconnaît pas non plus Serial_ReadNBytes etc)? Et aussi, elles sortent d'où les fonctions Serial_WriteByte/ReadByte ?
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 23/04/2016 21:04 | #


Encore une fois, il suffit de chercher pas si loin que ça : http://www.planet-casio.com/Fr/programmation/tutoriels.php?id=54

Ça fait une semaine que j'ai l'impression de renvoyer que des liens du sites dès que quelqu'un a un problème. Sérieusement, il suffit de chercher un peu avant de dire "j'y arrive pas…".

D'autant plus que le site a une barre de rechercher, et que si on tape "Serial_WriteByte" dedans, le tuto est le troisième lien.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 24/04/2016 13:53 | #


Ha j'avais oublié qu'il était là ce tuto :x

Donc sinon j'ai réussi à mettre tout le montage dans une boite qui tient dans ma trousse, ce qui était assez chaud parce que les fils ne s'emboitaient pas correctement, on a fini par mettre des fils de led dans les ports pour que les pins tiennent mieux. (et du scotch )




Du coup la communication casio/tel est totalement finie, grand merci à Darkstorm pour m'avoir aidé au niveau du montage
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 24/04/2016 17:34 | #


Ça commence à ressembler à quelque chose, c'est bien.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 25/04/2016 16:09 | #


Bien joué, ça avance c'est génial
C'est quoi le composant à gauche sur la deuxième photo ?
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 25/04/2016 16:24 | #


Un jack femelle je pense

Pour pouvoir brancher un câble facilement.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 30/04/2016 13:40 | #


Après quelques ptits essais, la réception a l'air de marcher aléatoirement (il voulait pas du tout afficher le string, je le réinstalle, maintenant il veut bien o_o) mais bon pour l'instant ça marche toujours, ptêt que j'avais installé une ancienne version.

Par contre pour la transmission (addin -> tel) ça marche à moitié et j'ai aucune idée de pourquoi. J'ai testé ces 2 méthodes là :

void sendSerial(unsigned char* code, int length) {
    int i;
    /*for (i = 0; i < length; i++) {
        Serial_WriteByte(code[i]);
    }
    Serial_WriteByte('\n');*/
    Serial_WriteBytes(code, length);
}


Elles produisent des caractères bizarres (du genre si j'envoie TestTransmission il affiche Tes?Q/\??????????) et ce n'est pas du tout exploitable. J'ai pensé au début que c'était le port RX qui était mal branché mais je pense pas parce que quand j'envoie avec Serial Monitor ça marche parfaitement, aucun caractère n'est mal transmis. Une idée ?
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Cakeisalie5 En ligne Ancien administrateur Points: 1959 Défis: 11 Message

Citer : Posté le 30/04/2016 14:13 | #


Un problème d'encodage, peut-être ? Les caractères sont encodés en quoi du côté de la transmission, et du côté de la lecture ?
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 30/04/2016 14:17 | #


Nope c'est pas un problème d'encodage vu que je reçois une partie des lettres et ce que je reçois est variable.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 30/04/2016 16:35 | #


L'add-in a l'air pas mal. Pourquoi avoir scrollé par blocs comme ça au lieu d'y aller tranquillement au pixel ?

Simplement, si Serial Monitor fonctionne... utilise ses sources
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 30/04/2016 17:25 | #


Le scroll par bloc, c'est parce que sinon c'est super lent et si je fais comme dans webcalc (c'est à dire n'afficher uniquement que les paragraphes à afficher) la vitesse fluctue ce qui rend la lecture assez chiante

J'utilise le tuto de Darkstorm c'est pour ça que c'est assez bizarre serial monitor utilise exactement les mêmes méthodes (même header et fichier .src). Sinon j'ai déterminé que c'est pas l'émetteur bluetooth le problème mais bien mon addin, en envoyant sur une autre calculette ça affiche toujours du wtf.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 01/05/2016 23:55 | #


Les deux méthodes affichent la même chose ? Est-ce que l'une des caltos est overclockée ?

Ajouté le 01/05/2016 à 23:56 :
Ah, et au passage c'est Dark Storm, Darks, Darkyz, Darky', mais pas Darkstorm
(Sauf sur LeekWars, et encore c'est en CamelCase, donc DarkStorm)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 02/05/2016 11:46 | #


Nope aucun overclock, et les deux méthodes affichent plus ou moins la même chose (enfin ce qui est affiché varie, mais c'est toujours du wtf).

Je pense qu'en fait la calculette envoie les octets plus vite que 9600/sec, ce qui explique pourquoi le premier octet est toujours reçu mais pas toujours les autres, je vais essayer en faisant Sleep(1) avant chaque envoi d'octet (comme dans Serial Monitor).
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Précédente 1, 2, 3, 4, 5, 6, 7, 8 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 144 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

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