• Advertisement

communication port serie

Tout ce qui concerne la version 11 & plus récentes de windev

**Windev est une marque déposée de Pcsoft**

communication port serie

Messagepar imane1985 » Mer Juin 09, 2010 10:56 am

Bonjour
code communication port Serie

Résultat est un booléen
Résultat = sOuvre(1, 2000, 2000) // Ouverture de COM1
SI Résultat = Vrai ALORS // SI LE PORT EST OUVERT ALORS .....

sFixeParamètre(1, 9600, 0, 8, 1) //JE REGLE LES PARAMETRES DE MON COM1
sEcrit(1,Caract(0x01)+Caract(0x03)+Caract(0x00)+Caract(0x01)+Caract(0x00)+Caract(0x01)+Caract(0xD5)+Caract(0xCA))
//J'ECRIT LA TRAMES MODBUS DE LECTURE DE %MW1(01 03 00 01 00 01 D5 CA)

R est un Buffer //JE DECLARE UNE VARIABLE POUR METTRE LA REPONSE
R=sLit(1,sDansFileEntrée(1)) //JE LIT CE QUI EST DANS LE BUFFER
RS=R //J'AFFICHE SE QUE JE RECOIT DANS UNE ZONE DE SAISIE SUR MA FENETRE INTERFACE


sFerme(1) //JE FERME COM1

SINON
Erreur("Erreur d'ouverture de COM1") //J AFFICHE UN MESSAGE SI ECHEC D OUVERTURE DE COM 1

FIN

mon problème je veux envoyer ma trame chaque période donnée ( 5min par exemple ) comme ca je peux récupérer les donnée de ma station météo en temps reel je pense qui faut déclarer une boucle quelqu'un peu m'aider merci .
imane1985
Membre
 
Messages: 41
Inscription: Lun Juin 07, 2010 2:00 pm

Advertisement

Re: communication port serie

Messagepar emidev » Mer Juin 09, 2010 11:51 am

bonjour,

eviter les lecture en boucle qui vont mettre l'usage CPU a 100 %
voyez plutot sur timer qui permet d'envoye rla procedure a intervalle de temps regulier

ne pas oublier d'arreter le timer a l'entree de la procedure et de le redemaarer apres

faire une rechercher sur timer dans l'aide windev
ou timer windev sur le forum
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: communication port serie

Messagepar imane1985 » Mer Juin 09, 2010 12:27 pm

je peux avoir un exemple du Timer merci .
imane1985
Membre
 
Messages: 41
Inscription: Lun Juin 07, 2010 2:00 pm

Re: communication port serie

Messagepar emidev » Mer Juin 09, 2010 12:37 pm

F1 et recherchez timer
je vais vous reecrie ce qu'il y a dans l'iade et qui explique tout
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: communication port serie

Messagepar imane1985 » Mer Juin 09, 2010 3:30 pm

PROCEDURE Time()
Résultat est un booléen
Résultat = sOuvre(1, 2000, 2000) // Ouverture de COM1
SI Résultat = Vrai ALORS // SI LE PORT EST OUVERT ALORS .....

sFixeParamètre(1, 9600, 0, 8, 1) //JE REGLE LES PARAMETRES DE MON COM1
sEcrit(1,Caract(0x01)+Caract(0x03)+Caract(0x00)+Caract(0x01)+Caract(0x00)+Caract(0x01)+Caract(0xD5)+Caract(0xCA))
//J'ECRIT LA TRAMES MODBUS DE LECTURE DE %MW1(01 03 00 01 00 01 D5 CA)

R est un Buffer //JE DECLARE UNE VARIABLE POUR METTRE LA REPONSE
R=sLit(1,sDansFileEntrée(1)) //JE LIT CE QUI EST DANS LE BUFFER
RS=R //J'AFFICHE SE QUE JE RECOIT DANS UNE ZONE DE SAISIE SUR MA FENETRE INTERFACE


sFerme(1) //JE FERME COM1

SINON
Erreur("Erreur d'ouverture de COM1") //J AFFICHE UN MESSAGE SI ECHEC D OUVERTURE DE COM 1

FIN

SI Timer("Time", 100, 1) = 0 ALORS
Erreur("Création du timer impossible")
FIN

quelqu'un peut voir mon code si c'est correcte merci .
imane1985
Membre
 
Messages: 41
Inscription: Lun Juin 07, 2010 2:00 pm

Re: communication port serie

Messagepar emidev » Mer Juin 09, 2010 4:20 pm

Bonjour,

en init du projet
Code: Tout sélectionner
VG_TimerPort est un entier = Timer("Time", 100) // pour toutes les seconde le temps est en centiemes


la proecdure time
[code]
PROCEDURE Time()

// on arrete le timer pour eviter les empilement si la procedure prend plus du temps defini pour le timer
fintimer(VG_TimerPort)

Résultat est un booléen
Résultat = sOuvre(1, 2000, 2000) // Ouverture de COM1
SI Résultat = Vrai ALORS // SI LE PORT EST OUVERT ALORS .....

sFixeParamètre(1, 9600, 0, 8, 1) //JE REGLE LES PARAMETRES DE MON COM1
sEcrit(1,Caract(0x01)+Caract(0x03)+Caract(0x00)+Caract(0x01)+Caract(0x00)+Caract(0x01)+Caract(0xD5)+Caract(0xCA))
//J'ECRIT LA TRAMES MODBUS DE LECTURE DE %MW1(01 03 00 01 00 01 D5 CA)

R est un Buffer //JE DECLARE UNE VARIABLE POUR METTRE LA REPONSE
R=sLit(1,sDansFileEntrée(1)) //JE LIT CE QUI EST DANS LE BUFFER
RS=R //J'AFFICHE SE QUE JE RECOIT DANS UNE ZONE DE SAISIE SUR MA FENETRE INTERFACE


sFerme(1) //JE FERME COM1

SINON

// eviter les fenetres rendant la main a l'utilisateur car le timer sera bloquer
// et si personne passe devant le micro le traitement s'arrete
// j'ai mis une trace mais vous pouvez aussi sauvegarder le message dans un fichier pour avoir un journal
trace("Erreur d'ouverture de COM1") //J AFFICHE UN MESSAGE SI ECHEC D OUVERTURE DE COM 1

FIN

// on relance le timer
VG_TimerPort = Timer("Time", 100)
[code]


si votre code sur le port fonctionnait sur un bouton il devrait fonctionner
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE



  • Advertisement

Retourner vers Forum windev 11 & plus récentes

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités