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.
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.
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.
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.
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.
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.
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.
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 ?
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.