Le 27/11/06, ALAUX, Virginie <address@hidden> a écrit :
Bienvenue dans le monde merveilleux de TSP. Et félicitations, tu es notre première develloppeuse !
Devant effectuer une étude pour réaliser un consumer performant à base de TSP. J'ai 2 questions:
Pour répondre à tes questions, qui sont récurrentes dans les nouveaux
développeurs, le bon point d'entrée pour un TSP consumer est le fichier
tsp_consumer.h (voir fichier joint)
Sinon on peut aussi trouver la doc en ligne ici :
www.ts2p.org/tsp/API_doc/html/index.html
Et encore plus fort, un exemple de consumer en moins de 100 lignes de
code, il n'y a plus qu'à copier coller :=) (fichier client_stdout.c)
Dans le fichier tsp_consumer.h v 1.34, pour le type TSP_sample_t : il n'y a pas le type "string". Est-ce une vieille version du fichier?
Non effectivement il n'y a pas de type string. Pour des raisons de perfs, il faut avoir une taille max de chaque symbole prédéfinie. Tu peux faire des tableau de charactères, mais ce n'est pas très souple.
Eric m'a donné une autre idée, c'est d'utiliser les extended_information :Pour un symbole calibré du genre O="ON", 1="OFF", tu récupères ces calibrations par les extended information au début de l'échange; puis en TSP tu échanges la valeur (0 ou 1), et avec ton consumer tu ré-appliques la calibration.
La requête lisant les samples :
TSP_consumer_read_sample ne retourne qu'un sample à la fois?
Si c'est la cas, comment va t-on faire pour avoir tous les samples d'une fréquence donnée ( question du sleep à faire après chaque read ). Est-ce performant pour des hauts débits d'acquisition (500 valeurs à 32 Hz) ?
C'est vrai que l'API est un peu simpliste. Mais on a vu des consumers avec plus de 1000 symboles à 100Hz (donc du 100000 symboles/seconde) qui tenait très facilement les perfos avec cette API. Donc je ne pense pas que cela soit trop pénalisant.
De plus, le provider nous fournit une variable "time" pour dater les valeurs reçues. Si on ne reçoit qu'un sample à la fois, comment va t-on gérer cette variable?
En fait tu as dans chaque symbole reçus un "time-stamp" TSP, qui te groupe les symboles par blocs.
En gros ta boucle de réception c'est "Tant que c'est le même time-stamp", c'est des symboles d'un même groupe, et donc le symbole "time" est valable pour tout ce groupe.
Des que te time-stamp change, c'est que tu passes à un nouveau groupe, et que tu peux envoyer tout le bloc précédemment reçus qui sont cohérents temporellement.
Merci aussi pour tes questions.