Téléversement impossible,

Bonjour à toutes et à tous,

Jusqu'à ce matin, tout fonctionnait bien et puis pour un nouveau téléversement, cela ne se fait plus.

le message est le suivant :

Binary sketch size: 67 090 bytes (of a 258 048 byte maximum) - 25% used
avrdude: ser_open(): can't open device "\.\COM2": Accès refusé.
avrdude: ser_drain(): read error: Descripteur non valide
processing.app.debug.RunnerException: Problème de téléversement vers la carte. Voir http://www.arduino.cc/en/Guide/Troubleshooting#upload pour suggestions.

  • at processing.app.debug.BasicUploader.uploadUsingPreferences(BasicUploader.java:126)*
  • at processing.app.Sketch.upload(Sketch.java:1649)*
  • at processing.app.Sketch.exportApplet(Sketch.java:1608)*
  • at processing.app.Sketch.exportApplet(Sketch.java:1580)*
  • at processing.app.Editor$DefaultExportHandler.run(Editor.java:2408)*
  • at java.lang.Thread.run(Thread.java:619)*

Je suis sous Windows XP SP3.

Après vérifications, dans les menus d'Arduino, les valeurs sont les bvonnes :

  • sytème : mega 2560 -> OK
  • port série : COM2 -> OK
  • le sketch se compile sans problème
  • des essais avec d'autres sketches fonctionnels ont le même problème
  • PC rebootés plusieurs fois
  • sur la platine Arduino, le sketch qui y est implanté fonctionne correctement

rien n'y fait

Si vous avez des idées ...

Merci par avance.

Pierre

Tu peux poster le code du programme actuellement dans la MEGA ? (Pas celui que tu veux mettre hein, mais celui que que tu dis implanté et fonctionnel)

Bonjour,

C'est un problème de port série. Soit quelque chose utilise le port série en même temps que toi, soit tu as un problème avec les drivers.
Va dans le gestionnaire de périphérique voir ce qu'il dit au niveau des drivers.

Il y a le sketch et des bibliothèques que j'ai écrites pour tout comprendre, c'est assez lourd.

Mais surtout, non que je ne veuille pas donner ces sources, mais je n'en vois pas la pertinence, car quelque soit le sketch que je veux téléversé, le problème est le même.

Par ailleurs, j'ai un autre module qui tourne avec un autre sketch et que que viens d'essayer au téléversement : cela ne fonctionne plus avec le même message, sauf que cette fois-ci c'est sur le port COM4 (qui est le bon port de ce module).

Cela semble dédouaner les modules et être un problème côté PC, non ?

Merci de votre aide.

Pierre

ChPr:
Cela semble dédouaner les modules et être un problème côté PC, non ?

Vu l'erreur le problème ce situe au niveau du PC et des ports séries.
Vérifie les drivers et aussi qu'aucun programme n'utilise les même ports séries en tache de fond.

J'ai réinstallé le driver : même problème.
Que dois-je vérifier au niveau des drivers et comment voir qu'un autre programme utilise les mêmes ports.

NOTA le problème est arrivé d'un téléversement à un autre. Aucune modification n'a été faite entre ces deux téléversements.

Merci de votre aide.

Pierre

Tu aurais un autre PC sous la main pour tester avec la même carte ?

J'ai.

Je viens d'y installer Arduino 1.0.5 (alors que sur le mien c'est 1.5.2) et j'ai fait le test avec des examples basiques. Cela n'a pas fonctionné du premier coup. J'avais le même genre d'erreur. En insistant, cela s'est mis à re-fonctionner. Puis j'ai essayé avec mon dernier sketch : plantage sur les deux cartes !
J'ai alors essayé avec un sketch proche de mon dernier et, après quelques messages du genre "port déjà occupé" et en insistant, c'est reparti.

Ah !

Retour à mon PC. Mêmes essais, mêmes fonctionnements et plantages.

La seule différence entre le sketch qui fonctionnait et le nouveau est l'introduction de l'instruction "strcat" ou la dimension du buffer de destination avait une dimension de un de plus (pour le zéro terminal) que la somme des chaines que j'y concaténais. A mon sens, cela n'aurait pas dû poser de problème.

J'ai augmenté la taille de ce buffer et tout est rentré dans l'ordre. Ouf !

Pour autant :

  • c'est quand même fort de café que le dépassement de taille (que je ne croyais pas dépasser) d'un buffer entraîne non pas un plantage à l'exécution, mais un plantage au téléversement en affichant qu'il y a un problème de port COMxx
  • je ne comprend pas pourquoi la taille de mon buffer était mauvaise.

D'autre part, suite à mes essais sur l'autre PC, les affectations de N° de port de chaque module ont changé. Qu'est-ce qui détermine ces valeurs et où est-ce stocké ? Apparemment dans le module ?

Merci de votre aide.

Pierre

ChPr:
Mais surtout, non que je ne veuille pas donner ces sources, mais je n'en vois pas la pertinence, car quelque soit le sketch que je veux téléversé, le problème est le même.

ChPr:
Par ailleurs, j'ai un autre module qui tourne avec un autre sketch et que que viens d'essayer au téléversement : cela ne fonctionne plus avec le même message

Pas mal, tu t'es contredis dans le même message :slight_smile:

Mon idée première était un bon vieux serial.print() sans delay(), et c'est pas la première fois qu'on voit ça. Un sous dimensionnement des variables peut très bien expliquer ton problème, le programme se mettant à écrire sur des secteurs mémoires "imprévus". Ce genre d'erreur a des effets totalement imprévisible, donc tout peut arriver comme planter la liaison série ...

B@tto:
... Pas mal, tu t'es contredis dans le même message :slight_smile: ...

Je ne dois pas être bien réveillé car je ne vois pas où est la contradiction :astonished: . La synthèse de ces deux phrases dit simplement que quelque soit le sketch chargé et quelque soit le module utilisé, le chargement de mon nouveau sketch provoque un plantage. Mais bon, je ne cherche pas à polémiquer :wink: .

B@tto:
... c'est pas la première fois qu'on voit ça. Un sous dimensionnement des variables peut très bien expliquer ton problème, le programme se mettant à écrire sur des secteurs mémoires "imprévus". Ce genre d'erreur a des effets totalement imprévisible, donc tout peut arriver comme planter la liaison série ...

Faut avouer, quand même, que c'est étonnant que le contenu d'un message fasse planter une liaison et ce n'est pas la première idée qui vient à l'esprit pour rechercher le problème. Mais les faits te donnent raison.

Cordialement.

Pierre

Bonjour,

j'ai un problème de reconnaissance de ports USB de 2 cartes arduino:

En branchant le port USB de l'un, les LEDs ON et L sont allumées. Dans le gestionnaire périphérique , rien n'est affiché comme port pour l'arduino, que ca soit dans les autres périphériques , ou dans les ports COM et LT

Sur l'autre arduino, en branchant toujours, il y'a les lEDs ON, Rx et Tx qui sont allumées, et idem comme dans le premier comme port

Rapppel: je ne pense pas ue ca soit un probléme de driver, ou de pilote à jour, vu qu'on ne voit méme pas qu'on a branché l'Arduino.

Si vous avez des idées, par rapport à mon probléme, je suis preneur.

Merci de votre compréhension.

bonjour,
Karma62 parle de la taille du buffer, j'aimerais savoir ou il le trouve et comment il procède
pour augmenter sa taille.
je ne suis pas très calé en informatique alors vous comprendrez pourquoi je pose cette question. :confused:
Merci @+

guiffault:
... Karma62 parle de la taille du buffer, j'aimerais savoir ou il le trouve et comment il procède
pour augmenter sa taille. ...

Ce que j'appelle "buffer" et que beaucoup de personnes nomment ainsi n'est que le nom donné à un tableau de valeurs. En général, on désigne par "buffer" un tableau où on stocke des valeurs de manière temporaire. Mais cela n'est jamais qu'un tableau classique.

Ce "buffer" ne se trouve donc pas à un endroit précis puisque c'est vous qui le définissez. La syntaxe en est la suivante :

Type _des_variables_contenues_dans_le_tableau  nom_du_tableau[Taille_du_tableau];

Par exemple, si vous voulez un tableau que vous appellerez "monTableau" où vous pourrez ranger 100 entiers, cela s'écrira :

int monTableau[100];

Pour changer la valeur de la taille du tableau, modifiez la valeur "100" par celle que vous voulez.

Pour en savoir plus sur les tableaux, tapez dans votre moteur de recherche préféré : "langage C tableaux". Vous choisirez le lien qui vous semble le plus adapté pour vous.

Cordialement.

Pierre