reception de données via rs232 (visual.Basic 6.0)
Répondre à la discussion
Affichage des résultats 1 à 28 sur 28

reception de données via rs232 (visual.Basic 6.0)



  1. #1
    invitecebfefc0

    reception de données via rs232 (visual.Basic 6.0)


    ------

    Bonjour tout le monde
    , j'ai essayé un programme sur VB6 qui me permet d'afficher les valeurs de la température reçues à partir d'un rs232, mais j'ai un problème , chaque nouvelle valeur de température s'affiche a coté de la précedente, j'obtient donc comme l'indique la photo ci jointe une serie de messages l 'un à coté de l'autre ,
    comment peut on modifier le programme pour eviter cela
    merci pour votre aide


    la partie du programme de la réception et l'affichage des donnes :

    Private Sub MSComm1_OnComm()
    Dim sData As String
    Dim lHighByte As Long
    Dim lLowByte As Long
    Dim lByte As Long

    ' If Rx Event then get data and process
    If MSComm1.CommEvent = comEvReceive Then
    sData = MSComm1.Input ' Get data

    Traitement (sData)
    lHighByte = Asc(Mid$(sData, 1, 1)) ' get 1st byte
    lLowByte = Asc(Mid$(sData, 2, 1)) ' Get 2nd byte
    lByte = JoinHighLow(lHighByte, lLowByte)
    Label2.Caption = CStr(lByte)
    DrawScale lByte

    End If
    End Sub
    Sub Traitement(tampon As String)
    'cette procédure sert à traiter l'information reçue dans le tampon

    Text1.SelStart = Len(Text1.Text)
    Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
    End Sub

    -----
    Images attachées Images attachées  

  2. #2
    invitee05a3fcc

    Re : reception de données via rs232 (visual.Basic 6.0)

    Quel est le nom du composant où s'affiche le texte ?
    L'écriture du texte n'est pas dans ton programme ..... tampon est chargé comment ?

    Met ton fichier FRM en pièce jointe (tu remplaces FRM par TXT)

  3. #3
    curieuxdenature

    Re : reception de données via rs232 (visual.Basic 6.0)

    Bonjour

    tu peux créer une liste et tu fais

    List1.additem "" & tampon comme ça tu n'as pas à t'occuper du saut de ligne.

    sinon si tu tiens à Text1 tu peux essayer
    (vérifie d'abord que la propriété MultiLine soit bien cochée à True. Je pense que le problème est là.)

    Text1.text = Text1.text & VBCRLF & tampon

    si ça ne marche pas tu peux remplacer Text1 par Richtextbox
    L'electronique, c'est fantastique.

  4. #4
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    merci mais ça marche pas
    ya t il une instruction qui permet la suppression de l'affichage après chaque recéption et affichage de donnée?

  5. A voir en vidéo sur Futura
  6. #5
    invitee05a3fcc

    Re : reception de données via rs232 (visual.Basic 6.0)

    Citation Envoyé par DAUDET78 Voir le message
    Quel est le nom du composant où s'affiche le texte ?
    L'écriture du texte n'est pas dans ton programme ..... tampon est chargé comment ?

    Met ton fichier FRM en pièce jointe (tu remplaces FRM par TXT)
    Tu peux répondre ?

  7. #6
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    je m'excuse pour le retard
    le message s'affiche dans ' text1 '
    le chargement de tampon se fait par la procédure suivante que j'ai nommé traitement :

    Sub Traitement(tampon As String)
    'cette procédure sert à traiter l'information reçue dans le tampon

    Text1.SelStart = Len(Text1.Text)
    Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
    End Sub




    puis :



    MSComm1.CommEvent = comEvReceive
    sData = MSComm1.Input ' Get data

    Traitement (sData)

  8. #7
    invitee05a3fcc

    Re : reception de données via rs232 (visual.Basic 6.0)

    Comment tu mets le texte "la température d'eau est" dans tampon ??????????

    Soit tu donnes ton fichier FRM , soit je laisse tomber .

  9. #8
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    le message ' la température est " est écrit déja sous PIC C et envoyé par la rs232 ,
    le VB ne fait que afficher tout le message ,

  10. #9
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    voici une copie du fichier
    Fichiers attachés Fichiers attachés

  11. #10
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    voici tout le dossier car j'ai du mal à le telecharger sous txt
    Fichiers attachés Fichiers attachés

  12. #11
    invitee05a3fcc

    Re : reception de données via rs232 (visual.Basic 6.0)

    Tu remplaces
    Code:
     Text1.SelStart = Len(Text1.Text)
         Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
    par
    Code:
    Text1.Text = "la température d'eau est " & tampon

  13. #12
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    merci
    je l'a deja essayé ça marche parfaitement si la valeur reçue par la rs232 est un entier , mais s on a des chiffres apres la virgule l'affichage est incorrect (
    par exple pour une valeur de température = 0.41 envoyée par la RS232 , sur VB on obtient le message suivant :<< la temperature est .4 >>
    ensuite le message devient :<< la temperature est 41 >>

  14. #13
    invitee05a3fcc

    Re : reception de données via rs232 (visual.Basic 6.0)

    Donne le protocole de formatage de la transmission RS232 ......

  15. #14
    Biname

    Re : reception de données via rs232 (visual.Basic 6.0)

    Citation Envoyé par DAUDET78 Voir le message
    Donne le protocole de formatage de la transmission RS232 ......
    Oui ! Si pas disponible, Len(sData) pourrait aider !

    ----------------------

    Il y a longtemps que je n'ai plus utilisé VB mais l'affichage ne se fait pas via .SelText

    http://msdn.microsoft.com/fr-fr/libr...=vs.90%29.aspx

    TextBox1.Text = "Two of the peak human experiences are "
    TextBox1.Text = TextBox1.Text & "good food and classical music."

    pas de multiline dans les propriétes des Textbox

  16. #15
    curieuxdenature

    Re : reception de données via rs232 (visual.Basic 6.0)

    erreur de ma part.
    Dernière modification par curieuxdenature ; 22/04/2013 à 19h44.
    L'electronique, c'est fantastique.

  17. #16
    curieuxdenature

    Re : reception de données via rs232 (visual.Basic 6.0)

    pour moi le problème vient du flot reçu par la rs232.

    après modifs comme suit, et mise en place d'un composant Timer
    Sub Traitement(tampon As String)
    'cette procédure sert à traiter l'information reçue dans le tampon
    Text1.Text = tampon 'ici, on affiche le résultat dans un champ de texte
    End Sub

    Private Sub Timer1_Timer()
    '
    Dim sData As String
    Dim lHighByte As Long
    Dim lLowByte As Long
    Dim lByte As Long

    sData = "Température = " & 24.28345
    Traitement (sData)
    lHighByte = Asc(Mid$(sData, 1, 1)) ' get 1st byte
    lLowByte = Asc(Mid$(sData, 2, 1)) ' Get 2nd byte
    lByte = JoinHighLow(lHighByte, lLowByte)
    Label2.Caption = CStr(lByte)
    DrawScale lByte
    End Sub
    j'ai ça
    Nom : test.jpg
Affichages : 193
Taille : 13,3 Ko

    Pense à tester seulement après compilation, le résultat n'est pas forcément correct sinon.
    L'electronique, c'est fantastique.

  18. #17
    malo777

    Re : reception de données via rs232 (visual.Basic 6.0)

    [HS ON] Ça fait plaisir de ne voir que je ne suis pas le seul à continuer à développer en VB6 [/HS OFF]

  19. #18
    invitee05a3fcc

    Re : reception de données via rs232 (visual.Basic 6.0)

    Citation Envoyé par malo777 Voir le message
    [HS ON] Ça fait plaisir de ne voir que je ne suis pas le seul à continuer à développer en VB6 [/HS OFF]
    Moi, ça fait 20 ans que j'utilise VB6 et ça me suffit largement. Alors, pourquoi changer de maitresse à mon age !
    Par contre, il n'évoluera plus. Donc, pour un jeune, il vaut mieux choisir autre chose .

    PS: Bien qu'avec des milliers de milliards de ligne de code en VB6 dans le monde...... il n'est pas prêt de disparaitre des offres d'emploi !

  20. #19
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    sous pic C :




    printf(" La temperature est :%f",temp);


    if(kbhit())
    {

    getc();


    }






    bien sur apres la formule de calcul de temp, et la declaration des bibliotheques

  21. #20
    curieuxdenature

    Re : reception de données via rs232 (visual.Basic 6.0)

    Bonjour zouzoumou

    ce qui m'étonne un peu c'est la présence d'une séquence aussi vieille que le minitel dans la ligne d'affichage ( esc [2J ) à la fin de chaque relevé.
    1B 5B "2J" ça correspond à un effacement d'écran minitel si ma mémoire est bonne mais ça ne risque pas de marcher sur un PC, sur un terminal d'avant la guerre peut-être.
    L'electronique, c'est fantastique.

  22. #21
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    lol oui je l'ai effacé

    et je suis toujours entrain de chercher une solution :/

  23. #22
    Biname

    Re : reception de données via rs232 (visual.Basic 6.0)

    Citation Envoyé par zouzoumou Voir le message
    sous pic C :




    printf(" La temperature est :%f",temp);


    if(kbhit())
    {

    getc();


    }



    bien sur apres la formule de calcul de temp, et la declaration des bibliotheques


    Que transmets-tu en RS232 ? Un chaine, un float/single/double, deux bytes partie décimale-partie entière, ...

  24. #23
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    je transmet la valeur " temp " qui est un float , voici une copie du programme complet :




    #include <16f877a.h>
    #device adc=10;
    #use delay(clock=20000000)
    #fuses hs
    #include <lcd.c>
    #include <math.h>
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

    float rtdv;
    float rtdr;
    float temp,y;



    void main() {
    set_tris_A(0xff);
    set_tris_B(0x00);
    set_tris_C(0x00);
    lcd_init();



    setup_adc_ports(AN0);
    setup_port_A(ALL_ANALOG);
    setup_adc( ADC_CLOCK_INTERNAL );


    // DETERMIANTION de la valeur de temperature et affichage sur LCD

    while (1)
    {
    set_adc_channel(0);
    rtdv = read_adc();
    rtdv=rtdv*5/1024;
    rtdv=rtdv/5;
    rtdr=rtdv*1000.0/(5.0-rtdv);
    y=0.15274-(rtdr-100.0)*0.0002310;
    if(y>=0)y=sqrt(y);
    temp=(y-0.39083)/(-0.0001155);
    lcd_gotoxy(1,1);
    printf(lcd_putc,"T1=%f deg",temp);
    delay_ms(2000);

    lcd_init();
    delay_ms(50);
    lcd_gotoxy(1,10);
    printf(lcd_putc,"c");

    delay_ms(2000);
    lcd_init();


    // transmission de la valeur de temperature via la rs232

    printf(" La temperature est :%f",temp);


    if(kbhit())
    {

    getc();


    }


    }

    }

  25. #24
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    ET VOICI le montage sous isis sur lequel je suis entrain d’essayer d'envoyer à partir du capteur pt100 suivie de son conditionneur
    Fichiers attachés Fichiers attachés

  26. #25
    Biname

    Re : reception de données via rs232 (visual.Basic 6.0)

    Je pense ???? que le PIC envoie un Float (4 bytes) sur le port RS232 et tu réceptionnes une chaine en VB. Voir la structure d'un float !

    Essaye de déclarer 'Dim sData As Single' sous VB ?


    -------------------------

    (((( Ils ont le moral les jeunes ! Faire des multiplications et des divisions de nombres réels/float/double en huit bits sur un processeur qui a 8K de mémoire programme, 368 octets de RAM et un jeu d'instructions très limité !!!! Il va suer le pauvre ... Il serait plus raisonnable de faire tous ces calculs sur le PC sous VB ? Mais bon ... ))))

  27. #26
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)





    PS: j'ai pas encore trouvé une solution

  28. #27
    invitee05a3fcc

    Re : reception de données via rs232 (visual.Basic 6.0)

    Citation Envoyé par zouzoumou Voir le message
    je transmet la valeur " temp " qui est un float ,
    C'est une ânerie ..... transmet en RS232 une chaine de caractère qui représente la valeur de Temp ! tu l'encadres avec un 0x0D et un 0x0A

    1) tu pourra visualiser ce que tu reçoit en utilisant HyperTerminal (ou autres)
    2) Ton programme VB6 attend le 0x0D et le 0x0A ... et tout ce qui est entre les deux, il le met dans Machin.text

  29. #28
    invitecebfefc0

    Re : reception de données via rs232 (visual.Basic 6.0)

    Ie vous apporte de bonnes nouvelles j'ai trouvé la solution et les valeurs s'affichent en temps reel parfaitement sur mon interface VB
    merci à tous ceux qui ont essayé de m'aider

    le problème c’était la longueur des Data envoyé par la RS232,
    on l'a déjà fixé sur le vb comme suit :

    ' Fire Rx Event Every 4 Bytes
    MSComm1.RThreshold = 4

    ' When Inputting Data, Input 4 Bytes at a time
    MSComm1.InputLen = 4



    donc avec ces deux instructions lorsque la longueur de la Data envoyée est différentes de 4 caractères ( y compris la virgule) l'affichage de la Data est incorrect

    donc on ajouté une condition sur le CCS :

    si la valeur lue est sup à 10 et inf à 100, elle sera envoyé avec un seul chiffre après la virgule

    si elle est inf à 10 , elle sera envoyer avec deux chiffres après la virgule

Discussions similaires

  1. Programme de liaison RS232 avec Visual Basic 2010
    Par invited09b36b5 dans le forum Électronique
    Réponses: 18
    Dernier message: 12/08/2014, 09h32
  2. Comment faire une liaison série RS232 avec visual basic 2008 ?
    Par invitebfc9884f dans le forum Électronique
    Réponses: 2
    Dernier message: 23/02/2013, 16h58
  3. base de données access +visual basic
    Par invitef9ed8fd4 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 12/05/2010, 21h38
  4. Réponses: 1
    Dernier message: 31/03/2009, 09h45
  5. gestion d'une base de données excel (Visual basic)
    Par invitebfca8e2e dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 17/03/2009, 09h54
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...