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
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
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 02/05/2016 17:09 | #


Non, ça c'est au niveau interne que ça fonctionne : tant que le buffer de réception n'est pas rempli, tout devrait bien aller. Sachant qu'il fait 1ko pour la reception, t'as de la marge.

Et le baudrate n'influe que sur le nombre de ticks d'horloges pour la synchronisation (et, à forciori sur la résistance interne du câble, mais ça c'est largement négligeable à notre échelle).

Au niveau de la réception, tu gère le truc comment ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 03/05/2016 11:28 | #


C'est pas niveau réception que ca bug mais bien niveau envoi, ce que la calculette envoie est bien réceptionné, c'est juste que ça envoie n'importe quoi. En mettant serial monitor en mode hexa il y a bien un décalage de bit (les 3-4 premiers octets sont envoyés correctement, et après y'a un 1 ou 0 en plus qui sort de nulle part et ça décale tout).
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 03/05/2016 12:55 | #


C'est pas un faux contact au niveau des fils ? Entre deux caltos, SerialMonitor fonctionne bien ou pas ? Pour les buts c'est vraiment étonnant. Essaie de mettre deux bits de parité.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 28/05/2016 14:40 | #


Bon donc après 3 jours de travail intensif j'ai réussi à parser le json envoyé par reddit (le plus grand obstacle étant de loin l'arbre de commentaires que je dois convertir en format approprié, c'était assez chaud à trouver la solution), et donc maintenant la calculette peut se connecter à internet avec succès elle peut afficher les posts d'un petit subreddit (avec genre 5-6 posts).

Par contre je suis tombé sur un autre obstacle: la taille du buffer, en effet après 1024 octets d'envoyés ben la calculette reçoit plus rien du coup il faut que je mette en place un système d'envoi successif (l'appli android envoie 1000 octets, attend une réponse de la calculette qui avant d'envoyer la réponse stocke les octets et clear le buffer, l'appli renvoie 1000 octets, etc). Une fois que j'ai fait ça le projet sera quasiment terminé.

Comme je me suis rendu compte que je n'ai fait absolument aucune sauvegarde depuis le début du projet v'la le code :

Addin: main.c http://pastebin.com/qFeF6BiE
fonts.h http://pastebin.com/h0vy0shS

Appli: MainActivity.java http://pastebin.com/rk2Jr5dP

Vous pouvez aussi commenter sur la dégueulassité de mon code et de la manière dont je parse le json.

Donc le projet sera fini dans 2-3 jours normalement
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

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


J'y croyais pas à ton projet, mais là j'avoue que je suis impressionné
Bravo
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 29/05/2016 17:50 | #


Bien, t'as le droit de séparer un chouille le code du .c.
Genre faire un fichier qui contient les fonctions de transmission, l'autre d'affichage. Ça sera déjà plus propre et plus facilement maintenable.

Bon, après j'aime pas le camelCase, mais c'est mon avis personnel. x)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 31/05/2016 18:20 | #


Par contre j'ai un problème de mémoire et donc je m'adresse à ceux qui connaissent plus le C que moi

En fait je pourrais en théorie stocker jusqu'à ~40000 octets, mais pour l'instant je stocke les données reçues dans une variable globale. Etant donné que si je mets plus de 8192 octets de variables globales le sdk me dit que omagad la taille de la section B et R ne doit pas dépasser 8192 octets, je suis limité à un string de 5000 octets. Donc : comment je pourrais m'y prendre pour stocker dans un string de 40000 octets?

