Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

quel composant utiliser pour detecter 1er car apres un gap sur liaison serie (reception à 20ms)

Bonjour, J'ai une liaison serie qui emet une trame toutes les 20ms, mais sans caractere de synchro. Je dois me synchroniser en réception de cette liaison. Existe-t-il un composant labview qui permet de detecter le 1er car apres un gap de 15-20 ms sur une liaison serie ? Ou faut-il developper son propre code ? si oui auriez vous un exemple ? Merci
0 Compliments
Message 1 sur 8
4 065 Visites

Bonjour,

Pourrais-tu stp être plus explicite, car je ne comprends pas bien ta problématique.

Et comme je pense que bcp d'en nous sont dans le même cas, nous allons avoir du mal à te venir en aide.
Cordialement

 

Mj

0 Compliments
Message 2 sur 8
4 050 Visites
Je fais un banc qui doit : - emettre une trame sur la liaison serie avec une periode de 20 ms (timing qui ne doit pas se decaler) - recevoir une video via une carte d'acquisition et l'afficher sur l'ecran - gerer actions boutons et joystick IHM (==> modif trame emise) - recevoir trame sur liaison serie à la periode de 20 ms mais sans caractere de debut et fin de trame le seul moyen de se caler sur le debut de la trame est 1er car recu apres un silence de +- 20 ms celle-ci n'est pas du tout synchronisée avec celle emise j'utilise 4 boucles cadencées afin d'avoir l'emission série avec le timing le plus précis possible. 1 boucle reception serie 1 boucle reception video 1 boucle emission serie 1 boucle avec evenement trt IHM Comment coder la reception afin de bien se caler sur le 1er car recu de la trame ? Merci de votre aide.
0 Compliments
Message 3 sur 8
4 039 Visites

Quelque part, ca me rasure,
je viens de demander a un collègue, et lui non plus, y comprend rien.

Alors, je ne saurais quoi te dire d'autre que, fait un p’tite pause, prend du recul,
et après essais de nous faire un dessin.
cela ne sert a rien de nous noyer dans trop de détail si l'on arrive pas a saisir:
1 ) ce que tu veux faire
2 ) avec quoi tu veux le faire
3 ) qu'est ce que tu as déjà tenté et qui ne marche pas.

Tu peux avec un bon dessin, nous mettre un bout de code bien commenté,
parce que la, "On te capte pas!"

moby

0 Compliments
Message 4 sur 8
4 008 Visites
Bonjour,

Sur une liaison série RS422, un équipement m'envoie un message de 12 octets toutes les 20ms, mais sans octet de synchro permettant de détecter début ou fin de message : M1 <---20ms---> M2 <--- 20ms ---> M3 ..........
Il y a un silence de 20ms entre le dernier octet du message M1 et le premier octet du message suivant M2.

1) j'ouvre une session visa en définissant les caracteristiques de cette liaison RS422
2) je fais une boucle avec read visa de 12 octets demandés

comment m'assurer quand le read visa me rend un buffer de 12 octets (chaine de 12 caracteres),
que je suis bien calé sur le premier octet d'un des messages emis toutes les 20ms.
Je ne sais pas si j'ai 12 octets à partir du 1er octet du message, ou si j'ai par exemple 10 octets d'un message M1 et 2 octets d'un message M2.
Je souhaite avoir 12 octets d'un même message, et donc être synchronisé sur le 1er octet.

J'espère être plus clair.
Merci.
0 Compliments
Message 5 sur 8
4 004 Visites
ouai, ok,
c'est pas commun comme truc.

alors, si j'ai bien compris, il faut que tu arrive as te synchroniser avec les trames.
voici un exemple, pas parfait (dans le sens ous s'il perd la syncro, il perdra des trames)
 mais c'est a toi de l'essayer et de l'améliorer au cas ou.
a+
MobyJ

Message Edité par MobyJ le 07-12-2007 04:57 PM

0 Compliments
Message 6 sur 8
4 000 Visites
Bonjour,

Je vous remercie pour votre exemple.
Je l'ai mis en pratique et j'arrive bien à me synchroniser sur ma liaison.
Etant donné que l'on fait que de l'affichage d'états, ce n'est pas grave si l'on rate des trames.
J'affiche d'ailleur qu'à 100ms (envoi evenement utilisateur toutes les 5 trames recues).

Petite question
Peut-on mélanger l'utilisation de boucle classique et de boucle cadencée?


Je dois faire l'émission d'une autre trame à 80ms.

La solution suivante est-elle bonne.

- Votre systeme pour la reception.
en parrallèle:
- une boucle classique pour l'affichage (reception evenement utilisateur)
- une autre boucle cadencée à 20ms pour une emission stable.

PS
je suis obligé d'utiliser un evenement utilisateur. A priori seul les modifications de valeur par l'IHM
provoquent l'evenement valeur changée. Une modification par programme (utilisation noeud de propriete, ...)
ne genere par l'evenement.


Merci.
0 Compliments
Message 7 sur 8
3 967 Visites

bjr,

effectivement, seul les événements utilisateurs peuvent être déclenchés par programme.
Concernant la cohabitation des boucles normales et cadencées, il n'y as pas de problème particuliers si l'on sait ce que l'on fait, il faut gérer les parallélismes, et prévoir les cas qui font perdre la synchro de la boucle.

Dans mon, exemple, j'ai utilisé une boucle cadencée pour allez plus vite, mais si tu veux "réduire" la taille du code une boucle normale avec "attendre un multiple de" aurait fait l'affaire.

 

Cordialement
MobyJ

 

0 Compliments
Message 8 sur 8
3 953 Visites