Probleme RS232 en emission/reception

lidyb Messages postés 3 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 16 mars 2008 - 15 mars 2008 à 20:09
lidyb Messages postés 3 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 16 mars 2008 - 16 mars 2008 à 20:08
Voila mon probleme, j'ai une apli sur un pc et un pic16f628.
Je dois transmettre des données depuis un pc vers ce pic , le pc par exemple envoie une chaine de caracteres et le pic doit lui repondre si il à bien reçu les données et ainsi le pc envoie la suite.

Petite note: la com se fait en USB avec un ft232RL
J'ai fais un prog qui envoie et reçoie la reponse du pic mais mon probleme c'est qu'il faut que j'envoie par un bouton là, ça marche mais c'est automatique.

J'ai mis un ouput dans le oncom comme il suit:

        Case comEvReceive

            ComInput = MSComm1.Input
            If ComInput = Chr(13) Then
                Debug.Print "in:"; recept
                Text4.Text = recept
                recept = ""
                If recept <> lrecept Then
                    lrecept = recept
                    ComOutput = Format(recept, "00000") & Chr(0)

le prog regarde si la chaine envoyée et diferente de la precedente et si oui envoi la seconde MAIS CA MARCHE PAS!!! LE PC ENOIE RIEN!!

J ai essayé en direct sur un autre port com en croisant 2 avec 3, 3 avec 2, 5 et 5 , et c'est pareil !!

Si quelqu'un à la solution elle est bien venue

Par avance , merci

Cordialement

En VB6

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 mars 2008 à 20:31
Sans même chercher à comprendre plus ton programme, à partir de la ligne en rouge, recept contient une cahine vide. Il est donc normal que rien ne soit envoyer.

            ComInput = MSComm1.Input
            If ComInput = Chr(13) Then
                Debug.Print "in:"; recept
                Text4.Text = recept
                recept = ""
                If recept <> lrecept Then
                    lrecept = recept
                    ComOutput = Format( recept, "00000") & Chr(0)

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
lidyb Messages postés 3 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 16 mars 2008
16 mars 2008 à 11:11
Oui , j'ai viré la procedure de traitement:

           Case comEvReceive

            ComInput = MSComm1.Input
            If ComInput = Chr(13) Then
                Debug.Print "in:"; recept
                Text4.Text = recept
                recept = ""
                If recept <> lrecept Then
                    lrecept = recept
                    ComOutput = Format(recept, "00000") & Chr(0)
                    Debug.Print "out"; ComOutput
                     MSComm1.Output = ComOutput

                Else
                End If
            Else     
                recept = recept + ComInput
            End If

mais bon c'est toujours pareil

Merci
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 mars 2008 à 11:43
Même réponse que précédement, recept est toujours une chaine vide au moment de l'envoie donc tu n'envoie rien.

Et en plus tu as même mis un Debug.Print pour t'en rendre compte par toi-même.

Ne compte pas sur l(instruction Format pour te remplir la chaine. Format n'agit qu'avec des nombres pas avec des strings sauf si la string peut-etre interpretée comme un nombre mais le résultat est parfois aléatoire.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
lidyb Messages postés 3 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 16 mars 2008
16 mars 2008 à 20:08
Non elle est pas vide parqu'elle recoit depuis le pic, ça fonctionne si j'envoie par un bouton, le pic recoie et repond le pc recoie mais n'envoie plus, c'est là le probleme

Cordialement
0
Rejoignez-nous