Exécuter batch depuis un boitier externe
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Exécuter batch depuis un boitier externe



  1. #1
    cazouashi

    Exécuter batch depuis un boitier externe


    ------

    Salut à tous,

    Je suis actuellement porteur d'un projet avec des amis à moi (désolé mais je peux pas apporter plus de détails), et nous avons besoin de créer un petit boitier qui, une fois connecté en usb, pourrait exécuter un batch sur l'ordinateur quand on appuie sur un bouton. Ce fichier batch est relativement basique, et ne requiert pas d'être exécuter en administrateur. J’imagine qu'il faudra que je donne tous les droits possibles et imaginables à ce "boitier", mais là n'est pas le problème. Je n'ai aucune idée de comment construire ce boitier ! C'est vrai, on est habitué à ce que ça soit l'ordinateur qui envoie des infos au projet, mais pas l'inverse (enfin pas pour moi en tout cas) !

    J'ai accès à du matériel électronique, et notamment à des cartes arduino avec lesquelles je commence à être familier. J'espère que mon projet n'est pas irréalisable, ça mettrait en l'air beaucoup d'heures de travail...

    Merci beaucoup d'avance pour votre aide !

    P.S : C'est pas obligatoire, mais si le boitier pouvait aussi simuler un clique de souris (peu importe ou sur l'écran) ça serait génial

    -----
    Dernière modification par cazouashi ; 06/11/2014 à 22h04.

  2. #2
    Pauldair

    Re : Exécuter batch depuis un boitier externe

    Bonjour,

    Si c'est une clef mémoire USB, tu crées un fichier autorun.inf

    Dans ce fichier (de type texte), tu mets :

    Code:
    [autorun]
    open=MonProgramme.exe
    Remplace "MonProgramme.exe" par le nom de ton soft qui se lancera alors automatiquement au branchement de la clef, si la sécurité du système l'autorise.

    Cordialement.

  3. #3
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Salut,
    Merci de ta réponse !
    L'autorun n'est pas une solution viable étant donné que le boitier doit rester brancher à l'ordinateur. Le fichier batch ne doit pas s’exécuter au branchement du boitier, mais à lorsque l'on appuie sur le bouton.
    Une autre idée ?

  4. #4
    Pauldair

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par cazouashi Voir le message
    Le fichier batch ne doit pas s’exécuter au branchement du boitier, mais à lorsque l'on appuie sur le bouton
    Et si le bouton lançait pour quelques minutes l'alimentation de la carte mémoire, pour ensuite la couper ?

    A chaque reconnexion de la carte le programme se lancerait.

  5. A voir en vidéo sur Futura
  6. #5
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par Pauldair Voir le message
    Et si le bouton lançait pour quelques minutes l'alimentation de la carte mémoire, pour ensuite la couper ?

    A chaque reconnexion de la carte le programme se lancerait.
    A vrai dire j'y ai pensé, mais ce n'est pas aussi simple que ça. En fait il y a une partie du circuit qui doit impérativement rester allumer. Je vais donc voir essayer de les mettre en dérivation et tenter le coup du autorun. En fait j'avais une autre idée pour faire ça, mais elle est beaucoup plus complexe. Je vais donc tenter ton idée et si ça ne marche pas, je me lancerait dans la réalisation d'une une carte avec un protocole de communication USB.
    Merci de ton aide je posterais l'avancement dès que j'ai les résultats

  7. #6
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Bon bah j'ai crée l'autorun, mais rien a faire ! L'ordinateur refuse de l’exécuter automatiquement même après avoir donné toutes les autorisations possibles et imaginables à la clé USB...

  8. #7
    DAUDET78

    Re : Exécuter batch depuis un boitier externe

    Tu n'as pas un antivirus qui bloque l'autorun ?
    J'aime pas le Grec

  9. #8
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Non j'ai essayé de le désactiver et ça ne change absolument rien

  10. #9
    Yoruk

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par cazouashi Voir le message
    et notamment à des cartes arduino avec lesquelles je commence à être familier.
    • Tu crées un petit soft sur le PC, qui écoute le port série virtuel sur lequel est branché la arduino.
    • Dans la arduino, tu envoies une commande série si appui sur le bouton
    • Lorsque tu appuies sur le bouton, la arduino envoie donc sa trame série, le soft réagit, et lance l'exécution du batch.

    Un peu lourdingue, mais ça peut marcher vite si tu gères bien la programmation.

    Simuler un clic souris, plus dur...
    La robotique, c'est fantastique !

  11. #10
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par Yoruk Voir le message
    • Tu crées un petit soft sur le PC, qui écoute le port série virtuel sur lequel est branché la arduino.
    • Dans la arduino, tu envoies une commande série si appui sur le bouton
    • Lorsque tu appuies sur le bouton, la arduino envoie donc sa trame série, le soft réagit, et lance l'exécution du batch.

    Un peu lourdingue, mais ça peut marcher vite si tu gères bien la programmation.

    Simuler un clic souris, plus dur...
    merci de ta réponse ! En fait j'avais également l'idée de créer un soft c++ et Qt qui tourne en tache de fond avec un slot qui s'actualise toute les 50ms et qui écoutes les USB. Mais j'étais pas sur que ça soit compatible avec arduino donc merci à toi, maintenant je sais que c'est faisable. Pour ce qui est du clic de souris que pense avoir trouver dans un code sur internet (apparemment faisable avec Serial) :
    Code:
    Serial.println("EXEC: script.bat");
    Serial.println("MOUSE: 50,47");
    Je vais donc essayer de me lancer dans le développement du soft, j'espère y arriver. Merci de votre aide !

  12. #11
    Yoruk

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par cazouashi Voir le message
    qui tourne en tache de fond avec un slot qui s'actualise toute les 50ms et qui écoutes les USB.
    Tout dépend du langage, mais en VB.net tu as une interruption qui correspond à l'arrivée de datas sur le port série...

    Code:
    Serial.println("EXEC: script.bat");
    Serial.println("MOUSE: 50,47");
    Je ne connaissais pas cette syntaxe, tu as trouvé ça où ?
    La robotique, c'est fantastique !

  13. #12
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par Yoruk Voir le message
    Tout dépend du langage, mais en VB.net tu as une interruption qui correspond à l'arrivée de datas sur le port série...
    Ah ok je savais pas. Le seul problème c'est que je n'y connais absolument rien en VB.net... Du coup je vais voir si il y a une interruption qui correspond à l'arrivée de datas sur le port série (je n'ai pas le courage de me lancer dans le développement d'un programme en VB.net alors que je n'y connais rien). Sauf si c'est vraiment beaucoup plus simple bien sur

    Citation Envoyé par Yoruk Voir le message
    Je ne connaissais pas cette syntaxe, tu as trouvé ça où ?
    C'est la syntaxe arduino qui utilise Serial pour envoyer les ordres. Je me souvient plus du tout sur quel site je l'ai trouvée et étant donné que j'ai lu beaucoup de doc, ça va être compliqué de retrouver... Enfin bon si ça peut vraiment aider je peux essayer de fouiller mon historique

    Bon voilà une idée générale du programme :
    - Programme qui tourne en tache de fond
    - QTimer pour déclencher un slot toutes les 50ms
    - Dans ce slot je liste les ports avec QSerialPortInfo::availablePort s() et je compare avec la liste du précédent appel
    - Utiliser QSerialPort pour écouter ce port

    Donc du coup j'ai une question : est-ce que je pars dans la bonne direction, où je suis en train de tout mélanger ?

  14. #13
    Yoruk

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par cazouashi Voir le message
    C'est la syntaxe arduino qui utilise Serial pour envoyer les ordres. Je me souvient plus du tout sur quel site je l'ai trouvée et étant donné que j'ai lu beaucoup de doc, ça va être compliqué de retrouver... Enfin bon si ça peut vraiment aider je peux essayer de fouiller mon historique
    C'est forcément relié à un truc coté PC. L'envoi d'une trame série est incapable, telle quel, d'agir sur le PC.

    Citation Envoyé par cazouashi Voir le message
    Bon voilà une idée générale du programme :
    - Programme qui tourne en tache de fond
    - QTimer pour déclencher un slot toutes les 50ms
    - Dans ce slot je liste les ports avec QSerialPortInfo::availablePort s() et je compare avec la liste du précédent appel
    - Utiliser QSerialPort pour écouter ce port

    Donc du coup j'ai une question : est-ce que je pars dans la bonne direction, où je suis en train de tout mélanger ?
    Non non tu es bien parti... J'ignore ce qu'est un Qtimer (dépend surement du langage que tu utilises), mais l'idée est la bonne. Après tu n'est pas obligé de tester le numéro de port, tu peux aussi dire de surveiller le même, si tu connais son numéro (COM1, 2...). Et si la commande que tu récupères "colle" avec ce que tu as prévu, tu lances l'exécution du batch...
    La robotique, c'est fantastique !

  15. #14
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Merci de ta réponse !
    Citation Envoyé par Yoruk Voir le message
    C'est forcément relié à un truc coté PC. L'envoi d'une trame série est incapable, telle quel, d'agir sur le PC.
    Oui d'où l'utilité du programme qui tourne en tache de fond pour réceptionner les données envoyées par l'arduino, les lire et les exécuter.
    Citation Envoyé par Yoruk Voir le message
    Non non tu es bien parti
    Ouf au moins une bonne nouvelle
    Pour ce qui est du QTimer, c'est une fonction disponible dans le framworks QT et qui permet (notamment) de déclancher un slot toutes les X secondes. QT est un framework C++.
    Citation Envoyé par Yoruk Voir le message
    Après tu n'est pas obligé de tester le numéro de port, tu peux aussi dire de surveiller le même, si tu connais son numéro (COM1, 2...).
    Oui ça serrait même beaucoup mieux effectivement ! Le problème... c'est que je ne sais pas comment savoir sur quel COM est branché mon boitier
    Bref je vais faire quelques recherches et commencer le développement du programme. Si tu as une autre idée d'amélioration, ou si tu sais comment je peux connaitre le nom de mes différents ports seria, je suis preneur

  16. #15
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    EDIT : Désolé du double post, ma connexion a flanchée pendant l'envoie du message qui s'est donc envoyé deux fois
    Dernière modification par cazouashi ; 08/11/2014 à 14h40.

  17. #16
    Yoruk

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par cazouashi Voir le message
    Oui d'où l'utilité du programme qui tourne en tache de fond pour réceptionner les données envoyées par l'arduino, les lire et les exécuter.
    C'est ça !


    Citation Envoyé par cazouashi Voir le message
    Oui ça serrait même beaucoup mieux effectivement ! Le problème... c'est que je ne sais pas comment savoir sur quel COM est branché mon boitier
    Bref je vais faire quelques recherches et commencer le développement du programme. Si tu as une autre idée d'amélioration, ou si tu sais comment je peux connaitre le nom de mes différents ports seria, je suis preneur
    Tu as Windows ? Dans le gestionnaire de périphériques, ils sont tous listés ! Après, selon l'environnement de dev que tu vas utiliser, tu as des fonctions qui permettent effectivement de faire la détection... Si tu veux faire un truc sécu, tu détectes les ports au démarrage, tu demandes à l'utilisateur de choisir le bon, puis tu scrutes le port en question en boucle...
    La robotique, c'est fantastique !

  18. #17
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Okay merci pour toutes les infos !

  19. #18
    Jack
    Modérateur

    Re : Exécuter batch depuis un boitier externe

    Le gestionnaire de périphérique impose une intervention manuelle et ne donnera pas toujours la même affectation des ports, en particulier sur 2 PC différents.

    QSerialPortInfo est la bonne solution: elle va te permettre de remonter les ports COM utilisés, mais aussi une info sur le type de driver utilisé par le convertisseur USB/RS232, ce qui va te permettre de distinguer ta connexion parmi les autres.

    A+
    Dernière modification par Jack ; 08/11/2014 à 18h55.

  20. #19
    cazouashi

    Re : Exécuter batch depuis un boitier externe

    Citation Envoyé par Jack Voir le message
    QSerialPortInfo est la bonne solution
    Après réflexion et quelques recherches supplémentaires, c'est ce que j'ai finis par faire, et ça marche parfaitement !
    Merci quand même d'avoir pris le temps de me répondre

Discussions similaires

  1. DD externe: boitier ou DD tout prêt?
    Par invite561ed62c dans le forum Matériel - Hardware
    Réponses: 1
    Dernier message: 23/07/2008, 23h26
  2. disque dur et boitier externe soucis
    Par nicom974 dans le forum Matériel - Hardware
    Réponses: 2
    Dernier message: 10/07/2008, 22h26
  3. boitier externe maxtor one touch hs
    Par noir_desir dans le forum Électronique
    Réponses: 4
    Dernier message: 15/05/2008, 21h18
  4. Solutions pour exécuter un code en mémoire externe sur PIC
    Par Toufinet dans le forum Électronique
    Réponses: 6
    Dernier message: 06/12/2007, 06h22
  5. compatibilité hdd boitier externe
    Par invite9d765c85 dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 14/06/2007, 19h47
Découvrez nos comparatifs produits sur l'informatique et les technologies.