[question] associé IDE au .ino en CMD windows

Bonjour,

Je viens vous demander votre aide sur un sujet qui pourrais intéresser toute personne qui voudrais exporté un logiciel qui utilise IDE.

Alors mon problème est le suivant:

J'ai fait un petit logiciel en C# qui permet de supprimer ou ajouter des options à un programme puis après l'ouvrir avec IDE pour le compiler etc.

Je voudrais que ce logiciel puisse être transportable dans un dossier qui inclue tout ces besoins, pour ce il comprend .NET framework pour faire tourner le logiciel et IDE 1.0 d'arduino, mon souci c'est qu'à la première utilisation l'ordinateur ne sais pas quel logiciel utiliser pour ouvrir les fichier .ino et le logiciel plante donc et affiche un message d’erreur, il suffis de dire ouvrir ce fichier avec: parcourir et de sélectionner l'exe de l'IDE pour que l'erreur ne s'affiche plus, je voudrais pouvoir faire cette manip à l'initialisation de mon logiciel en ligne de CMD windows, pour ce j'ai trouvé deux cmd qui devrais être les bonnes:

assoc .ino=Arduino.Document ( associe les .ino au nom Arduino.Document ) ftype Arduino.Document="C:....\arduino.exe" (associe Arduino.Document a l'exe arduino)

malheureusement, dans la cmd, quand je demande les liens, il les a bien crée et il sont identique à ceux crée par la méthode ouvrir avec: parcourir etc, à l’exception de:

ftype Arduino.Document Arduino.Document=C:...\arduino.exe (en ligne de commande)

ftype Arduino.Document Arduino.Document=C:...\arduino.exe "%1% (avec parcourir )

quand windows le fait lui même il rajoute un petit "%1" après.. je ne sais pas si c'est ça qu'il me manque mais en ligne de cmd rien ne ce passe le fichier ne s'ouvre toujours pas avec l'IDE et continue de demander: "avec quel programme ouvrir les .ino", peut être faut-il éteindre et redémarré windows mais si c'est le cas ça m’embête d'être obligé de redémarré windows pour ça coi..

Merci de votre aide.

Skizo !

Le "%1" dans la ligne de commande permet justement de passer le nom du fichier INO à l'IDE

Comment dans ton programme C# lance tu l'IDE ? Je suppose que tu fait un ShellOpen( ou équivalent) sur le fichier INO ? Tu peux aussi faire un ShellExecute ( ou équivalent ) pour exécuter arduino.exe en passant le sktech en paramètre.

Mais sinon, c'est complètement inefficace de procéder via l'IDE Arduino et de demander à l'utilisateur de cliquer sur le bouton. Tu ferais mieux de compiler et uploader directement. Si dans les paramètres de l'IDE tu as activé "Show verbose output during [X] compilation [X] upload" tu peux alors voir les lignes de commandes qui sont appliquées. Il te suffit de les copier dans un fichier bat.

hum hum alors attend:

pour lancer le .ino j'utilise:

Process proc = Process.Start(new ProcessStartInfo(@"C:\SPC\prog_M1\prog_M1.ino"));

et sinon pour ce qui est de compiler et uploader le programme direct, tu pense pas que ça va être compliquer de lancer ça sur un pc ou on viens d'arriver on a juste copié collé le dossier avec tout sur le bureau et c'est tout..

tu crois que les commande de compile etc vont quand même passer?

Skizo !

Pour éviter de modifier le PC sur lequel tu vas l'utiliser, c'est mieux de lancer Arduino.exe avec le sketch en paramètre :

Process proc = Process.Start(new ProcessStartInfo(@"C:\SPC\arduino\arduino.exe", @"C:\SPC\prog_M1\prog_M1.ino"));

Sinon, il y d'autre solutions à explorer pour éviter de recompiler sur le poste client :

1) Utiliser l'EEProm pour stocker les paramètres. Tu flashes avec un HEX standard, puis ton appli dialogue en SerialPort pour passer les nouveaux paramètres qui sont alors mémorisés en EEPROM. Faire attention au 1er démarrage où l'EEPROM peut contenir n'importe quoi. Prévoir un flag de validité en début de la structure de paramètres ou un checksum.

2) Avoir une zone de config facilement identifiable dans le HEX et patcher le HEX avant flashage

Par exemple si ta structure de config est

