NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

interactive execution betweend thread sequence and C# application client (by using API)

Hi,

 

I am interested to launch interactive execution between thread sequence and C# application client.

 

C# application client is in charge of loading and excuting sequence. During execution I would like set and get sequence parameters. but I don't know how to do it.

 

In fact, I create the sequence with the Test Stand Editor and I would like send data to C# application client after special step. I guess I have to include step in the sequence which are in charge of call  C# application callback.

 

Am I right ? How I have to do it ?

 

thanks

 

sebastien

0 Kudos
Message 1 of 5
(3,330 Views)

Hi Sebastien,

 

Maybe you should have a look at TestStand Notifiers, you can have an example right here : http://zone.ni.com/devzone/cda/epd/p/id/5113

 

Let me know if this helps !

 

Have a nice day.

 

Regards,

0 Kudos
Message 2 of 5
(3,308 Views)

Merci beaucoup pour le lien, ca à l'air de ressembler drolement à mes besoins. Je vous dirais ce qui l'en est.

 

Thanks, it seems that his could help me ! You will have my feedback.

 

sebastien

0 Kudos
Message 3 of 5
(3,305 Views)

Bonjour,

 

Avez vous réussi à réaliser ce que vous souhaitiez ?

 

Cordialement,

0 Kudos
Message 4 of 5
(3,284 Views)

Bonjour,

 

non, je n'ai pas encore réussi à faire ce que je voulais. J'ai lu attentivement l'exemple que vous m'avez fourni et:

 

1. je ne pense pas avoir besoin de creer 1 thread dédié à un traitement spécifique. (le process que je souhaite executer est complètement séquentiel). la "mainSequence devrait me suffire).

 

2. de plus, dans votre exemple, l'instance de la classe qui réalise le traitement est crée par la sous-sequence depuis l'editeur de séquence. Le probleme c'est que j'ai besoin de notifier une classe observer de celle-ci à qui je transmet des paramètres. Du coup, je ne vois pas comment obtenir la reference de cette observer.

 

Voici ce que j'ai besoin de faire:

 

la methode "Main" de l'appli C# se charge:

 

1. d'instancier une vue classe CForm dont le role est d'afficher des données

- CForm est Observer d'une classe CClientsTS

- donc CForm hérite de IClientTSObserver qui dispose notamment d'une methode notifyParameters(param1, param2)

- cette methode se charge de mettre à jour les champs de la fenêtre CForm avec les paramètres transmis.

 

2. d'instancier une classe CClientTS qui dispose d'une méthode sendParameters(param1, parm2) qui appelle la méthode de l'observer CForm::notifyParameters(param1, param2)

 

3. d'instancier une classe CExecution qui se charge de charger et de lancer l'execution d'une séquence via le fichier "maSequence.seq".

A ce moment là j'aimerais transmettre à la séquence une reference sur l'instance de CClientTS, ainsi, à un step donné de la séquence nous serions capables d'appeler la methode  CClientTS:: sendParameters(param1, parm2) qui elle appelerait la methode de l'observer pour updater l'affichage.

 

J'ai vu qu'il était possible de transmettre des reference d'objet au moment où l'on démarre la séquence grâce à la methode Engine::NewExecution(...). Mais peut on transmettre n'importe quel type d'objet ?

ce que je voulais faire c'est transmette l'objet de type CClientTS encapsulé dans un property object. Est ce possible ?

 

J'ai essayé d'être le plus clair possible mais vous voyez où je veux en venir ? 

 

sebastien LE PORT 

0 Kudos
Message 5 of 5
(3,266 Views)