Pages: [1] 2   Go Down
Author Topic: [Tuto] Implémenter un protocole de communication  (Read 13261 times)
0 Members and 1 Guest are viewing this topic.
Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir

Ma semaine de congés étant finie, j'accouche de ce tuto.
L'idée m'en a été donnée par quelques discussion que j'ai eu sur le forum cette semaine, notamment avec HadesDT.

Le sujet est l'implémentation propre d'une messagerie, généralement sur liaison série ou dérivée.
Propre ça veut dire claire, maintenable, extensible, résistante aux erreurs de transmission.

Les premiers chapitres, notamment le n°2 est un peu théorique et on peu le sauter dans une première approche. Toutefois, il est préférable d'y revenir un peu plus tard. Les patients pourront le lire dès le début.

Le chapitre 3 propose l'implémentation, avec code source complet, d'un protocole ASCII qui peut s'appliquer à la liaison série (Serial de base ou Serial2/3.. sur Mega ou même SoftSerial), ou bien a n'importe qu'elle classe de stream dérivée de la classe Arduino Stream.

Si cela intéresse du monde, j'envisage un chapitre 4 sur l'implémentation d'un protocole binaire cette fois.

Le code n'implémente que le coté esclave sur Arduino. En fonction de l'intérêt je pourrais proposer aussi le code du maître sur Visual C# ou bien une version du maître sur Arduino pour une communication Arduino/Arduino.

Si quelqu'un souhaite contribuer avec un exemple maître en Processing, il est le bienvenue.

L'ensemble est sous licence Creative Commons CC BY-NC-SA 2.0 pour la doc et GPL v2 pour le code.

------
Historique
v1.0   22 avril 2012      Version Initiale
v1.0a 22 avril 2012      Avec le code corrigé cette fois smiley-wink ==> télécharger ici si le lien du forum ne marche pas

* Implémenter un protocole de communication v1_0a.zip (47.72 KB - downloaded 424 times.)
« Last Edit: January 20, 2013, 04:50:52 am by barbudor » Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Made in Belgium
Offline Offline
God Member
*****
Karma: 0
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yop Yop,
Sympa comme tutoriel, on y vois bien l'intérêt d'implémenter un protocole de communication et qu'il ne suffit pas d'envoyer 1 octet pour ce faire comprendre en tout sécurité.
Ça peut paraitre évident à la lecture du tutoriel mais peut être bien préciser aux début de celui-ci qu'une communication ce fait par octet et pourquoi tu découpes certaines variables en 2,4, ... , octets ?
Enfin c'est juste pour bien dissiper les doutes éventuels aux départ du tuto, comme c'est la première chose qu'ils tenteront :  envoyer un int, double, etc, sur le port série qui évidement ne correspondront pas à l'autre bout de la ligne.
Sinon quand à la qualité du tutoriel je donnerais 9/10, j'aurais pas fais mieux vu la complexité d'essayer de faire comprendre ce qui nous parait évident.  smiley-wink

ps: Peut être un petit pdf à la place d'un doc ?
« Last Edit: April 23, 2012, 07:12:07 am by osaka » Logged


France S-O ou exil en IDF
Offline Offline
Edison Member
*
Karma: 25
Posts: 1904
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Peut être un petit pdf à la place d'un doc
Non parce qu'un "doc" ou un "odt" on peut l'éditer pour son usage personnel et c'est bien pratique.

Par contre le "zip" m'a fichu le souk sous debian testing -> fichier zombie.
Est-ce l'accent et les espaces dans le nom du fichier ?
Pourrais-tu publier la prochaine édition sans zipper ni accent ni espace, merci.
Pour la taille sur le serveur les fichiers odt sont déjà compressés.
"odt" est maintenant géré par Microsoft. Surtout pas de "docx", merci.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci, c'est vraiment tres clair et tres instructif
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas PDF, DOC çà restera. License CC donc comme pour le GPL, c'est de la doc "Open Source". C'est pas Arduino Spirit çà smiley-wink
ODT bien qu'un format "ouvert" n'est pas assez répendu pour les débutants. Donc comme les solutions libres savent lire du DOC, no problemo.
D'ailleurs cette donc n'a pas été rédigée vace M$ Word mais avec TextMaker2008, un clone allemand de Word2003 qui marche du feu de Dieu sur un netbook alors qu'on ne peut pas en dire autant ni de OpenOffice (RIP  smiley-cry) ni de LibreOffice qui sont toutes 2 aussi lourdingue que leur frangine de Redmond.

Je vais regarder pour les histoires d'accent, mais je préfère que la distribution reste sous la forme de ZIP pour que code + doc restent ensembles.
Si je commence à me mettre à Github, je suis pas sur que les débutants s'en sortiront  smiley-grin

Osaka, tu pourrait revenir vers moi avec plus de détails sur tes commentaires. Je ne suis pas sur de comprendre ce que tu voudrais que je modifie.

Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3026
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Moi aussi sur Ubuntu j'avais un nom de fichier bizarre à cause de l'accent. Mais j'ai réussi à l'ouvrir.

J'ai trouvé ce doc de très bonne qualité. Très clair et bien documenté/argumenté.

Merci.
Logged

SCY CHAZELLES
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello,

Super doc !,
elle arrive à point pour moi , je suis en plein dedans,
arduino (Teensy) en esclave et µLCD43PT 4Dsystem GFX en maitre
le Teensy execute certaines taches en fonction des évennement générés par le touch panel
notamment l'envoi de datas via   I2C vers un chip Si570, cependant je prévois également
pour l'arduino de piloter l' affichage lors d'action sur un encodeur ou bien de boutons poussoirs
donc il me faut du bidirectionnel aux niveaux des commandes
Cordialement,
f1apy
Logged

Made in Belgium
Offline Offline
God Member
*****
Karma: 0
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Osaka, tu pourrait revenir vers moi avec plus de détails sur tes commentaires. Je ne suis pas sur de comprendre ce que tu voudrais que je modifie.

Pas vraiment besoin de modifier, c'est une simple suggestion.
Peut être une précision à mette en début du tuto pour les débutants vraiment débutant qui on du mal à visualisé le fait qu'une transaction ce fais octet par octet et non une variable (de plus d'un octet) entière d'un coup.
D'un côté ça voudrait dire qu'ils ne savent pas ce qu'est un octet  smiley-sweat.
Enfin de toute façon on s'en aperçois assé rapidement dans ton tuto donc là c'est moi qui en fais un peux trop sans doute  smiley-kiss (et pourquoi je n'en fini pas avec mon tuto sur les pointeurs  smiley-sweat), c'est juste qu'on rencontre de temps en temps la question: "Pourquoi lorsque j'envoie un float avec mon arduino j'ai 4 entier de l'autre côté ?", donc j’anticipe .
Sinon dans ça globalité le tuto est parfait, c'est de l’excellent travail.  smiley-wink
Logged


0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Version linux.

Effectivement, l'accent ou le codage du "é" est trés mal géré sous linux (UTF8). seul mc (alias midnight commander) le supporte.

@+

Zoroastre.

* Implementer un protocole de communication.tar (160 KB - downloaded 47 times.)
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Super documentation. Merci. Je vais l'utiliser pour remplacer la bidouille de protocole que j'avais implémenté dans mon projet : non seulement les communications seront mieux gérées (timeout, ...) mais en plus ça aura de la "gueule"  smiley

Encore merci.

A+

Philippe.
Logged

Moselle (FR)
Offline Offline
God Member
*****
Karma: 6
Posts: 943
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Bravo Barbubor, toujours aussi efficace.
@+
Icare
Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Offline Offline
Full Member
***
Karma: 0
Posts: 101
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Super tutoriel merci
Par contre impossible de lire le doc (même sans accent) sur Android avec officesuite er kingsoftoffice
Logged

- 1 mega 2560
- 1 Raspeberry Pi (en pré-commande)
- Quarante douze PC
- beaucoup de volonté, pas beaucoup de temps.
- Ma religion : OpenSour

SCY CHAZELLES
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello Barbudor,

super, mais j'ai un petit pb , lorsque que j'ouvre le doc avec word µ$, il me manque le diagramme du protocole de réception,
y a pas moyen d'avoir la doc en pdf ? ce serait bien mieux et on s'affranchit des pb de TT de Txt, sinon avec quel soft il faut que j'ouvre le document ?
Cordialement,
Jacques
__________________________________
3.3.3.   L'algorithme de réception
C'est sur l'algorithme de gestion de la réception des messages que porte la difficulté de l'exercice. Voici l'algorithme en question sous la forme d'un diagramme :

<<< INSERER DIAGRAMME RECEPTION >>>

___________________________________________
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En fait, tu as le document dans son entier

j'ai pas encore fait le diagramme  smiley-roll  smiley-sad-blue
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

SCY CHAZELLES
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-mr-green hi,

bon je vai essayer de regarder le code pour comprendre, mais le c++ n'est pas ma tasse de thé  smiley-eek-blue
merci quand même, bonne journée
Jacques
Logged

Pages: [1] 2   Go Up
Jump to: