Verification

Bonjour a tous,

cela fait déjà 2 mois que je travaille sur ce projet de gestionnaire de ronde pour dôme vidéo et ça touche à ça fin, je demande maintenant à tout les pro de ce forum si il y en a un qui ce sentirai de getter un coup d’oeuil à mes deux programmes, je m’explique, tout fonctionne et je n’ai aucun souci mais je vais bientôt passer une soutenance et j’aimerai que quelqu’un de vraiment doué me dise si je n’ai pas fait des chose complètement stupide que je n’aurais pas remarquer et qui ne me choquerai plus vue le nombre d’heur passée dessus…

Donc j’en appel au grand manitou du ARDUINO si quelqu’un ce sent de getter un coup d’oeuil j’attend vos conseil ! :slight_smile:
merci d’avance !

ps : programme en PJ.

Skizo !

assistant_dome_v1_6.ino (19.6 KB)

regi_v1_6.ino (46.6 KB)

Personne n'a envie de me montrer mes erreurs ? :(

C’est à dire que dans la journée on bosse on a pas toujours le temps d’analyser 1400 lignes comme ça.

Je n'ai pas pu regarder à fond c'est juste une lecture rapide des sources. Je peux avoir mal compris certains passages.

Remarques générales. Ton orthographe n'est pas toujours très bonne. Cela donne une mauvaise image de ton travail. Et les commentaires sont moitié en français moitié en anglais.

Ton code est à mon sens insuffisamment commenté. D'ailleurs s'il était bien commenté je pense que l'erreur ci-dessous aurait été vue.

Dans regi_v1_6, dans loop Gestion du temps Tu incrémentes les secondes, tu testes si secondes >59 pour incrémenter les minutes et avant d'avoir vérifié si les heures changent tu envoies la mise à l'heure à tes modules. Donc imaginons qu'il est 13h59m59", tu fais +1s donc tu entres dans le if, secondes passe à 0 tu incrémentes les minutes donc il y a 13h60m0" dans tes variables tu envoies à tes modules une mise à l'heure.

En fait les tests sur minute et heure devraient être inclus dans le if avant l'émission de la mise à l'heure des modules.


Il y a des portions de code qui se répètent plusieurs fois. Il aurait sans doute été mieux d'en faire des fonctions car cela limite les risques d'erreurs. Et cela rend le code plus facile à lire.

Ton loop fait pratiquement 300 lignes. Normalement un bloc de code ne devrait pas excéder une vingtaine de lignes. Les gros blocs de code sont durs à lire et sources d'erreurs. Leur taille les rend difficile à tester.


Dans assistant_dome, "reception UDP paramettre, commande dôme vidéo, appel présence " Il y a un gros if avec des réception de paquets les uns à la suite des autres. Il n'y a aucun test sur la validité des données reçues. Que se passe-t-il s'il y a une erreur de réception? Je ne vois aucun hors-temps dans cette partie. Que se passe-t-il si tu ne reçois rien? Tu dois certainement rester bloqué dans ton if jusqu'à la fin des temps et ton applicatif et complètement arrêté.

Je ne vois aucun hors-temps dans cette partie

Es-tu Québécois ? Je n'ai jamais vu quelqu'un le dire comme cela ;)

Sinon, pour reprendre ce que je viens de dire à quelqu'un d'autre dans un autre sujet : N'oublie pas la loi de Murphy. Si quelque chose peut mal se passer, ca se passera mal forcément le jour où tu t'y attends le moins. Le jour de la soutenance par exemple ! Donc : - Toujours prévoir prévoir des codes d'erreur si quelque chose peut mal se passer - Toujours tester les codes de retour pour s'assurer que tout s'est bien passé - Toujours prévoir le "else" si çà pu mal se passer et ne pas continuer le traitement sur des données erronées - Une liaison de communication perds toujours des octets ou des paquets - Une liaison de communication transmet toujours un jour ou l'autre des octets faux - L'utilisateur envoi toujours les commandes dans l'ordre qui te fait planter - Les rayons cosmiques aussi XD

En plus des points relevés par fdunews qui sont l’essentiel, quelques remarques complémentaires pour le futur :

  • Evite de mélanger 2 choses qui n’ont rien à voir : la gestion de l’heure, c’est la gestion de l’heure et la communication avec un autre équipment c’est de la comm.
    Un module de gestion de l’heure peut lever un évenement qui est ensuite traitée par le module de communication.
    On ne devrait donc pas voir des comm UDP dans la gestion de l’heure

  • En comm on sépare aussi le moyen de communication (dans ton cas UDP) de la gestion des contenus (messages).
    La partie qui gère la messagerie de devrait pas se préoccuper du moyen de transport. Cela permet de faire évoluer l’un indépendamment de l’autre.
    par exemple si un jour tu veux porter cette appli sur des modules qui utilisent Xbee et des modules Wifi, les 2 codes sont trop imbriqués pour
    permettre un portage et une maintenance simple

