2009-05-19 4 views
2

Ich arbeite an einer Möglichkeit, Befehle von einer Website an ein Arduino-Board zu senden. Das Arduino-Board ist über einen USB-Anschluss (einen COM-Port) mit dem Computer verbunden.ASP.NET-Webseite zum Verbinden des Geräts mit dem USB-Anschluss (COM)

Ich habe es geschafft, die Platine mit einem VB.NET-Programm zu verbinden und zu steuern. Ich schrieb auch eine VB.NET-Klasse, die eine COM-Verbindung instanziieren und Nachrichten senden und empfangen kann.

Mein nächster Schritt besteht darin, ein Programm zu erstellen, das als Proxy zwischen meinem Webserver (IIS 7 unter Windows   Vista) und dem Arduino-Board fungiert. Wenn ein Benutzer auf meine ASP.NET-Seite gelangt, sendet die Seite einen Befehl an den Proxy, um die COM-Verbindung zu öffnen. Wenn die Verbindung offen und bereit ist, kann ich Befehle an den Proxy senden. Im Gegenzug sendet der Proxy diese Befehle an das Board und lauscht auf die Antworten, die er vom Board erhält. Der Proxy leitet diese Nachrichten dann an die ASP.NET-Seite zurück.

Ich habe einige Fragen, die ich die Gruppe hoffen, mir antworten helfen ...

  1. Bin ich in die richtige Richtung mit diesem Ansatz? Gibt es dafür einfachere oder effizientere Möglichkeiten?

  2. Das Hauptproblem, das ich sehe, ist, dass wenn ein zweiter Benutzer die Webseite öffnet und versucht, den COM-Port zu öffnen, wird ein Fehler auftreten. Wird dadurch die erste Verbindung fehlschlagen? Ich denke, ich kann zuerst überprüfen, ob der Port bereits verwendet wird und dem zweiten Benutzer eine Nachricht geben.

  3. Gibt es weitere potenzielle Herausforderungen, die ich vermisse oder nicht sehe?

+0

Quick Update: Ich weiß, dass ich jetzt direkt von asp.net auf den seriellen Anschluss verbinden kann. Allerdings möchte ich die Verbindung nicht jedes Mal öffnen und schließen, wenn ich die Seite poste. Da das http staatenlos ist, kann ich nicht direkt eine serielle Verbindung über http öffnen. Ich möchte die Verbindung geöffnet haben, während die Benutzersitzung aktiviert ist oder wenn der Benutzer sich abmeldet oder einen Schließbefehl sendet. Vielen Dank! – Andres

+0

Es scheint, dass ich eine mögliche Lösung gefunden habe .. einfach das Objekt, das ich verwende, um eine Verbindung zu meinem Board in einer Session-Variable, und dann auf die Session var durch CTyping scheint es den Trick zu tun! Eine einfache Lösung für das, was ich für ein kompliziertes Problem hielt. Keine Notwendigkeit für die Proxy-App ... Allerdings würde ich gerne hören, welche anderen Lösungen in den Köpfen der Experten sind! – Andres

Antwort

1

Anstatt das Verbindungsobjekt in den HttpSessionState speichern, speichern sie in den HttpApplicationState, so dass es für alle Benutzer zugänglich ist.

Sie müssen vorsichtig sein, um den Zugriff auf den COM-Port zu synchronisieren, um zu vermeiden, dass die durch einzelne HTTP-Anfragen ausgelöste serielle Kommunikation durcheinander gebracht wird und den Arduino verwirrt.

+1

Vielen Dank für Ihre Antwort. Ich denke, ich habe es herausgefunden. Die Sache ist, dass ich wirklich nicht möchte, dass zu viele Benutzer darauf zugreifen. Es soll eine interne App sein, die nur eine Person benutzen muss. Ich habe für die Anwendung eine Authentifizierung verlangt. Ich werde jedoch mit dem Anwendungsstatus plcpay, um zu sehen, ob dies einen Unterschied macht. Danke noch einmal! – Andres

Verwandte Themen