Aussi, j'ai ensuite besoin d'afficher les posts et les commentaires. Actuellement je fais un string de 30000 octets pour le post (le maximum c'est 40000 en plus donc c'est même pas assez), et 2000 octets pour chaque commentaire (maximum 10000, y'a des commentaires qui dépassent 2000). Alors évidemment 40000+40000 > 64000 donc comment je pourrais faire ça ? Même avec l'allocation dynamique ça marcherait pas si ? Et le string de 2000 octets que j'alloue à chaque commentaire, il est viré après son affichage ou il y en a un autre qui est généré à chaque fois ?

(aussi est ce que c'est possible de mettre une barette de 1 Go de ram sur la calto?)
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 31/05/2016 19:09 | #


Oulà, c'est confu. Pour stocker plus de 8192 octets, ben faut pas les déclarer en global
Si vraiment t'es obligé d'avoir accès à la mémoire de manière globale, tu créé un pointeur en global, tu l'alloue au lancement, et tu le libère à la fin.
Si après tu veux encore plus de RAM (récupérer la heap et la stack), tu créé un tableau très grand de manière locale, te récupère le pointeur dessus et tu le fout en global.
Pour le reste, le plus simple est de ne pas tout charger, mais de dialoguer avec le téléphone : « j'ai besoin du post principal, envoie-le moi », « J'ai besoin des 3 premiers commentaires », etc. Comme ça tu peux tout faire rentrer sans problème
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 31/05/2016 19:21 | #


Ouaip après discussion avec cake je vais faire ça, je vais envoyer 5000 par 5000 octets, et je vais faire qu'un appui sur shift demande les prochains 5000 octets. Après bon je sais pas si augmenter la taille serait super utile parce qu'après il y a le lag de l'affichage (et ça lag déjà assez avec 5000 octets )

Ajouté le 01/06/2016 à 21:47 :
Hmm, j'ai des bugs un peu bizarres. :/

- Dans l'application : en toute logique, lors de l'envoi d'un string entre 1000 et 5000 octets, l'application doit envoyer le string par paquets de 1000 octets, puis attendre la commande "ak;" de l'addin. Par contre l'addin affiche le string (de ~2000 o) sans problème, mais l'application n'affiche aucun "ak;" alors qu'en toute logique l'addin en a envoyé un. Et j'affiche absolument tout ce que l'application reçoit via le bluetooth, donc si l'application prend en compte le ak; elle doit l'afficher.

- Dans l'addin : pour une raison qui m'est encore inconnue ça me fait un "TLB error" quand j'essaie d'afficher une page de commentaires, peu importe la longueur du string envoyé (<1000, >5000...). Je ne sais absolument pas la raison de ce TLB error. Si on regarde le code, en particulier la méthode getPost() ça envoie avec succès la commande "p<numéro post>;", c'est bien le bon numéro du post, donc ça planterait à la méthode getSerial() ou dispCmt()... mais pourquoi? Si ça peut aider, dans le TLB error c'est "TARGET = 00000000, PC = 00000135". Je sais absolument pas ce que ça signifie mais bon.

- Dans l'application : pour une raison inconnue ça envoie le string 2 fois, donc soit le string est stocké 2 fois, soit il l'envoie 2 fois. Dans les 2 cas ça devrait pas poser de problème de toute façon, mais bon je signale quand même ce bug, au cas où il aurait un rapport avec le précédent (même s'il y en a apparemment aucun) bug résolu, en fait j'appelais la méthode sendString() 2 fois

Donc si on résout le 2e bug mon appli sera (presque) fonctionnelle

Ajouté le 02/06/2016 à 20:48 :
Bon hé bien j'ai résolu les bugs, le premier c'était tout simplement du code de merde (je l'ai modifié plusieurs fois) :

if (messageAEnvoyer.substring(progTotale, progTotale+1000) > 1000)


Alors je sais toujours pas comment l'addin fait pour recevoir plus de 1000 octets d'un coup sans clear le buffer de réception entre deux (et il m'affiche le message parfaitement), p'têt que c'est un addin divin.

Le deuxième bug ben j'aimerais bien savoir ce qui le causait en fait. J'ai ajouté plusieurs trucs de débug (afficher un string + getkey) à différents endroits dans le code, au bout d'un moment ça a marché, je ne sais absolument pas pourquoi, j'ai viré les trucs de débug et ça marche toujours. Je vais supposer qu'une force maléfique se cachait dans l'addin et que l'exorcisme à coup de débug l'a purgée.

Après du débuggage sous eclipse (parce que sous android on peut pas faire le system.out.println donc bonne chance pour débugger) eh ben j'ai enfin réussi à transmettre un string de plus de 5000 octets

Ce qui veut dire : ce projet est (presque) fini ! Encore une fois merci à Lephé, Dark Storm, et aux autres qui m'ont aidé, ce n'aurait pas été possible sans vous

Il me reste :
- Sélection de subreddits (parce que je vais pas m'amuser à changer la commande dans le code source à chaque fois)
- Design d'une icone
- Quelques trucs de design notamment au niveau des commentaires pour mieux les distinguer
- Boutons page haut/page bas pour scroller encore plus vite
- Optimisation de l'affichage (à tester)


Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 02/06/2016 21:24 | #


Lorsqu'il lit un octet dans le buffer, il vide cet octet du buffer. Du coup si tu lis plus vite que tu ne reçois de données, y'a pas de problèmes

Tu nous fera une petite vidéo ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 09/06/2016 20:01 | #


Bon y'a un ptit problème au niveau du montage : les fils de réception arrêtent pas de se barrer (normal ils sont reliés au diviseur 2.5mm par du scotch, avec des fils de led dedans pour caler les pins parce que les pins du diviseur sont plus petits et ne tiennent pas bien dans les fils). Ca marchait super parce que je le laissais chez moi mais là je l'ai emporté au lycée (pour le montrer à mon prof de SI) et le scotch s'est barré, et là je peux pas trop faire de tests parce que je suis obligé d'appuyer en permanence pour arriver à transmettre (et encore ça marche à moitié).

Donc il me faudrait une solution pour récupérer le RX, TX et GND du câble (sans le dénuder parce que bon je veux quand même le garder pour le transfert entre calculettes) mais en ayant une solution pas faite à la McGyver et qui donc ne risque pas de s'enlever.

Le diviseur que j'utilise c'est http://www.selectronic.fr/embase-jack-2-5mm-femelle-ci-stereo.html , par contre j'ai trouvé aucun fil fait pour ce type de pin (à noter que, s'il existe un fil fait pour ces pins, il doit ensuite comporter un port male ou femelle compatible pins arduino, pour se brancher sur le HC-06).

Une solution ? Bon pour la vidéo j'essaierai de la faire si j'arrive à remettre en place le truc de réception, j'aimerais bien la faire avant la prochaine rdp
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 09/06/2016 21:10 | #


J'avais trouvé ça je sais plus où, un adaptateur femelle 2.5mm. Ça fonctionne bien. Mais faut avoir un peu de chance pour en trouver un…
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Xxdarkxx_64 Hors ligne Membre Points: 147 Défis: 2 Message

Citer : Posté le 12/06/2016 19:19 | #


Je sais pas si ce Bug n'arrive qu'à moi mais dans le Sujet, l'URL à un Problème on dirait que y a pas [/url] c'est moi qui Bug ou bien ?
Je programme quoi en c'moment déjà ? Ah oui The Buggy Cloning Machine (désolé le voyage dans l'temps ça ramollit le cerveau )

Un site chelou de Totoyo a écrit :
olerontentasesennéberlariprent


Merci pour ce mot vraiment bizarre Totoyo je vais l'utiliser tous les jours je crois
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 12/06/2016 19:20 | #


Non, c'est l'url autolinker. J'ai corrigé des bugs il y a quelques temps, mais d'autres problèmes sont apparus...
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Qihai1314 Hors ligne Membre Points: 14 Défis: 0 Message

Citer : Posté le 07/10/2016 07:33 | #


Je suis continuaient de codes de l’immigration g1a fx suffixe membres — document 9860GII est la règle et la mise en place 9860GIISD fx à tenir dans le menu BaoCuo éjection comme suit: après guichet System E6DD2136 PC = = indications incorrectes 081016AC horizon, le bon fonctionnement et peuvent 9860SDK qu’est-ce que cela signifie la première!
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 07/10/2016 07:35 | #


Selon Eddy Malou il faut nucléariser tes rollers, cherche un tutoriel sur internet.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 07/10/2016 07:42 | #


Vu le pseudo, c'est un type de Cncalc qui utilise un logiciel de traduction pour passer du chinois au français. Le plus dur c'est de retrouver le sens originel du message.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 08/10/2016 15:17 | #


Qihai1314:
You should speak in English, it makes it easier for us to understand (and translators probably work better with English). If I understand correctly, you're having trouble with migrating a g1a file. It looks like you're facing a « System ERROR!! ». You might want to try this tool : https://tools.planet-casio.com/SH4compatibility/
Hope it helps.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Qihai1314 Hors ligne Membre Points: 14 Défis: 0 Message

Citer : Posté le 09/10/2016 03:09 | #


I'm sorry, but it's hard to understand the last time we spoke.@Lephenixnoir Thank you very much for the tools provided! Solved the problem, awesome! @Zezombye Your Bluetooth transmission is successful? I only read the code, the hardware HC-06 Bluetooth chip has not been bought, this is a very interesting experiment, I am very interested in.
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 09/10/2016 06:23 | #


It works, I edited the topic with the video However to get the signals from the 3-pin cable you should not do what I did because the cables are slippery (and tape only gets you so far). If you actually want to use it in class, you should instead solder the bluetooth chip to the calculator (Xavier59 did this and it works), but if you only want to do it for fun then you can use what I used.
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 86 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