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

WinDev Discussion :

communication arduino et windev


Sujet :

WinDev

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut communication arduino et windev
    Bonjour,
    J'aimerais créer une IHM Windev pour piloter ma carte UNO Arduino.
    Pour tester j'ai créé une petite appli sur Arduino qui éclaire une LED suite à l'appui sur une touche (a, b ...). Cela fonctionne bien avec le moniteur serie de l'arduino.
    D'un autre côté j'ai créé une feuille avec un bouton sous windev, et j'aimerai éclairer une LED en faisant un clic dessus (simulation de l'appui sur une touche).
    Mais malheureusement la LED ne s'éclaire pas.
    Voici mon code arduino

    Code Java : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    void setup() {
      // initialize serial communication:
      Serial.begin(9600);
          for (int thisPin = 5; thisPin < 8; thisPin++) {
            pinMode(thisPin, OUTPUT);
          }
    }
     
    void loop() {
      if (Serial.available() > 0) {
        int inByte = Serial.read();
      Serial.println(inByte);
        switch (inByte) {
        case 'a':    
          digitalWrite(5, HIGH);
          break;
        case 'b':    
          digitalWrite(6, HIGH);
          break;
        case 'c':    
          digitalWrite(7, HIGH);
          break;
        default:
          for (int thisPin = 5; thisPin < 8; thisPin++) {
            digitalWrite(thisPin, LOW);
     
          }
        }
      }
    }


    et voici mon code windev :

    clic sur BTN_sansNom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    bResultat = sOuvre(4,4096,4096)
    cMessage est un entier
     
    cMessage=97    //code ascii de a
    SI bResultat = Vrai ALORS
    	sFixeParamètre(4,9600,1,8,0)
    	sEcrit(4, cMessage)
    	Trace(cMessage)
    SINON
    	Erreur("Erreur d'ouverture de COM.....")
    FIN
    Est-ce que quelqu'un pourrait m'aider car je ne comprends pas mon erreur
    par avance merci, cdt

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Bonjour,

    Les deux prototypes de la fonction sEcrit utilisent une chaine ou un buffer.
    Le fait d'envoyer un entier ne poserait pas de problème?

    Faudrait faire le test en utilisant un buffer ou une chaine ne contenant que la lettre par exemple.

    (Je n'ai aucune idée de ce que ca peut donner, c'est juste une piste)

  3. #3
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    En general pour finaliser l'envoi d'une commande sur port COM il faut envoyet un retour chariot (RC).

    Essai de rajouter un RC a la fin

  4. #4
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    RE bonjour,
    Je vais essayer avec un CR, mais Est-ce que je dois envoyer un caractère 'a' par exemple ou son code ascii ?
    merci

  5. #5
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    J'ai essayé avec un RC en fin de message mais le problème reste entier! pas moyen d'éclairer une LED. En revanche si les leds sont allumées et que je clic sur le BTN, elles s'eteignent
    J'envoi donc bien qque chose?
    Est-ce que quelqu'un aurait un bout de code pour m'expliquer
    Par avance merci

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Bonjour
    je te suggère de faire quelque chose de ce genre

    dans la partie arduino tu utilises "a" pour allumer et "A" pour s'éteindre

    Code java : 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
    17
    18
    19
    20
    char charRead;
     
    void setup() {                
      Serial.begin(9600);
    }
     
    void loop() {
       /*  Verifie si le PC envois un caractere: */
      if (Serial.available()) {
        /* Lit ce caractere */
        charRead = Serial.read(); // check pour un a
        if (charRead == 97) {
            digitalWrite(5, HIGH);
     	 }
        if (charRead == 65) {
            digitalWrite(5, LOW);
     	 }
     
        }
    }

    et dans WinDev tu envoies "a" ou "A" pour allumer ou eteindre ta LED

    J'espere que ca va t'aider

  7. #7
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Merci pour ton aide gc-here, j'ai essayé mais rien ne se passe.
    Avec le moniteur serie d'arduino çà fonctionne bien mais avec Windev la led ne s'éclaire pas (pourtant la LED RX de la carte Arduino clignote quand je clic sur le BTN Windev)
    Que dois je envoyer depuis Windev sur le port ? un caractère ("a") ou un entier (65) ?
    faut-il mettre un buffer ? ....
    si quelqu'un a une idée , merci

  8. #8
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Au lieu de RC envoi CRLF à la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sEcrit(4, cMessage + CRLF)

  9. #9
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Re bonsoir
    Toujours pareil, j'ai bien la LED RX de la carte qui réponds mais la led ne s'éclaire pas ..
    Je vous redonne mes lignes de code Arduino et Windev, j'ai du faire une erreur mais je ne vois pas où
    je suis sur que vous allez trouvez l'erreur...

    Code windev sur clic sur le BTN:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    bResultat = sOuvre(4,2000,2000)
    cMessage est un caractère
    cMessage="a"
     
    SI bResultat = Vrai ALORS
    	sFixeParamètre(4,9600,0,8,0)
    	sEcrit(4, cMessage + CRLF)
    	Trace(cMessage)
    	sFerme(4)
     
    SINON
    	Erreur("Erreur d'ouverture de COM.....")
    FIN
    code Arduino:
    Code Java : 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
    17
    18
    19
    20
    21
    22
    int maLed=5;
    char charRead;
     
    void setup() {
    pinMode(maLed,OUTPUT);
    Serial.begin(9600);
    }
     
    void loop() {
    /* Verifie si le PC envois un caractere: */
    if (Serial.available()) {
    /* Lit ce caractere */
    charRead = Serial.read(); // check pour un a
    if (charRead == 97) {
    digitalWrite(5, HIGH);
    }
    if (charRead == 65) {
    digitalWrite(5, LOW);
    }
     
    }
    }

  10. #10
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Essai cMessage est une chaîne plutot que "caractere"

  11. #11
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    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
    17
    18
    19
    20
     
    sFerme(4)
    SI sOuvre(4, 2000, 2000, 1000) ALORS
    	SI sFixeParamètre(4, 9600, 0, 8, 0) ALORS
    		SI sEcrit(4, "a" + CRLF) = 0 ALORS
    			Info(ErreurInfo())
    		FIN
     
    		BOUCLE
    			SI sDansFileSortie(4) = 0 ALORS SORTIR
    		FIN
     
    		Info("envoi ok")
    	SINON
    		Info(ErreurInfo())
    	FIN
    SINON
    	Info(ErreurInfo())
    FIN
    sFerme(4)
    a tester

  12. #12
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Rebonjour et Désoler pour le retart, je suis loins

    Essai avec un type chaine et surtous sans le CRLF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    bResultat = sOuvre(4,2000,2000)
    cMessage est une chaine
    cMessage="a"
     
    SI bResultat = Vrai ALORS
    	sFixeParamètre(4,9600,0,8,0)
    	sEcrit(4, cMessage)
    	Trace(cMessage)
    	sFerme(4)
     
    SINON
    	Erreur("Erreur d'ouverture de COM.........")
    FIN
    Si sa fonctionne toujours pas demande a ton arduino de te renvoyer la valeur recu et lit la dans windev comme ca tu veras bien ce qu'il recois.

  13. #13
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,
    J'ai passé le WE à faire tout un tas d'essais mais rien n'y fait. A croire que windev ne sait pas parler à l'arduino
    Pourtant les LED TS et RX clignotent quand j'envoi qque chose, mais c'est tout. En revanche si la LED est allumée (commandé par le moniteur Serie de l'arduino), je ferme le moniteur lance windev et clique sur mon BTN, la LED s'eteind.
    J'ai trouvé des exemple en Visual C++, mais je ne comprends pas ce langage et j'aurais bien voulu continuer avec Windev

    Si une âme charitable a un bout de code qui fonctionne.....je suis preneur
    Bon dev, merci

  14. #14
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Pourquoi ne génères-tu pas un JAR exécutable de ton code JAVA, pour l'intégrer ensuite dans ton projet Windev via JavaCharge(..) et JavaExécute(..) ?

  15. #15
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonsoir
    Je veux bien essayer (si j'y arrive) mais pourquoi écrire en java et le lancer avec Windev. Pourquoi Arduino ne comprends pas ce que j'envoie sur le COM, alors qu'en VC++ ça a l'air de fonctionner
    Est-ce qu'il ne faut pas mettre un buffer et lire les octets 1 par 1 ?
    merci

  16. #16
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    le problème avec le code de ton premier message c'est que cMessage est un entier et un entier c'est 4 octets donc tu envoies trop de caractères. Passe par un buffer comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonBuffer est un Buffer = ""
    MonBuffer = "a"
    sEcrit(4,MonBuffer)
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  17. #17
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci pour cette info Jurassic Pork.
    Je vais tester ce soir et vous donne le résultat.
    Bonne journée

  18. #18
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Rien à faire c'est toujours pareil. J'ai observé que la mini LED 'L' soudé sur l'arduino reste bien eclairé quand je teste avec le moniteur Serie, alors que lorsque j'envoie un caractère sur le port COM depuis Windev, celle-ci s'éteind et se rallume tout doucement. Pourquoi?
    En tout cas ma LED cablée sur la PIN 7 ne s'allume pas
    Help me .... merci

  19. #19
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    pour y voir plus clair peux-tu nous montrer le code exact que tu utilises maintenant ?
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  20. #20
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 619
    Points : 56 854
    Points
    56 854
    Billets dans le blog
    40
    Par défaut
    Citation Envoyé par fredcatlou Voir le message
    code Arduino:
    Citation Envoyé par fredcatlou Voir le message
    En tout cas ma LED cablée sur la PIN 7 ne s'allume pas

Discussions similaires

  1. Communication arduino avec VB.net
    Par chrifi dans le forum Arduino
    Réponses: 1
    Dernier message: 24/05/2013, 13h49
  2. [WD17] Modifier fenêtre téléchargement Framework Windev Commun
    Par zouzoukha dans le forum WinDev
    Réponses: 0
    Dernier message: 14/05/2013, 18h45
  3. Bug communication serie avec arduino (busy)
    Par Invité dans le forum MATLAB
    Réponses: 2
    Dernier message: 09/07/2012, 09h39
  4. probleme de communication entre 2 fenêtres windev
    Par law56100 dans le forum WinDev
    Réponses: 9
    Dernier message: 24/04/2008, 12h14
  5. [WD11] Communication WinDev / Foxpro
    Par Bugger24 dans le forum WinDev
    Réponses: 9
    Dernier message: 14/02/2008, 15h49

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