Et un truc simple : passe ton code dans un “beautifier” genre uncrustify pour réaligner les indentations.
(renomme le ino en cpp avant pour qu’il le reconnaisse)

Bon courage pour ta soutenance.

barbudor:

Je ne vois aucun hors-temps dans cette partie

Es-tu Québécois ?

Non Ile-de-France (94 est), France

Je n'ai jamais vu quelqu'un le dire comme cela ;)

un timeout quoi ;)

J'avais compris XD Mais ça fait très Québécois cette traduction mot-à-mot.

barbudor: J'avais compris XD Mais ça fait très Québécois cette traduction mot-à-mot.

bonjour [1/2 HS] Pour t'amuser les jours d'hiver pluvieux :grin:

http://franceterme.culture.fr/FranceTerme/recherche.html

Bonsoir, alors d'abord merci pour votre temps passer sur mon code, tout d'abord:

Pour les fonction il est vrai que j'ai fait le "cochon" avec un code bien long :s Pour les commentaire je vous rassure ça c'est ceux que j'ai fait juste pour vous je contait les perfectionné encore pour la soutenance :blush: Pour l'orthographe je déteste tout simplement ça et je fait des énorme effort sur ce forum pour pas vous pourrir avec mes fautes mais c'est mon pire cauchemar ^^ Pour la partie communication il est vrai que mon énorme paquet UDP est terrifiant et pas vérifié mais bizarrement je n'ai jamais eu une erreur ou un dysfonctionnement... Oo mais ce qui me rassure c'est de me dire que cette envoie ce fait après un clique donc au pire des cas le technicien cliquera une seconde fois ^^' Pour ce qui est de l'envoie avec le temps etc oui il faut que je retouche ça merci de me l'avoir fait remarquer Pour la partie retour d'erreur etc c'est vrai que j'ai rien mis en place mais je doit avoué que je ne pense pas qu'il aurais été possible de le faire vue que mon programme est tellement rikrak que parfois je rajoute une ligne de code toute bette et plus rien ne fonctionne donc j'évite la urcharge

Merci barbudor mais je suis confiant j'ai fait beaucoup de chose donc il vont être intéressé puis il ne farfouille pas trop le code donc ça ^^ mais merci pour l'info pour la mise en page j'irai tester ça des que internet sera revenu a mon bureau -__-

Mais moi ce que j'attendais le plus de vous c'était de simplifier des fonctions comme quand je prend un int pour le décomposer en char[] avec une technique de langage C ou d'autre truc que je fait qui a mon avis sont simplifiable.. :s

Mais merci je vais essayer de faire une version avec fonction et séparation des partie comme com ronde heure etc, merci de vos conseils à tous :)

Skizo !

skizoh: Pour l'orthographe je déteste tout simplement ça et je fait des énorme effort sur ce forum pour pas vous pourrir avec mes fautes mais c'est mon pire cauchemar ^^

Copaing :grin: , me sent moin seul :sweat_smile:. (encore heureux que j'ai mon correcteur pour le vocab, reste la grammaire :*)

Sinon en regardant vite ton code (qui est assé propre niveau indentation), c'est clair qu'il manque cruellement de commentaire pour s'y retrouver et connaitre le but de tes portions de codes :~. Et comme bardu l'a dit, supprime au maximum les dépendances.

lol oui copaing !! ^^

et j'ai pas bien compris cette histoire de dépendance? tu entend quoi par la?

Sinon oui niveau commentaire il est clair et net qu'il sont insuffisant, moi ce que je voudrais c'est qu'on me simplifie mes démarche d'adaptation de variable genre char vers int int vers string int vers char etc.. parce que moi c'est ma première expérience en C++ après le dynamique C ( un truc pourris pour les µC RABBIT ^^) donc je fait encore beaucoup de chose a "l'ancienne" je dirais comme si j'était toujours C donc voila :s

sinon merci de votre aide à tous, je vais essayer d'arranger ça des lundi =)

Skizo !

Cela veut dire de séparer les fonctionnalités qui n'ont pas à être ensemble. Comme gestion de l'heure et communication avec les modules Ou format des messages et transmission par UDP.

Tu crée de l'inter-dépendance entre des parties de code qui gagneraient à être séparées pour des raisons de lisibilité et de maintenance ultérieure du code.

ok ok tout a fait d'accord avec vous, mais ce qui m'embête c'est vraiment la place, ces deux programmes vont sur un ARDUINO ethernet et la place n'est plus un lux que j'ai, du coup mes possibilités sont assez réduite :s c'est pour ça que je voulais votre aide, j'ai 32K de mémoire et mes prog sont proche des 28 29k et en générale des que je dépasse les 30K ça plante :s donc dur de faire des choses propre qui a mon avis prendrais plus de place, après vous me direz surement prend en un plus gros mais vue que le prix est ma première contrainte je ne peut pas :s des idées? ^^

Skizo !