Guten Tag, ich habe mir mit Visual Studio 2008 eine kleine WebApplication programmiert die später einmal über unser Heim-Wlannetz erreichbar sein soll. Mit dieser Application möchte ich Befehle über die Serielle-Schnittstelle meines PCs (auf dem auch die WebApplication läuft) senden und empfangen. Nur weiß ich leider nicht wie ich das bewerkstelligen kann. Muss ich dazu eine XML bereitstellen ? Kann mir jemand bei diesem Problem weiterhelfen ? Schon einmal schönen Dank im Voraus.
was ist das denn für eine web anwendung? Ist es nur eine ASP seite ist es eine richtige Anwendung? In was ist sie denn Programmiert ISAPI, c#, vb?
es wird vermutlich auch mit einer ASP seite gehen, besser ist aber eine ASP anwendung zu erzeugen. Das hat den Vorteil das die Schnittstelle nicht bei jedem Request neu geöffnet werden muss. Aber die benutzen der Schnittstelle kannst du einfach mit der .net klasse SerialPort erledigen. (http://msdn.microsoft.com/de-de/library/system.io.ports.serialport(VS.80).aspx)
Ja ansich würde ich es ja auch so machen, nur steht mir die SerialPort klasse nicht zurverfügung !? Habe als Projekttyp eine ASP.NET-Webanwendung verwendet !?
was heist sie steht nicht zur verfügung? schreib sie doch einfach mal hin - was kommt da für eine Fehlermeldung? Hast du auch .net2.0 oder höher ausgewählt weil sie in 1.1 noch nicht vorhanden war?
Ich habe .NET 3.5 Das Problem ist das ich um einen SerialPort zu deklarieren für gewöhnlich das Passende Symbol aus der Toolbox in meine "Form" ziehe. Dieses Symbol taucht jedoch in der Toolbox nicht auf wenn ich als Projekttyp ASP wähle.
wie schon gesagt, schreib es einfach mal hin. Ich habe keine Ahnung was die Toolbox bei einer ASP seite auch machen soll.
Schreibe ich "Dim instance As SerialPort" bekomme ich die Fehlermeldung "Der Typ "SerialPort" ist nicht definiert."
Die Toolbox ist ja auch nicht auf der ASP Seite, sie ist ein Teil von VisuaStudio. Aus ihr kann man sich die Komponenten heraussuchen die man Auf der FertigenSeite haben möchte.
ich habe mal kurz bei google gesucht, es schein scheinbar wirklich nicht zu gehen (mir ist aber nicht ganz klar warum - ich hätte maximal ein "Access Denied" bei der ausführung erwartet). Im Internet hatte jemand empfohlen ein .net Service zu schreiben der den Seriellen port anspricht. Und die ASP seite kommuniziert dann mit den Dienst.
da steht auch nichts mehr drin als ich geschrieben habe. Also kein Beispiel oder so. Such doch einfach mal nach "asp SerialPort".
Es gab da mal so ein Tool serproxy - das ermöglicht den zugriff auf comports im Lan. http://developer.berlios.de/project/showfiles.php?group_id=3590 mfg
Also mit PHP und einem einfachen Webserver würde das schnell und einfach gehn. Nimm XAMPP (unter Windows) und guck dir diese Klasse mal genauer an: http://www.phpclasses.org/browse/package/3679.html Viel Glück!
Ich werde es einmal mit PHP versuchen, jedoch brauche ich einen anderen Webserver. Unter XAMPP bekomme ich Apache nicht zum laufen da Port80 ständig vom System belegt ist und ich nicht weiß wie ich das abstellen kann. Was ist den eine gute Alternative ? IIS ?
Tony schrieb: ... > Unter XAMPP bekomme ich Apache nicht zum laufen da Port80 ständig vom > System belegt ist und ich nicht weiß wie ich das abstellen kann. Dann läuft bestimmt schon ein anderer Webserver, eventuell sogar der bordeigene von MS. Den wirfst Du raus, und fortan hast Du keine Probleme mehr mit Apache, zumindest nicht bis zum nächsten "Neustart" Es könnte in Deinem Fall notwendig sein, mit Administratorrechten zu arbeiten...
Ich versuche schon den ganzen Tag herauszufinden was den Port blockiert,leider ohne Erfolg. Ist IIS nicht der bordeigene von MS ? Den hab ich schon gelöscht. Ausserdem habe ich nach dieser Anleitung http://blog.roman-allenstein.de/2009/11/xampp-unter-windows-7-port-80-belegt eigentlich alle Windows-Funktionen, die den Port blockieren, deaktiviert.
Mach mal
1 | netstat -no |
Such den Port 80 raus, schreib dir die Prozess ID ganz hinten auf. Dann gehste per Strg+Alt+Entf in den Taskmanager und fügst die Spalte "PID" hinzu. Dann suchste den Dienst und hast den Namen.
wenn es ordentlich sein soll dann ist leider php keine Lösung. Ich habe nichts gegen php aber ich finde es sehr unschön wenn jedes mal wenn ein php script ausgeführt wird das der comport geöffnet und wieder geschlossen wird. Was ist wenn die seite von 2 clients gleichzeigt geöffnet wird? Aus dem Grund hatte ich auch oben darauf hingeweisen das man soetwas als WebAnwednung macht, da gibt es immer nur eine Instanz der Anwendung welche den Port im zugriff hat. Jeder Clientzugriff wird dann als neuer Thread gemacht. Dies geht meines Wissens mit php nicht. Dafür gibt es entweder java oder abend ASP. (oder zur noch auch eine ISAPI Dll )
Ich habe es jetzt mal mit .net (c#) getestet. Ich kann ohne Probleme eine ASP-Webanwenung mit dem Klasse Serialport erzeugen. Also bitte versuch es weiter mit ASP, wenn du damit schon einmal angefangen hast. Es ist für diesen Zweck das bessere. gestestet mit C#Develop3.1. (Ich habe es jetzt nicht im IIS getestet, aber das estellen des Projektes geht erstmal)
@Simon K. Das Problem war die PID war 4 also System, das wird im Taskmanager nicht aufgerufen. Das Problem war die HTTP.sys von Windows 7, hatte eine Anleitung gefunden mit der man die stoppen kann. XAMPP und Apache laufen jetzt ! Also ich muss doch nun eine HTML Seite basteln die dann auf die ASP zugreift und diese HTML leg ich auf meinen Apache server, oder hab ich da jetzt einen Denkfehler drin? Habe mal in den Code der ASP eine SerialPort-Klasse mit eingebaut. Bekomme dann zunächst mal auch keine Fehlermeldung. Rufe ich jedoch den Code in einem Webbrowser auf (über "RUN" in VS), bekomme ich bei jedem Aufruf der SeriaPort-Klasse eine Fehlermeldung (in dem Webbrowser). Ich bin gerade leider nicht an meinem Rechner, werde aber heute Abend einmal meinen Test-Code posten und einen Screenshot der Fehlermeldung.
Kann es sein das Apache keine .ASPX Dateien wiedergeben kann? IIS 7 kann das aber oder ?
Ok hab XAMPP, mittels eines kleinen Updates, nun dazu gebracht .ASPX Dateien zu öffnen. Nur hilft mir das nicht weiter, da ich immer Fehlermeldungen bekomme wenn ich mit VisualStudio erstelte ASPX-Dateien mit XAMPP öffnen möchte. Hier mal ein Beispiel:
1 | Serverfehler in der Anwendung /. |
2 | |
3 | Parserfehler |
4 | |
5 | Beschreibung: Fehler beim Verarbeiten einer Resource, die für diese Anforderung erforderlich ist. Überprüfen Sie folgende Fehlerinformationen und ändern Sie die Quelldatei entsprechend. |
6 | |
7 | Parserfehlermeldung: Der Typ "WebApplication1._Default" konnte nicht geladen werden. |
8 | |
9 | Quellfehler: |
10 | |
11 | |
12 | Zeile 1: <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %> |
13 | Zeile 2: |
14 | Zeile 3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
15 | |
16 | Quelldatei: /WebApplication1/Default.aspx Zeile: 1 |
17 | |
18 | Versionsinformationen: Microsoft .NET Framework-Version:2.0.50727.4927; ASP.NET-Version:2.0.50727.4927 |
Was kann das sein ?
Warum willst du überhaupt unter Apache eine ASPX seite zum laufen bringen, dafür nimmt dann noch lieber den IIS? Ist ja so als ob man Samba auf windows zum laufen bringen wöllte.
Ist das denn unter IIS so ohne weiteres möglich oder bedarf es da auch erst wieder einigen Einstellungen ?
ohne wissen geht es auch dort nicht, aber sicherlich einfacher als einem Apache ASP beizubringen. Normalerweise sollte deine entwicklumgebung (z.b.VisualStudio)) dir alles abnehmen. Zum debuggen stellt es die sache im IIS bereit. Aber die Fragen klingen irgendwie so, das du noch nicht mal ein genauen plan hast was du eigentlich machst.
Unter Visual studio läuft ja alles so wie ich das will, mir geht es jetzt nur dadrum wie ich die ganze Sage eigenständig auf einem WebServer zum laufen bringe. Mir ist da bei allerdings noch nicht ganz klar in wie weit VS sachen in IIS übertragen kann ? Läuft das über Erstellen -> Veröffentlichen ?
Ok hab es jetzt am laufen mit IIS 7. Jetzt kann ich mich endlich mal wieder dem Problem mit dem SerialPort zuwenden.
Jetzt versucht mein Programm zwar zu senden, bekommt aber keine Zugrifsrechte auf den COM-Port.
1 | Ausnahmedetails: System.UnauthorizedAccessException: Der Zugriff auf den Anschluss COM4 wurde verweigert. |
2 | |
3 | ASP.NET darf auf die angeforderte Ressource nicht zugreifen. Gewähren Sie der ASP.NET-Anforderungsidentität Zugriffsrechte für die Ressource. ASP.NET hat eine Standardprozessidentität (gewöhnlich {MACHINE}\ASPNET unter IIS 5 bzw. Network Service unter IIS 6), die verwendet wird, wenn die Anwendung keinen Identitätswechsel ausführen kann. Wenn die Anwendung über <identity impersonate="true"/> einen Identitätswechsel ausführen kann, wird als Identität gewöhnlich der anonyme Benutzer (normalerweise IUSR_MACHINENAME) bzw. der authentifizierte Anfragebenutzer verwendet. |
4 | |
5 | Um ASP.NET Zugriff auf eine Datei zu gewähren, klicken Sie im Explorer mit der rechten Maustaste auf die Datei, wählen "Eigenschaften" und anschließend die Registerkarte "Sicherheit". Klicken Sie auf "Hinzufügen", um den entsprechenden Benutzer bzw. eine Gruppe hinzuzufügen. Markieren Sie das ASP.NET-Konto, und aktivieren Sie jeweils das Kontrollkästchen für den gewünschten Zugriff. |
Hab mal im Gerätemanager geschaut jedoch nichts zum Thema Sicherheit gefunden. Ach ja, ich benutze im mom com0com (0 Modemkabel)um die Funktion zu testen.
lege einen neuen Benuzter an, und gib im IIS der ASP seite den Benuzter. Das mit dem Exporer dürfte bei einem com port nicht gehen, das geht meines wissens nur bei Dateien.
Ok hab es hinbekommen! Hatte ganz vergessen den Port auch wieder zu schließen, daher war er im dauer Betrieb. So das schreiben und lesen des SerialPorts über meinen Webbrowser funktioniert nun :-) Jetzt bleibt nur noch ein Hindernis, wie schaffe ich es das mein Webserver auch über das Internet zu erreichen ist. (benutze jetzt nicht mehr Apache sondern IIS7). Desweiteren ist sicherlich noch ein Password nicht verkehrt.
du must deinem router sagen das er den port 80 zu deinem PC weiter leiden muss. Je nach router steht das unter Nat, Portforwarding, Server oder ähnlichen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.