2017-03-15 5 views
1

J'ai un projet qui a un ensemble de ressources Web haut, comme le montre l'image ci-dessous:Démarrage d'un projet spécifique service Web automatiquement lors de l'exécution d'un VI

Project tree snapshot

Actuellement, si je veux TemperatureService à Accepter les connexions, j'ai besoin de faire un clic droit, puis choisissez Démarrer. Ceci est quelque peu gênant, mais plus important encore, nécessite une étape supplémentaire de la part de l'opérateur de ces outils, ce qui pourrait conduire à une erreur humaine indésirable due à l'oubli, l'inconscience, etc

Pour cette raison, je voudrais avoir la possibilité de démarrez automatiquement TemperatureService lors de l'exécution d'un certain VI dans ce projet. Jusqu'à présent, j'ai trouvé plusieurs ressources/tutoriels 1, 2, 3, mais tout ce que je pouvais recueillir était comment le démarrage automatique de l'interface admin du service Web, ce qui se fait en ajoutant les blocs suivants au VI (principalement Open Application Reference):

VIs needed to autostart the "global" service

... qui n'a pas commencé le service. J'ai également essayé de placer la propriété de Property Node à Server:TCP Listener Active, mais cela n'a pas eu l'effet désiré non plus.

En résumé: Comment démarrer automatiquement un service Web spécifique lors de l'exécution d'un VI?

Je travaille avec LabVIEW 2015 en cours d'exécution sur un 64 bits Win 7.

+0

Ce service Web est-il supposé être autonome ou fait-il partie d'une application plus importante? Et avez-vous l'intention de le déployer sur un ordinateur sans LabVIEW (à l'aide de l'Application Builder) ou est-ce qu'il va uniquement s'exécuter dans l'environnement de développement? – nekomatic

+0

@nekomatic Ceci est supposé être un service RESTful autonome qui s'exécute uniquement dans l'environnement de développement dans le cadre de l'exécution du VI. Pour éviter le problème XY, le grand plan ici est d'être capable d'exposer une certaine valeur qui est mesurée dans LabVIEW à MATLAB (s'exécutant sur le même ou sur un autre ordinateur sur le même réseau local). –

+0

OK, selon http://zone.ni.com/reference/en-XX/help/371361M-01/lvconcepts/ws_distributing/ une fois que vous avez démarré le service à partir de l'explorateur de projet, il devrait continuer à fonctionner jusqu'à ce que vous le dépubliez à nouveau , même après un redémarrage du système, y a-t-il un problème avec le démarrage et le démarrage? Vous pouvez également atteindre votre objectif en demandant à votre VI d'exécuter son propre serveur TCP/IP (pas difficile, voir les exemples de LabVIEW) car il semble que les communications TCP/IP soient prises en charge dans MATLAB. Ou si vous avez l'Application Builder, vous pouvez déployer votre VI et votre service dans une application intégrée. – nekomatic

Répondre

1

En suivant this tutorial sur le site NI, j'ai pu créer avec succès un service Web persistante qui a continué à courir après la sortie de LabVIEW et après avoir redémarré l'ordinateur (ou au moins, la VM dans laquelle je lance LabVIEW). Comme décrit dans le tutoriel, si vous démarrez le service Web en cliquant dessus avec le bouton droit dans le projet et en choisissant Start, le service s'exécute dans un serveur de débogage qui se termine lorsque vous quittez LabVIEW.

Cependant, lorsque vous choisissez Application Web Server> Publier, le service s'exécute dans le serveur Web d'applications de LabVIEW et continue de s'exécuter après avoir quitté LabVIEW et redémarré l'ordinateur.

project window showing Publish menu

Notez que le serveur Web d'applications fonctionne sur un port différent du serveur de débogage; après avoir publié le service, cliquez avec le bouton droit sur un VI de méthode et choisissez Afficher l'URL de la méthode ... pour afficher la bonne adresse.

Method URL dialogue

En cas d'échec du déploiement avec l'erreur Target OS for this Web service differs from the Web server configuration, assurez-vous que le serveur est configured for the same runtime (à savoir 32 ou 64 bits) comme l'environnement de développement LabVIEW.

+0

Merci - c'est un conseil utile! J'ajouterais également que le déploiement pourrait échouer avec l'erreur 'Le système d'exploitation cible pour ce service Web diffère de la configuration du serveur Web. Pour l'éviter, il faut s'assurer que le serveur est configuré pour le même temps d'exécution (32 ou 64 bits) que l'environnement de développement LabVIEW, comme indiqué ici (http://digital.ni.com/public.nsf/allkb/90880283B2F833D7862577900073A2A1). –

+1

Merci, j'ai modifié cette information dans la réponse. Heureux d'entendre nous l'avons réparé! – nekomatic