IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Gestion goutte à goutte via port parallèle


Sujet :

Visual C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Gestion goutte à goutte via port parallèle
    Bonjour,

    Je veux faire des photos de gouttes d'eau via une interface parallèle. je cherche a photographier la collision de deux gouttes.
    j'utilise un code de ce type, en utilisant un "sleep" pour déterminer l'impulsion de commande de la vanne et de l'apn

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //premiere goutte
    //ouverture vanne        
            data = 2;	WriteFile(hPort, &data, sizeof(data), &dw, NULL);
    	Sleep(t1);
     
    // fermeture vanne
    	data = 0; WriteFile(hPort, &data, sizeof(data), &dw, NULL);
    	Sleep(t2);
     
    // deuxieme goutte 
     ... meme code que premiere gouute
     
    // declence APN
    	data = 1;  WriteFile(hPort, &data, sizeof(data), &dw, NULL);
    	Sleep(t0);
    	data = 0; WriteFile(hPort, &data, sizeof(data), &dw, NULL);
    Ça marche, mais la manip n'est pas "répétable"
    Y a-t-il un moyen, sous Windows 7, d' améliorer la cette manip.?
    Je ne comprend pas comment utiliser un timer pour mieux gérer cette manip?

    peut être que windows7 n'est pas assez précis pour ce genre de manip.
    merci d'avance pour vos réponses
    robert

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 200
    Points : 12 354
    Points
    12 354
    Par défaut
    Windows, comme tous les OS généraliste, n'est pas temps réel.

    Le Sleep libère le CPU pour une autre tâche, mais ne garanti en rien que le thread reprendra la main une fois le temps écoulé.

    Si vos contraintes de précision ne sont pas énorme et que votre machine n'est pas trop chargé, les timers multimédia peuvent peut-être faire l'affaire.
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Sinon, on peut toujours faire la stratégie de la mitrailleuse à images et utiliser des outils de reconnaissances pour faire le tri dans les images prises.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    merci pour la réponse.

    par contre j'ai un problème pour utiliser les timers multimedia
    je n'arrive pas a enchainer deux timers
    eg:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // action 1
    // ouvrir la vanne pendant X ms
    // open_valve
    send 1 sur LPT1
    wait X ms ;
    //close vanne ;
    send 0 sur LPT1
     
    wait Yms
     
    // declencher l'apn pendant Y Ms
    send 2 sur lpt1
    wait Y ms
    send 0 sur lpt2
    etc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Le premier wait marche bien
    hTimerQueue = CreateTimerQueue();
    CreateTimerQueueTimer(&hTimer, hTimerQueue, (WAITORTIMERCALLBACK)TimerRoutine, &arg, 100, 0, 0))
     
    // fin timer 
    WaitForSingleObject(gDoneEvent, INFINITE)
    ??

    Faut il détruire le timer pour le recréer avec un autre délais ?
    je ne comprends pas comment enchainer tout ça ?
    robert






    robert

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 200
    Points : 12 354
    Points
    12 354
    Par défaut
    CreateTimerQueueTimer ( http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx), c'est pas du timer multimédia.

    Il y a un exemple complet ici : http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Discussions similaires

  1. Commande moteur pas à pas via port parallèle
    Par -N4w4k- dans le forum Robotique
    Réponses: 9
    Dernier message: 05/04/2012, 01h00
  2. Réponses: 0
    Dernier message: 27/03/2010, 14h16
  3. gestion du port paralléle
    Par zwejdi dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 09/01/2007, 11h55
  4. Gestion du port paralléle sous 2000
    Par kardex dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/01/2006, 20h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo