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 RS232 en ASCII


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 71
    Points : 67
    Points
    67
    Par défaut Communication RS232 en ASCII
    Bonjour,

    Je dois faire une application communiquant avec un ohmmètre en RS2323

    voici la doc de l'appareil:
    8 bits de données, 1 bit de start, 1 bit de stop

    déclenchement des mesures par RS232 <CRTL G> = 0x07

    MegOhmmètre 1 Voie

    Le message de communication se présente sous la forme de 9 caractères :

    + ####.#  

    avec  correspondant à Cr - ascii 13 - et  correspondant à Lf - ascii 10 - .

    Exemple : +0010.0  correspondant à une mesure de 10.0 M .

    MegOhmmètre 2 Voies

    + ####.#[Tab]+ ####.#  
    Voie 1 Voie 2

    avec  correspondant à Cr - ascii 13 - et  correspondant à Lf - ascii 10 - [Tab] caractère
    de tabulation.


    Je dois donc lui envoyer une demande de mesure en envoyant un code ascii de "CTRL+G" qui équivaut à "0x07" comme indiqué dans la doc

    Voici donc la trame que je lui envoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    			ChronoDébut()
    			sEcrit(gnPort,Caract(07))
    			sEvénement(gnPort,sEveCaractèreReçu,"Lecture")
    La mesure s'effectue ce qui veut dire que mon envoi est pour moi correct.

    Mais lors de la réception, je reçois des caractères spéciaux qui varient selon ses envies.

    Voici ma lecture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    		nNbOctet = sDansFileEntrée(gnPort)
    		SI nNbOctet > 0 ALORS
    			sReception = sLit(gnPort,nNbOctet)
    			Info(sReception)
    		FIN
    Mon appli me lance donc deux fenêtres infos avec des caractères spéciaux ainsi que des 9 qui se baladent.

    Je ne mesure rien, les valeurs doivent donc être de 99.99 et 99.99 (j'ai 2 voix)

    Je ne sais donc pas comment traiter ces chaines de retour.

    Faut-il les convertir ?

    Je n'ai peut-être pas bien compris la doc ?

    Si vous avez des idées je suis preneur.

    Merci d'avance,

    Cordialement,

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 950
    Points : 9 279
    Points
    9 279
    Par défaut
    hello,
    ton message n'est pas très clair :
    Mon appli me lance donc deux fenêtres infos avec des caractères spéciaux ainsi que des 9 qui se baladent.
    Je ne mesure rien, les valeurs doivent donc être de 99.99 et 99.99 (j'ai 2 voiES)
    En fait devrais-tu récupérer 99.99 et 99.99 et as tu autre chose ? montre nous par exemple ce que tu reçois.

    Peux-tu aussi nous montrer comment tu initialises la ligne série ?

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 71
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Honte à moi pour cette faute ..

    Voici quelques exemples : e––r99Cá ; ¥––æÊ9Ãá ; +9Næ––j

    Sur un hyperterminal, il est possible de tester cette connexion avec un CTRL+G qui écrit directement les valeurs 99.99 99.99 , voilà d'où je tiens ma source de valeurs sûres.

    Niveau initialisation de ligne série je pense que tu parle de la connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    gbConnexion est un booléen= sOuvre(gnPort,2000,2000,5000,Vrai)
     
    	SI gbConnexion = Vrai ALORS
    		sFixeParamètre(gnPort,9600,1,8,0)
    	FIN
    Je pense que cela vient de la conversion de la trame reçue, mais je n'ai aucune idée de ce qu'il faut configurer.

    Cordialement,

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 950
    Points : 9 279
    Points
    9 279
    Par défaut
    hello,
    je pense que tu as été victime de l'exemple de la doc de PCSOFT où il montre comme exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Résultat1 = sOuvre(1, 2000, 2000) // Ouverture de COM1
    SI Résultat1 = Vrai ALORS
    // Paramétrage Com1 : Taux 9600, Parité paire, 
    // 8 bits de données, 1 bit de stop
    sFixeParamètre(1, 9600, 1, 8, 0) // Paramétrage de COM1 
    // Suite traitement...
    sFerme(1) // Fermeture de COM1
    SINON
    Erreur("Erreur d'ouverture de COM1")
    FIN
    Dans l'exemple c'est une parité paire et toi tu veux sans doute pas de parité donc il faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Paramétrage Com1 : Taux 9600, pas de parité, 
    // 8 bits de données, 1 bit de stop
    sFixeParamètre(1, 9600, 0, 8, 0) // Paramétrage de COM1
    Parité du transfert :
    0 Aucune parité
    1 Parité paire
    2 Parité impaire

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 71
    Points : 67
    Points
    67
    Par défaut
    Merci d'avoir répondu si vite.

    Je viens de faire des essais en parité 0 : Je rentre bien dans mon événement de réception de caractères cependant, rien ne s'affiche car le buffer d'entrée semble vide.
    En parité 2 j'obtiens les même résultat qu'en parité 1.

    Cordialement,

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 950
    Points : 9 279
    Points
    9 279
    Par défaut
    combien de caractères reçois-tu (nNbOctet ) ?
    Quel événement utilises-tu ? Montre nous le code .
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 71
    Points : 67
    Points
    67
    Par défaut
    Code de lecture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    		nNbOctet = sDansFileEntrée(gnPort)
    				SI nNbOctet <> 0 ALORS
    					Info(nNbOctet)
    					sReception = sLit(gnPort,nNbOctet)
    					FEN_Menu.SAI_trame = sReception
    				FIN
    code écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    			ChronoDébut()
    			sEcrit(gnPort,Caract(07))			
    			sEvénement(gnPort,sEveCaractèreReçu,"Lecture")
    L'appareil m'envoie en fait 2 trames à la suite avec nNbOctet = 8.
    Cependant lorsque je ne vérifie pas que nNboctet <> 0 je reçois 4 infos : 8 ; 8 ; 0 ; 0 (Je parle bien de la fonction info)

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 950
    Points : 9 279
    Points
    9 279
    Par défaut
    il faut mettre le sevenement avant le secrit
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 71
    Points : 67
    Points
    67
    Par défaut
    Merci !!

    J'ai mis l’événement avant le secrit et j'ai remis la parité à 0.
    Je reçois bien un +99.99

    Bonne journée à toi

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication RS232 entre calculateur et PC sous Labview
    Par yamina_38 dans le forum LabVIEW
    Réponses: 9
    Dernier message: 02/07/2008, 15h30
  2. Communication RS232
    Par pedro_59 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 02/08/2007, 11h25
  3. Communication RS232 avec un PIC via delphi
    Par JeanPh dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 09/08/2004, 22h56

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