1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Général Quel est donc le sketch qui se trouve dans mon UNO ?

Discussion dans 'Arduino' créé par gégé62, 3 Juin 2016.

  1. gégé62

    gégé62 Compagnon

    Messages:
    1 386
    Inscrit:
    26 Février 2013
    Localité:
    Harnes (Pas de Calais)
    Département:
    62440
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Bonjour,

    j'ai essayé de trouver un titre explicite à ce fil.

    J'expose le problème:
    Quand on met au point un sketch (programme), on en fait x versions, perso j'aime bien conserver les anciennes, je mets des indices et voilà. Et je fais moult essais, parfois en revenant sur une version antérieure....
    Comme je suis "foutoir", je n'arrive pas à noter de façon systématique le sketch que je téléverse, et si je suis un moment sans y toucher, je ne sais plus exactement ce qu'il y a dans mon UNO (surtout que j'en ai 5 ou 6).

    La plupart du temps ce n'est pas grave, on peut toujours téléverser le sketch qui nous intéresse maintenant. Mais ça heurte ma logique.....et il pourrait exister des cas où on aimerait savoir.
    Ne serait-ce que...: p...ain il marche bien celui-là, mais c'est lequel ???? avouez que c'est ballot....

    :P:P:P

    J'en arrive à mon idée. Il ne s'agit pas d'aller lire le sketch en hexadécimal (:rolleyes: ), mais de se donner un moyen, par programmation, de lire le nom du fichier sur le moniteur. On écrit dans le setup un bout de programme qui écrit ce nom (ou un code plus simple) dans l'Eprom, et ensuite un autre bout de programme qui en fait la lecture, et l'envoie avec Serial.print vers le moniteur.

    Si on téléverse un nouveau sketch, avec donc une autre référence, c'est bien automatiquement celle-là qui aura remplacé la précédente. Pour éviter d'écrire inutilement et trop souvent sur l'eprom, on utilise la commande qui ne réécrit que si c'est différent (faut que j'aille revoir la syntaxe...)

    La version (codée) du sketch s'affiche donc dès qu'on ouvre le moniteur....

    Je vais essayer, mais avant je préfère votre avis là-dessus.....
     
  2. scrachi

    scrachi Apprenti

    Messages:
    165
    Inscrit:
    20 Novembre 2014
    Localité:
    06
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Je sait pas si j'ai tout bien compris mais a priori ça semple compliquer car le programme compiler et charger sur l'eeprom, n'est pas humainement lisible donc le seul moyen serait de compiler tous les programme et ensuite de les comparer avec celui sur l'eeprom pour pouvoir définir le quel c'est.

    Pour tes version de développement, tu peut utiliser un logiciel de versioning pour gérer tout ça, tu en a plein un des plus connu est gitHub.


    Mickaël
     
  3. osiver

    osiver Compagnon

    Messages:
    4 116
    Inscrit:
    7 Septembre 2013
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Ben, vous définissez une constante avec le numéro de version. Puis vous envoyez sa valeur avec le serial.print, à la fin de setup() par exemple.
    À vous de modifier la valeur de la constante à chaque modification du sketch :wink:
     
  4. scrachi

    scrachi Apprenti

    Messages:
    165
    Inscrit:
    20 Novembre 2014
    Localité:
    06
    Quel est donc le sketch qui se trouve dans mon UNO ?
    La constante n'est pas une mauvaise idée, mais quand tu utilise un arduino en production, c'est très rare que tu ai ton IDE avec sa console derrière.

    Mickaël
     
  5. osiver

    osiver Compagnon

    Messages:
    4 116
    Inscrit:
    7 Septembre 2013
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Vrai mais on peut y connecter une interface FTDI (usb) et un portable.
    D'ailleurs je doute qu'un arduino soit utilisable en production, professionnellement, j'entends. :???:
     
  6. jpbbricole

    jpbbricole Ouvrier

    Messages:
    441
    Inscrit:
    26 Mai 2016
    Localité:
    Corsier-sur-Vevey (Vaud)
    Département:
    1804
    Quel est donc le sketch qui se trouve dans mon UNO ?
    @scrachi
    C'est pas nécessaire de trimballer l'IDE d'arduino.
    Un câble USB, un PC avec Hyperterminal ou beaucoup mieux le programme Terminal (ça ne s'invente pas!), gratuit et a tout ce qu'il faut pour développer sur port de communications, je n'utilise que ça depuis pas mal d'années.

    Bonne soirée.
     
  7. lion10

    lion10 Compagnon

    Messages:
    3 392
    Inscrit:
    7 Mai 2010
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Bonjour

    Pour de la bonne gestion de configuration puisque c'est de cela dont il s'agit il vous faudrait :
    -recopier systématiquement les sources dans un répertoire sauvegardé et noter le nom du répertoire.
    => Vous pourriez par exemple recopier les fichiers source (y compris les bibliothèques encore qu'on pourrait supposer qu'elles ne changent pas, mais en toute rigueur il faudrait le faire) en automatique. Il faudrait faire l'équivalent d'un fichier .bat tel qu'il existait sous dos avec en paramètre le numéro de version "Vx.Y". Ainsi tout serait recopié dans un répertoire du style "source version Vx.Y".
    -et aussi recopier le fichier exécutable ".hex" (pas sur de l'extension !) qui permet de programmer la mémoire programme de l'arduino !
    -associer sur un cahier ce nom de répertoire avec un numéro de version et le checksum.
    -noter aussi le numéro de version de l'IDE arduino au moins une fois, en supposant qu'il n'évolue plus.

    -mettre sous une forme de texte la version du style "const char * maversion ="version 1.0" puis l'afficher via un "seriat print " au démarrage.
    => Vous n'êtes pas à l'abris d'oublier de changer le numéro de version du logiciel, c'est pourquoi je pense qu'il faudrait afficher le checksum de la mémoire programme et le numéro de version. Ainsi si vous oubliez de changer ce numéro vous verrez au moins le changement de checksum.
    Il vous faut donc réaliser la somme de tous les octets de la mémoire programme.
    -autre :idea: : voir si via des outils intégrés il y a possibilité de mettre automatiquement dans le code une chaîne de texte avec la date et l'heure du pc.

    Il existe sans doute des outils de versionnage automatique mais je ne suis pas certain qu'il fonctionne avec l'environnement de programmation intégré IDE simplifié de l'arduino.

    Ps : il faudrait regarder dans les fichiers de sortie de IDE arduino, il y a peut être des fichiers texte du style ".log" qui permettrait de facilliter l'automatisation de cette gestion.
    cdlt lion10
     
    Dernière édition: 3 Juin 2016
  8. scrachi

    scrachi Apprenti

    Messages:
    165
    Inscrit:
    20 Novembre 2014
    Localité:
    06
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Oui quand je parle de production ce n'est pas de la prod professionnel mais pour définir quand l'arduino "accomplis la tache final pour la quel il a été utilisé". Sinon ça oblige toujours à avoir un ordinateur derrière qu'il y ai l'IDE Arduino ou tout autre logiciel
     
  9. gégé62

    gégé62 Compagnon

    Messages:
    1 386
    Inscrit:
    26 Février 2013
    Localité:
    Harnes (Pas de Calais)
    Département:
    62440
    Quel est donc le sketch qui se trouve dans mon UNO ?
    je ne sais pas, à mon tour, si j'ai bien compris vos réponses, mais elles ne me semblent pas correspondre à ce je voulais dire.

    Je connais assez peu de chose dans le monde de la programmation, des micros, du langage C, j'essaie de me de me débrouiller avec ce que je connais pour arriver à mes fins, et ne suis pas à même d'imaginer, encore moins de mettre en pratique, des solutions élaborée comme évoqué par Lion10.

    Je vais prendre un exemple concret pour m'expliquer:

    soit mon fichier [ Tachymetre_effet_hall_1.ino ] (il existe, j'en ai fait un sujet sur le forum, j'ajoute seulement ici un indice _1).

    Je voudrais écrire le nom de ce fichier dans l'eprom, tout simplement avec la librairie EEPROM, en utilisant
    EEPROM Update pour écrire dans l'EEprom le nom du fichier (si différent du nom déja présent)
    et
    EEPROM Read pour envoyer cette info sur le moniteur.

    Ces instructions seraient utilisées dans une fonction que je crée, qui ferait toujours partie de mon sketch de base. Je n'aurai pas à la ré-écrire chaque fois, il n'y aura que le nom de fichier à mettre à jour (voir *)

    Mais je crains que le nom de fichier soit un peu long et gaspille de la place dans l'EEprom (1000 octets seulement dans l'UNO). D'où l'idée de renommer chaque fichier sous une forme codée par exemple sur 2 octets, mais qui oblige à tenir un registre de correspondance.

    0x00 signifierait "projet tachymètre " / 0x01 " projet CNC" (je rêve :-D ) / 0x02 " projet métronome" etc....
    0x00 serait ma version de départ / 0x01 mon sketch en révision 1 / etc....

    donc ces correspondances seraient dans un tableau Excel, et si je passe à une version 2 de mon sketch "tachymètre",
    je laisserai le premier octet à 0x00, et je passe le second à 0x02

    Cela peut sembler une contrainte aussi difficile, mais je n'en suis pas sûr, et quand même c'est une méthode qui associe une information à une carte Arduino donnée et cela me semble important. A la limite, même avec un défaut de mise à jour, il y aura une info sur le projet concerné (en principe le premier octet donnera l'info "projet".

    Bien entendu une fois qu'on a retrouvé (sur le moniteur) le nom codé du sketch, puis avec le fichier Excel le nom en clair, je suppose que je sais le retrouver...!

    Je n'espère pas déclencher une vague irrésistible de supporters pour cette façon d'opérer :). Mais si je tiens parole, je vais le faire d'ici peu et j'essaierai de vivre avec un moment pour tester. Je dirai ce qu'il en est.

    (*)
    Il me semble que la façon élégante de procéder serait de créer ma propre librairie (utilisant aussi "EEPROM" bien sûr) de façon à n'avoir qu'un "include" à déclarer en tête, et mes deux octets à renseigner dans le setup. Mais déjà ça c'est pas évident pour moi, alors je le laisse pour plus tard...
     
    Dernière édition: 3 Juin 2016
  10. lion10

    lion10 Compagnon

    Messages:
    3 392
    Inscrit:
    7 Mai 2010
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Bonjour

    Une piste qui répond partiellement au besoin complet de gestion de configuration telle que je l'ai exposée puisqu'elle n'aborde pas la sauvegarde des fichiers source. Il vous faut utiliser le préprocesseur en mettant dans un fichier source des instructions suivantes en les associant comme il faut. Je viens de tester cela s'affiche bien.
    => Si vous n'avez qu'un fichier source vous mettez cela dans le source mais vous n'aurez pas le numéro de version de gérer. Il faudra en passer par une édition manuel avant compilation.
    Serial.print(__FILE__), Serial.print(" => Compilation A"), Serial.print( " la date suivante "), Serial.println(__DATE__);
    Serial.print(" A l'heure suivante "), Serial.println(__TIME__);
    Serial.print( "Numero de ligne pour info : "), Serial.println(__LINE__);

    Ci dessus cela affiche, à vous de modifier pour récupérer la chaîne de caractère du nom de fichier et la mettre en "const" comme cela elle est stockée dans la mémoire flash du micro automatiquement à chaque compilation.
    En résumé cette solution simple devrait faire ce que vous voulez :-D:-D, en plus vous n'avez pas à vous soucier de l'eeprom. Mais elle fait pas office à 100% de gestion de configuration. Mais mon discours n'était je l'admet pas adapté pour du logiciel amateur qui se veut être sans trop de contrainte.
    Ceci dit l'eeprom je la réserverais plutot pour y stocker d'autres informations en cours de fonctionnement, par exemple le nombre de tour comptés toutes les XX min à chaque fois dans une case différente de l'eeprom (évite d'écrire tjs au même endroit fréquemment) . Ainsi :idea: en laissant toujours votre arduino sur votre machine, vous pourriez calculer le nombre de tours exécutés pour lancer une opération de maintenance. A chaque extinction ce serait sauvegardé.
    cdlt lion10
     
    Dernière édition: 3 Juin 2016
  11. M4vrick

    M4vrick Ouvrier

    Messages:
    312
    Inscrit:
    12 Août 2015
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Je pense que tu cherches à faire bien trop compliqué Gégé.
    Pourquoi vouloir stocker en EEPROM ? Ce qui t'intéresse c'est de savoir quel sketch est chargé dans ton Atmega si j'ai bien suivi, pas ce qui est en EEPROM.

    Il suffit de prendre l'habitude d'ajouter au début du setup() après l'initialisation du port série un serial.print avec le nom et le numéro de version de ton projet.
    Quand tu démarres ton arduino tu auras la version qui s'affiche sur ton moniteur série.

    Je le fais systématiquement sur les projets où j'ai un écran, j'affiche la version sur l'écran pendant le setup.
     
  12. gégé62

    gégé62 Compagnon

    Messages:
    1 386
    Inscrit:
    26 Février 2013
    Localité:
    Harnes (Pas de Calais)
    Département:
    62440
    Quel est donc le sketch qui se trouve dans mon UNO ?
    Je viens de m'en apercevoir....en cherchant à faire ce que je décrivais..... Je me suis trouvé tout c.. ! Je pensais avoir contourné une difficulté, en fait elle n'existe pas, comme tu l'as dit. Merci !

    mieux vaut en :lol: ! en plus on y met le nom complet du fichier, c'est encore plus simple.

    et pardon pour le temps que j'ai fait perdre aux amis du forum....

    C'est marrant, j'avais posé cette question il y a un bout de temps sur le forum arduino, personne n'a pensé à me dire ça. Comme quoi l'usinage...
     
Chargement...
Articles en relation
  1. vibram
    Réponses:
    32
    Affichages:
    698
  2. JCS
    Réponses:
    12
    Affichages:
    536
  3. wika58
    Réponses:
    13
    Affichages:
    762

Partager cette page