PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → réception de donnée
réception de donnée
Débuté par gattofred, 07 déc. 2005 10:37 - 2 réponses
Posté le 07 décembre 2005 - 10:37
bonjour je suis en train de développer un logiciel qui par la liaison série doit récupérer des trames de longueur différentes et les traiter. Mes trames peuvent passer de 2 octets à 12 octets mais toujours avec 1 octet d'adresse pui un code de fonction sur un octet puis 1 à 10 octet de données selon la fonction .
est ce que le code de l'assitant de port série peut gérer cela et comment faire

PROCEDURE reception(portchoisi)
code_donnee est une chaîne
adresse est une chaîne
wtaille est un entier
FlagOK est un booléen
wtaille2 est un entier
wtaille2=0
flagun est un booléen
FinTimer(1)
wtaille=sDansFileEntrée(portchoisi)
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(portchoisi)
SI wtaille>wtaille2 ALORS
wtaille2=wtaille
flagun=Faux
SINON
SI flagun ALORS
FlagOK=Vrai
SINON
flagun=Vrai
Multitâche(50)
FIN
FIN
FIN
g_buffer=sLit(portchoisi,wtaille)
FIN
adresse = g_buffer[[A 8]]
SI adresse = Caract(0x80) ALORS
code_donnee = g_buffer[[9 A wtaille]]

FIN

et ensuite coment faire pour regarder en permanence si des données arrivent sur le port et les traiter pour les afficher ensuite.
donc j'ai une fenetre gérant une lecture de feux de voiture et selon la trame arrivant sur le port j'affche tel ou tel feu ds ma fenetre ou plusieurs feu.
Merci d'avance je bloque sur comment faire une routine qui regarde en permanence le port en reception
Posté le 07 décembre 2005 - 11:42
Encore mieux que le Timer : fonction sévenement.
Elle permet d'avoir une "call back" qui gère tout ce qui arrive sur le port !

A+
Posté le 07 décembre 2005 - 12:17
Bonjour,
Utilise un timer :

NumTimer = Timer("Procedure_Timer",10)

//-----------------

PROCEDURE Procedure_Timer

si sDansFileEntrée(portchoisi) > 2 alors Lit_Port()


@+
Vincent Barré