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 :

lecture sur port Rs232


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut lecture sur port Rs232
    Bonjour
    je n'arrive pas a receptionner la totalite d'un fichier sur le port rs232.
    je l'envoi du pc vers une interface pas souci mais lorsque je veux receptionner de l'interface au pc je n'y arrive pas meme avec slit.
    Quelqu'un a une idée ou un bout de code pour cela
    merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    Le port RS-232 correspond au port série, donc dans windev utilise la soucoupe et recherche port série, il y a toute une panoplie d'exemple.
    bonne dev

  3. #3
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Que veux tu dire par: "je n'arrive pas a receptionner la totalite d'un fichier"? La lecture bloque? Tu reçois une partie dur fichier et plus rien après? Il y a une erreur? Les données reçues sont bonnes? Tu utilises une boucle avec un buffer suffisant? Tu écrit directement dans le fichier sur disque ou tu gardes tous en mémoire?

    Pour le bout de code, c'est plus nous qui avons besoin du tiens pour l'instant.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    merci beaucoup pour l info

    mon probleme est que le fichier texte quejelit est tres gros donc je n'arrive pas a l'avoir en entier car je depasse le buffer.
    merci de m'aider

  5. #5
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Je veux bien t'aider mais je ne comprends pas où est le problème. Si ton buffer est trop petit, grossit le. Sinon, tu peux mettre dans un fichier à mesure. Peux-tu donner le code que tu as actuellement, ça aiderait beaucoup.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    voici le code sur le btn recevoir:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    LOCAL
     
    	nNombre est un entier
    	srepmachine est une chaîne
    	sToto est une chaîne
    	sTata est une chaîne
    	stonton est une chaîne
    	nvitesse est un entier
    	ncom est un entier
    	nParite est un entier
    	nLongueur est un entier
    	nBit est un entier
    	sFlux1 est une chaîne
    	sFlux2 est une chaîne
    	sFlux3 est une chaîne
    	sVirtuel est une chaîne
     
     
     
    TableSelect(TABLE_machines)	
    srepmachine=TableVersTexte(TABLE_machines,taSansTitre+taLigneSélectionnées)
    sToto="c:\DNC\machines\"+srepmachine
    sTata=sToto+"\"+srepmachine
    stonton=sTata+".ini"
     
     
    ncom=INILit("com","com","",stonton)
    nvitesse = INILit("com", "vitesse", "", stonton)
    nParite=INILit("com","parite","",stonton)
    nLongueur = INILit("com", "longueur", "", stonton)
    nBit=INILit("com","bit","",stonton)
    sFlux1 = INILit("com", "flux1", "", stonton)
    sFlux2=INILit("com","flux2","",stonton)
    sFlux3 = INILit("com", "flux3", "", stonton)
     
    Port=ncom
    // Ouverture du Port série
    SI sOuvre(Port,32768,32768)=Faux ALORS
    	Erreur("Erreur lors de l'ouverture du port "+Port)
    	Ferme()
    FIN
    	sFixeParamètre(Port, nvitesse,nParite,nLongueur,nBit,sFlux1,sFlux2,sFlux3)
     
     
     
    Timer("sReception",50,1)
    voila le code de ma procedure:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    FONCTION SRECEPTION()
     
    wtaille est un entier
    buffer est une chaîne
    FlagOK est un booléen
    wtaille2 est un entier
    wtaille2=0
    flagun est un booléen
    FinTimer(1)
    wtaille=sDansFileEntrée(Port)
    FlagOK=Faux
    flagun=Faux
    //sFixeParamètre(1,9600,1,7,0,Faux,Faux,Vrai)
    // Lecture des informations sur le port série en fonction de la condition d'arrêt
    SI wtaille<>0 ALORS 
          TANTQUE PAS FlagOK
                wtaille=sDansFileEntrée(Port)
                SI wtaille>wtaille2 ALORS
                      wtaille2=wtaille
                      flagun=Faux
                SINON
                      SI flagun ALORS
                            FlagOK=Vrai
                      SINON
                            flagun=Vrai
                            Multitâche(50)
                      FIN
                FIN
          FIN
          buffer=sLit(Port,wtaille)
    FIN
     
    // Traitement des informations lues sur le port série
    SI FlagOK ALORS
          texte=buffer
    FIN
     
    Timer("sReception",501)

  7. #7
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Ja vois au moins 2 problème dans ton code.

    [QUOTE=NICO7285;4558417]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Traitement des informations lues sur le port série
    SI FlagOK ALORS
          texte=buffer
    FIN
    Je ne sais pas à quoi correspond texte mais tu l'écrase à chaque fois. Tu devrais écrire ton buffer dans un fichier que tu ouvres avant ta réception et ferme quand c'est fini. Tu ne serais plus limiter que par ton système de fichier.

    Citation Envoyé par NICO7285 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Timer("sReception",501)
    Ton timer ne sara pas appelé avant 5 secondes. Je penses qu'il manque une virgule.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    bonjour,
    j'essaie d'ecrire dans un fichier comme convenu
    ça fonctionne sur un petit fichier texte mais sur un grand je n'ai que les 2050 premieres lignes et pas le reste voici le code de la procedure
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    FONCTION SRECEPTION()
    nidfichier est un entier
    wtaille est un entier
    buffer est une chaîne
    FlagOK est un booléen
    wtaille2 est un entier
    wtaille2=0
    flagun est un booléen
    FinTimer(1)
    wTaille=sDansFileEntrée(Port)
    flagOK=Faux
    flagun=Faux
     
    // Lecture des informations sur le port série en fonction de la condition d'arrêt
    SI wTaille<>0 ALORS 
          TANTQUE PAS flagOK
                wtaille=sDansFileEntrée(Port)
                SI wtaille>wtaille2 ALORS
                      wtaille2=wtaille
                      flagun=Faux
                SINON
                      SI flagun ALORS
                            flagOK=Vrai
                      SINON
                            flagun=Vrai
                            Multitâche(50)
                      FIN
                FIN
          FIN
          Buffer=sLit(Port,wtaille)
    FIN
     
    // Traitement des informations lues sur le port série
    sUufichier est une chaîne
    SI flagOK ALORS
    	fCrée("C:\essai.txt")
    nidfichier=	fOuvre("C:\essai.txt",foLectureEcriture+foAjout+foCréation)
    		POUR TOUTE CHAINE UnFichier DE buffer SEPAREE PAR RC
    		fEcrit(nIDFichier, unfichier)
    		Trace(unfichier)
    		FIN
    	// Fermeture du fichier
    	fFerme(nIDFichier)
    	sFerme(Port)
    FIN
     
    Timer("sReception",50,1)
    pour le bouton envoyer je n'ai rien changé
    merci

  9. #9
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Tu utilises un fichier, mais à la fin seulement, il ne sert donc à rien. Le but est de se débarrasser de buffer qui limite le nombre de caractère et qui ralenti énormément ta réception. En gros, tu lit sDansFileEntrée, si des caractères sont présent tu lit avec sLit et tu mets ce que tu as lu dans ton fichier. Après tu boucle.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    j'ai bien compris mais mon probleme je debute et la j'avoue que j'ai du mal a mettre tes dires en oeuvre.
    Aurais tu un exemple?
    merci beaucoup

Discussions similaires

  1. Lecture sur Port USB en C/C++
    Par gobelin88 dans le forum C++
    Réponses: 1
    Dernier message: 10/09/2007, 22h08
  2. Pb lecture sur port série sous XP SP2
    Par ViveLesQuads dans le forum Delphi
    Réponses: 7
    Dernier message: 09/06/2006, 17h12
  3. [VB6] Communication binaire sur port RS232
    Par Oseval dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 12/04/2006, 12h53
  4. Problème de lecture sur port COM
    Par Marthym dans le forum MFC
    Réponses: 10
    Dernier message: 11/04/2006, 15h36
  5. [C#] lecture sur port série
    Par Iokanaan dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/05/2005, 13h50

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