2009-05-19 7 views
2

Je travaille sur un moyen d'envoyer des commandes à une carte Arduino à partir d'un site Web. La carte Arduino est connectée à l'ordinateur via un port USB (un port COM).Page Web ASP.NET vers le périphérique se connecter au port USB (COM) du serveur

J'ai réussi à connecter et contrôler la carte en utilisant un programme VB.NET. J'ai également écrit une classe VB.NET qui peut instancier une connexion COM et envoyer et recevoir des messages.

L'étape suivante consiste à créer un programme qui servira de proxy entre mon serveur Web (IIS 7 sous Windows   Vista) et la carte Arduino. Lorsqu'un utilisateur accède à ma page ASP.NET, la page envoie une commande au proxy pour ouvrir la connexion COM. Lorsque la connexion est ouverte et prête, je peux envoyer des commandes au proxy. À son tour, le proxy enverra ces commandes au tableau et écoutera les réponses qu'il reçoit du forum. Le proxy transmettra ensuite ces messages à la page ASP.NET.

J'ai plusieurs questions que j'espère que le groupe peut me aider à répondre ...

  1. Suis-je dans la bonne direction avec cette approche? Y a-t-il des moyens plus faciles ou plus efficaces de le faire?

  2. Le problème principal que je vois se produire est que si un deuxième utilisateur ouvre la page Web et essaie d'ouvrir le port COM, il y aura une erreur. Cela provoquera-t-il l'échec de la première connexion? Je suppose que je peux d'abord vérifier si le port est déjà utilisé et donner un message au second utilisateur.

  3. Y a-t-il d'autres défis potentiels qui me manquent ou que je ne vois pas?

+0

Mise à jour rapide: Je sais que je peux maintenant me connecter au port série directement depuis asp.net. Cependant, je ne veux pas ouvrir et fermer la connexion chaque fois que je poste la page. Puisque le http est sans état, je ne peux pas garder une connexion série ouverte via http seul. Je souhaite que la connexion soit ouverte pendant la session utilisateur ou lorsque l'utilisateur se déconnecte ou envoie une commande de fermeture. Je vous remercie! – Andres

+0

il semble que j'ai trouvé une solution possible ... en mettant simplement l'objet que j'utilise pour me connecter à ma carte dans une variable de session, puis en me reportant à la session var par CTypeing il semble faire l'affaire! Une solution simple à ce que je pensais allait être un problème compliqué. Pas besoin de l'application proxy ... Cependant, je voudrais savoir quelles autres solutions peuvent être dans l'esprit des experts! – Andres

Répondre

1

Plutôt que de stocker l'objet de connexion dans le HttpSessionState, rangez-le dans le HttpApplicationState afin qu'il soit accessible à tous les utilisateurs.

Vous devrez faire attention à synchroniser l'accès au port COM pour éviter que la communication série initiée par les requêtes HTTP individuelles ne soit mélangée et ne perturbe l'Arduino.

+1

Merci pour votre réponse. Je pense que je l'ai compris. La chose est que je ne veux vraiment pas trop d'utilisateurs pour accéder à cela. Il est destiné à être une application interne qu'une seule personne doit utiliser. J'ai fait l'application exige l'authentification. Je vais, cependant, payer avec l'état de l'application pour voir si cela fait une différence. Merci encore! – Andres

Questions connexes