PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → Liaison série
Liaison série
Started by dpascinto, Jan., 24 2004 10:45 PM - 3 replies
Posted on January, 24 2004 - 10:45 PM
Je travaille avec un PIC 16F84. Les données sont envoyées sur le port série
du micro. Je travaille à 4800bauds,8 bits de données, sans parité, 1 bit
de stop.
En utilisant l'hyperterminal de windows, je reçois les messages du PIC sans
aucun probléme.
Par contre en utilisant Windev, et avec le paramétrage suivant:

******************************
Résultat = sOuvre(1,4,4)
sFixeParametre(1,4800,0,8,1) //paramétrage de COM1
secrit(1,"0") // caractére quelconque pour démarrer le PIC
pour i= 1 à 20
donnéePic = sLit(1,1) //
fin
**************************
les données reçues dans donnéePic, sont différentes de ce que je devrais
recevoir ...

Quelqu'un voit-il le probléme ?
Merci
Posted on January, 26 2004 - 9:19 AM
les données reçues dans donnéePic, sont différentes de ce que je devrais
recevoir ...


Bonjour,

Un petit exemple à adapter à vos besoins en modifiant les valeurs des
paramêtres :

// Code à placer dans le code dinitialisation
GLOBAL
ePortCom est un entier = 1 // Port Com 1 par exemple.

//
****************************************************************************
***
// 1ère procédure à créer :
PROCEDURE pCom()
sFerme(ePortCom) // Au cas ou il serait déjà ouvert
SI sOuvre(ePortCom, 1200, 1200, 1000) ALORS
SI sFixeParamètre(ePortCom, 9600, 0, 8, 0, Faux , Faux , Faux) ALORS
// Paramètres de sOuvre et sFixeparamètre à adapter à vos besoins
TimerSys(pLitCom,200,10)
SINON
sFerme(ePortCom)
Info("Problème de paramètrage du Port Com : " + ePortCom + RC + RC + "Le
programme va maintenant s'arreter")
FinProgramme()
FIN
SINON
Info("Problème d'ouverture du Port Com : " + ePortCom + RC + RC + "Le
programme va maintenant s'arreter")
FinProgramme()
FIN
TimerSys(pLitCom,200,10) // On peut également utiliser un thread à la place
du timer.

//
****************************************************************************
***
// 2ième procédure à créer :
PROCEDURE pLitCom()
cLuSurCom est chaîne
FinTimerSys(10) // On stope le timer pendant la lecture
cLuSurCom = sLit(ePortCom,256)
SI cLuSurCom <> "" ALORS
Message(cLuSurCom)
cLuSurCom = ""
FIN
TimerSys(pLitCom,200,10) // On relance le timer.

//
****************************************************************************
***
// Code d'appel à la procédure PCom à placer dans le code d'initialisation
d'une fenêtre (par exemple)
pCom()

//
****************************************************************************
***
// Code à placer dans le code de fermeture du programme (ou de la fenêtre)
sFerme(ePortCom)

Nota : ce code a été testé et fonctionne.

Sincères Salutations
--
Jean-Claude FLAJOULOT
Sécurité Pointage & Biométrie
SPetB_no_spam@wandoo.fr
(Otez _no_spam pour me contacter en PV)

http://perso.wanadoo.fr/securite.pointage.et.biometrie/
Posted on January, 26 2004 - 4:47 PM
A chaque fois que tu fermes le port , tu vides le buffer .c'est ça le
problème ...



"spetb" <spetb@wanadoo.fr> a écrit dans le message de
news:4014c0db$1@news....

les données reçues dans donnéePic, sont différentes de ce que je devrais
recevoir ...

Bonjour,

Un petit exemple à adapter à vos besoins en modifiant les valeurs des
paramêtres :

// Code à placer dans le code dinitialisation
GLOBAL
ePortCom est un entier = 1 // Port Com 1 par exemple.

//

****************************************************************************
***
// 1ère procédure à créer :
PROCEDURE pCom()
sFerme(ePortCom) // Au cas ou il serait déjà ouvert
SI sOuvre(ePortCom, 1200, 1200, 1000) ALORS
SI sFixeParamètre(ePortCom, 9600, 0, 8, 0, Faux , Faux , Faux) ALORS
// Paramètres de sOuvre et sFixeparamètre à adapter à vos besoins
TimerSys(pLitCom,200,10)
SINON
sFerme(ePortCom)
Info("Problème de paramètrage du Port Com : " + ePortCom + RC + RC + "Le
programme va maintenant s'arreter")
FinProgramme()
FIN
SINON
Info("Problème d'ouverture du Port Com : " + ePortCom + RC + RC + "Le
programme va maintenant s'arreter")
FinProgramme()
FIN
TimerSys(pLitCom,200,10) // On peut également utiliser un thread à la

place
du timer.

//

****************************************************************************
***
// 2ième procédure à créer :
PROCEDURE pLitCom()
cLuSurCom est chaîne
FinTimerSys(10) // On stope le timer pendant la lecture
cLuSurCom = sLit(ePortCom,256)
SI cLuSurCom <> "" ALORS
Message(cLuSurCom)
cLuSurCom = ""
FIN
TimerSys(pLitCom,200,10) // On relance le timer.

//

****************************************************************************
***
// Code d'appel à la procédure PCom à placer dans le code d'initialisation
d'une fenêtre (par exemple)
pCom()

//

****************************************************************************
***
// Code à placer dans le code de fermeture du programme (ou de la fenêtre)
sFerme(ePortCom)

Nota : ce code a été testé et fonctionne.

Sincères Salutations
--
Jean-Claude FLAJOULOT
Sécurité Pointage & Biométrie
SPetB_no_spam@wandoo.fr
(Otez _no_spam pour me contacter en PV)

http://perso.wanadoo.fr/securite.pointage.et.biometrie/

Posted on January, 26 2004 - 5:14 PM
A chaque fois que tu fermes le port , tu vides le buffer .c'est ça le
problème ...


Bonjour,

Manifestement, il ne parlait pas dans son code posant problème de fermeture
du port.

Quand à moi si je l'ai mentionné dans mon exemple, ce n'est pas pour ouvrir
sans arrêt le port et le refermer, mais plus pour signaler de ne pas oublier
de le fermer quand on n'a plus besoin de l'avoir ouvert. Dans la pratique
j'ouvre le Port au lancement du programme et je le referme quand je quitte
ce dernier, donc une seule ouverture et une seule fermeture (la procédure
que j'ai appelée pCom n'étant appelée qu'une seule fois et si effectivement
je ferme le port avant de l'ouvrir c'est au cas ou il serait déjà ouvert par
un autre application, surtout s'il est déjà ouvert avec des paramètres
différents, cette façon de faire évite bien des soucis pour l'utilisateur).

Sincères Salutations
--
Jean-Claude FLAJOULOT
Sécurité Pointage & Biométrie
SPetB_no_spam@wandoo.fr
(Otez _no_spam pour me contacter en PV)