Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Flowcode et UART



  1. #1
    David71120

    Flowcode et UART


    ------

    Bonjour à tous,

    Je sais que vous n'êtes pas fan de flowcode, mais à défaut de connaitre les langages de programmation et pour faire un prog ou deux par an, ça dépanne.
    Bref, j'ai un soucis pour acquérir des données circulant sur un port Com, si une âme charitable compétente dans ce domaine pouvait éclairer ma lanterne, ça serait sympa.

    En MP éventuellement pour ne pas encombrer la liste si vous le souhaitez.

    Merci

    -----

  2. Publicité
  3. #2
    cubitus_54

    Re : Flowcode et UART

    Flowcode c'est génial

    Quel est ton problème avec RS232 ?

  4. #3
    David71120

    Re : Flowcode et UART



    Merci Cubitus,

    Pour poser les bases, je ne maitrise pas bien flowcode, jusqu'à présent je n'ai fait que quelques petits prog du genre si entrée =1 alors sortie =1, gérer qq tempos, etc...

    Pour mon problème, je voudrais commander un modem GSM avec un 16F877 via des commandes AT, j'ai réussi avec les aides de flowcode à envoyer les commandes, seulement, je n'arrive pas à recevoir les réponses du modem, de même pour faire des tests, j'ai branché un second PC sur le port série, je vois bien les commandes que j'envoie, mais si je tape des infos sur le second PC, je n'arrive pas à les acquérir.

    Je ne sais pas si j'ai été assez clair dans mes explications mais merci pour ton aide.

  5. #4
    cubitus_54

    Re : Flowcode et UART

    Quand tu veux recevoir un octet en RS232, tu prends la macro composant et tu mets "receiveRS232char"
    le "ntimeout" est le temps que la macro va attendre avant de "laisser tomber"

    dans les propriétés étendues, tu peux régler ce timeout en ms

    Du coup, si tu mets var=receiveRS232char 100, le programme va attendre 100ms avant de passer à la suite...
    S’il n'a rien reçu, il retourne la valeur 0xFF

  6. #5
    cubitus_54

    Re : Flowcode et UART

    je te mets un bout de programme pour l'exemple qui gère l’acquittement d'une liaison RS232

    gLCD_ACK.gif

  7. A voir en vidéo sur Futura
  8. #6
    David71120

    Re : Flowcode et UART

    Super sympa, je regarderai ça en rentrant ce soir.

  9. Publicité
  10. #7
    David71120

    Re : Flowcode et UART

    Merci Cubitus, mais je n'ai pas réussi, peux tu m'envoyer le fichier .fcfx, car je n'arrive pas à reproduire complètement ton logigramme.

    D'autre part, je ne comprends pas les calculs sur la variable ack, peux tu m'expliquer un peu le pourquoi du comment s'il te plait ?

    En te remerciant.

  11. #8
    cubitus_54

    Re : Flowcode et UART

    C'est une macro avec des variables locales d’où le point sur .ack

    Suite à l'envoi d'une commande, mon périphérique doit répondre 0x06 (acquittement ou ack)

    Je fais une itération ou je lis le port RS232 avec un "timeout" de 2ms
    si je reçois autre chose que 0x06 j'attends 200µs, j'enlève 1 à la variable ack (initialement à 250)
    Si la réception donne 0x06 ou 0x15 ack passe à 1 et la boucle se termine. Indiquant la fin d'attente de l'acquittement.

    Ceci est un exemple d'acquittement, il est probable qu'en fonction de ton contexte tu es des modifications ou simplifications à faire.

    Mais il faut que tu saches ce que tu dois recevoir et le temps de réponse approximatif de ton modem...
    En gros tu dois connaitre le protocole de communication que tu veux gérer.
    Un bon oscilloscope à mémoire serait sans doute est bien utile ici...

  12. #9
    David71120

    Re : Flowcode et UART

    Ok,

    Oui, pour le protocole de com, il est bien entendu connu et j'ai le datasheet qui va bien, pour l'oscillo, pas de pb, mon seul souci dans mon projet, c'est le manque de connaissance pour faire le prog.
    Sinon, je sais ce que je dois envoyer, quelle réponse est attendue etc.. j'ai déjà développé une application qui gère ça très bien mais elle tourne sur PC, je voulais simplifier le truc en utilisant un PIC, c'est un peu couillon de bloquer un PC à cette seule tâche.

    Je vais faire des tests en je verrai bien.

  13. #10
    David71120

    Re : Flowcode et UART

    Bon, me revoilà,

    Aurais tu quelques minutes pour m'expliquer un truc?

    j'ai défini une variable RXD, j'appelle la routine RS232 Receivestring, j'assigne le résultat à la variable RXD, comment faire pour tester si RXD contient une valeur ou non ?

    Merci de ta patiente.

  14. #11
    David71120

    Re : Flowcode et UART

    pour préciser un peu mon propos, la variable RXD est une chaine de caractères, et si je fais un test avec Si RXD<>0 ou Si RXD = " valeur attendue" ça me mets: opérandes d'opération incompatible.

  15. #12
    cubitus_54

    Re : Flowcode et UART

    Si tu utilises "Receivestring" tu dois indiquer la taille de la chaine attendue, et RXD doit être une chaine de caractère d'une longueur suffisant pour accueillir la réception.

    sinon il existe la touche F1 (aide)
    Compare$(chaîne1, chaîne2, compare_type)

    Compare la chaîne1 à la chaîne2 et renvoie un octet dont la valeur est déterminée par les règles suivantes :





    0 si les chaînes sont identiques

    1 si chaîne1 > chaîne2

    255 si chaîne2 > chaîne1



    Le troisième paramètre, compare_type, détermine si la comparaison doit tenir compte de la casse ou non. Ce paramètre peut prendre deux valeurs :



    0 = sensible à la casse

    1 = indifférent à la casse.

  16. Publicité
  17. #13
    cubitus_54

    Re : Flowcode et UART

    Citation Envoyé par David71120 Voir le message
    Bon, me revoilà,

    Aurais tu quelques minutes pour m'expliquer un truc?

    j'ai défini une variable RXD, j'appelle la routine RS232 Receivestring, j'assigne le résultat à la variable RXD, comment faire pour tester si RXD contient une valeur ou non ?

    Merci de ta patiente.
    Si réception vide après "timeout" a variable de retour = 0xFF

  18. #14
    David71120

    Re : Flowcode et UART

    Un grand merci pour ton aide, j'ai réussi avec ton aide, en mettant dans la décision Si Compare$ (RXD,"",0) , de cette manière je boucle tant que pas de réponse, et si je remplace "" par " valeur attendue " à ce moment je boucle ou je dévie sur une autre branche du programme tant que c'est pas la valeur que je veux .

    Quand à F1, je te rassure j'ai biensur essayer avant d'appeler au secours sur le forum, mais seulement l'aide ne décrit pas les expressions utilisables dans tel ou tel cas, j'ai retrouvé l'aide correspondant à l'expression compare$ seulement en la tapant dans l'aide.
    Enfin, bref.
    Encore un grand merci à toi.

  19. #15
    David71120

    Re : Flowcode et UART

    Cubitus ( ou quelqu'un d'autre) juste un complément d'info: comment je tape "entrée" dans la chaine envoyée ?

    TXD="AT entrée" , j'ai essayé TXD="AT<CR>" mais ça ne fonctionne pas.
    Merci

  20. #16
    cubitus_54

    Re : Flowcode et UART

    Tu peux décomposer en code Hexa
    sendRS232string "AT" suivi de sendRS232Char 0x0D (je ne sais plus si entrée c'est 0x0C ou 0x0D dans certain cas les deux...)

  21. #17
    David71120

    Re : Flowcode et UART

    0x0D que suis-je bête, évidemment, je ne suis pas réveillé ce matin !!!

    Merci

Sur le même thème :

Discussions similaires

  1. I2c / uart.
    Par john2205 dans le forum Électronique
    Réponses: 5
    Dernier message: 14/01/2011, 09h08
  2. PIC et I2C vs UART
    Par frcsbdx dans le forum Électronique
    Réponses: 3
    Dernier message: 15/07/2009, 11h36
  3. Usb < -- > Uart
    Par RBLODE dans le forum Électronique
    Réponses: 0
    Dernier message: 22/04/2008, 13h29
  4. Pic/uart
    Par ABN84 dans le forum Électronique
    Réponses: 5
    Dernier message: 06/03/2008, 09h46
  5. Uart
    Par souma29 dans le forum Électronique
    Réponses: 1
    Dernier message: 17/04/2007, 00h03