typedef struct
{
  uint16_t marker1;
  ... data
  uint16_t marker2;
} Config_t;

Config_t MaConfig = { 0xA5A5, ....., 0x5A5A };

:0A02EE00*A5A50000000000005A5A*08

Faire attention à utiliser en C# des types de longueur connue : Int16, UInt16, ...

okok, le problème c'est que la mon logiciel c'est pour la production pure.. c'est à dire que le mec arrive devant mon logiciel avec un arduino vierge et une boite de composant et la il démarre mon logiciel qui contient les tutos pour la création des shield de mon application et un partie qui permet de rentré les paramètres que l'on veut et le programme viens lui même les écrire dans le .ino et l'ouvrir pour que l'utilisateur n'est plus que faire upload et c'est bon quoi, je m'en suit sortie pour ouvrir direct IDE avec le fichier en paramètre, j'ai utilisé les fichier .bat c'est le plus simple :) (fichier contenant des instructions système cmd)

pour ceux que ça pourrais aidé voila comment lancer IDE + un fichier en paramètre dans un fichier .bat: run_m2.bat:

C:\SPC\arduino-1.0-windows\arduino-1.0\arduino.exe C:\SPC\prog_M2\prog_M2.ino

et pour lancer ce .bat en C#:

System.Diagnostics.Process.Start(@"C:\SPC\script\run_m2.bat");

voila pour ceux que ça peut intéresser.

Barbudor: merci de ton aide mais je pense que cette solution est la plus acceptable elle me permet d'avoir juste le .NET framework à installé et après tout fonctionne directement, par contre si tu à une idée pour réduire le dossier IDE au strict nécessaire je t'écoute :D parce que 232mo quand on utilise qu'un board et 5lib.. ça fait mal !!

Sinon je mettrai bientôt mon post projet à jour, j'ai refait mon assistant dôme en plus propre me manque juste séparé com et enregistrement, j'ai déjà passé toute la partie ronde en fonction =)

Ce que je t’indiquait au début du message

Process proc = Process.Start(new ProcessStartInfo(@"C:\SPC\arduino\arduino.exe", @"C:\SPC\prog_M1\prog_M1.ino"));

fait la même chose que ton bat mais directement dans ton code C#

Les solutions 1 et 2 que j'ai cité permettent de réduire ce qu'il y a installer sur le PC au strict minimum, c'est à dire : - ton programme - le fichier HEX - avr-dude et son fichier de conf c'est tout. Tout se passe entièrement dans ton programme, aucun IDE Arduino a lancer.

Utiliser un IDE Arduino en production est idiot. Si le mec se trompe de bouton, change la config de board ou quoi que ce soit, c'est toute la chaine de production qui est foutue.

Oui tous serais foutu en l'aire mais il faut ce souvenir que ce n'est pas non plus industriel, c'est une entreprise de 5 personnes donc ce logiciel sera peut être utilisé une à deux fois par mois pas plus, donc rien d'énorme non plus, pour ce qui est d'avr dude etc oui il est vrai que cela serais mieux sauf que je manque de temps pour le réaliser, il me reste un mois pour finiolé le logiciel faire les testes et finir le module 3 (autonome coffret - éclairage publique) et faire compte rendu et présentation power point, donc j'aimerai le faire mais je pense que c'est un petit peut trop long à mettre en place puis, quand j'ai coché les deux truc pour visualiser compilation et upload il y à tellement de lignes que l'historique ne suffis pas à revenir jusqu'au début donc je ne sais pas trop comment faire pour tout récupéré... :s

Skizo !

il y à tellement de lignes que l'historique ne suffis pas à revenir jusqu'au début

Il suffit de le faire avec blink ;)

D:\\arduino\hardware\tools\avr\bin\avrdude -CD:\arduino\hardware\tools\avr\etc\avrdude.conf -v -v -v -v -patmega328p -carduino -P\\.\COM1 -b115200 -D -V -Uflash:w:C:\Projet\projet.hex:i

Si ton soft C# patche le HEX pour le bloc de configuration, tu n'as plus qu'a appeler un BAT avec cette ligebn de commande. Et modif minimum dans ton soft pour récupérer la config.

C'est moins pratique qu'une config stockée en EEPROM et qu'on peut modifier mais ca reste assez simple tant à l'implémentation qu'à la mise en production

ok j’essayerai et te dirais ce qu'il en est, merci barbatruc =)

Skizo !