[R] UDP Event ?!

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

[R] UDP Event ?!

#1

Message par cutprod »

Bonjour a tous, toujours avec mes carte électroniques ...:)
Je travail sur une carte qui m’envoie des données par le protocole 'UDP" toute les x millisecondes,
les données contiennent les noms et valeurs des différentes sorties ou entrées analogiques et digitales.
Pour l'instant je me suis contenté d'enfermer dans une boucle des =

Code : Tout sélectionner

$data_recv = UDPRecv($socket, 50,2)

  If $data_recv <> "" Then
        message("["& $data_recv[1]&" : "&$data_recv[2] &"]" &@CRLF& $data_recv[0] &@CRLF)
            
            If $data_recv[0] = "Digital INPUT = LOW" Then
                GUICtrlSetData($Label2,"LOW")
            Else
                GUICtrlSetData($Label2,"HIGH")
            EndIf

    EndIf
 
Ce qui j'en suis sur n'est pas très élégant!!
Est ce que quelqu'un a une idée et peut m'aider a faire un mode événement pour la réception des données?
Que le script ne soit pas prisonnier dans une boucle?
J'ai vu que notre ami "matwachich" en a développer pour c'est différents script sur le TCP, mais je ne parvient pas a extraire ce qui m' intéresse !
Peut être m'aidera t il :| (appel direct que très peu déguiser) :lol:
Modifié en dernier par cutprod le lun. 28 nov. 2011 22:31, modifié 1 fois.
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] UDP Event ?!

#2

Message par Tlem »

cutprod a écrit :Que le script ne soit pas prisonnier dans une boucle?
OnEvent Mode non ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] UDP Event ?!

#3

Message par mikell »

Pour ne pas bloquer le script pourquoi ne pas lancer périodiquement la vérification avec un AdlibRegister ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] UDP Event ?!

#4

Message par cutprod »

Merci pour vos réponses, Tlem ok pour "Opt("GUIOnEventMode"), mais ou je défini la fonction a appeler en rapport avec les data envoyer (string avec un nom pour la mesure et sa valeur, ca c'est moi qui le défini dans la programmation de la carte)
les datas envoyer ressemble a ca = "AI_1=1020" ou "AI_2=445" ....
mikell, ok pour le "AdlibRegister" mais si un paquet arrive quand la fonction appelé par le adlib n'écoute pas ? le paquet et perdu ?
Il faudrait un buffer ?
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] UDP Event ?!

#5

Message par Iste »

cutprod a écrit :mikell, ok pour le "AdlibRegister" mais si un paquet arrive quand la fonction appelé par le adlib n'écoute pas ? le paquet et perdu ?
Pensez bien que c'est géré par AutoIt. Il serait impensable de nous demander de faire un UDPRecv() exactement au moment ou l'on recoit l'info

Par contre, ce qu'il faut penser, c'est que l'envoi n'est peut etre pas fini, donc While $data_recv <> ""
Signez ici
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] UDP Event ?!

#6

Message par sksbir »

Bonjour

perso, je ne vois pas où est le problème à enfermer ta requete de lecture dans une boucle.

normalement, tu as ouvert le canal de communication en dehors de la boucle, et les données émises par ta "carte" sont donc bufferisées. A ce moment, rien n'interdit de faire une boucle qui contient la lecture du buffer, et d'autres choses à monitorer par exemple.... Il n'y a pas d'obligation à travailler en temps réel (les données peuvent attendre "un petit peu" dans le buffer) , et ça tombe bien d'ailleurs, car autoit n'est pas vraiment fait pour ça...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] UDP Event ?!

#7

Message par Tlem »

Je ne connais pas la teneur du script en entier, mais si on passe en mode événementiel, il y à une boucle While/Wend qui ne sert qu'à attendre.
Donc en utilisant le test comme vous l'avez fait, rien n’empêche le déclenchement d'événement (sauf analyse des paquets UDP trop longue).

Après, tout dépend de votre gestion de paquets. Il faudrait connaitre la structure et le séquentiel. Si c'est juste pour modifier l'état d'un label comme dans votre exemple, alors la solution ci-dessus sera largement suffisante. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] UDP Event ?!

#8

Message par cutprod »

Merci a tous pour vos réponses, je pense que vous avez bien raison vu que les paquets ne contiennent que très peut de data une boucle suffira... après il faudrai que le script continu a traiter les paquets entrants pendant l'exécution dune fonction trop longue...
Mais vu que le petit script que je fais et a but éducatif pour les utilisateurs novice (de la carte électronique) ca va aller!! :)
Merci a tous pour votre aide, je poste le tout dans [EX] dés que c'est propre.
Cut, srcipteur du dimanche...désolé !-)
Répondre