Forum: PC-Programmierung SerialPort über WebApplication


von Tony (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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?

von Tony (Gast)


Lesenswert?

Es handlet sich um eine ASP Seite die in VB programmiert ist.

von Peter (Gast)


Lesenswert?

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)

von Tony (Gast)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

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?

von Tony (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

wie schon gesagt, schreib es einfach mal hin. Ich habe keine Ahnung was 
die Toolbox bei einer ASP seite auch machen soll.

von Tony (Gast)


Lesenswert?

Schreibe ich  "Dim instance As SerialPort" bekomme ich die Fehlermeldung 
"Der Typ "SerialPort" ist nicht definiert."

von Tony (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

hast du auch das passende import hingeschrieben?

von Peter (Gast)


Lesenswert?

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.

von Tony (Gast)


Lesenswert?

Kannst du mir bitte den Link einmal geben ?

von Peter (Gast)


Lesenswert?

da steht auch nichts mehr drin als ich geschrieben habe. Also kein 
Beispiel oder so.

Such doch einfach mal nach "asp SerialPort".

von Dr..gelbschwanz (Gast)


Lesenswert?

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

von Jonas (Gast)


Lesenswert?

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!

von Tony (Gast)


Lesenswert?

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 ?

von Gerry E. (micky01)


Lesenswert?

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

von Tony (Gast)


Lesenswert?

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.

von Simon K. (simon) Benutzerseite


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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 )

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

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)

von Tony (Gast)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

wenn du eine asp hast braucht du keine html.

von Tony (Gast)


Lesenswert?

Kann es sein das Apache keine .ASPX Dateien wiedergeben kann?
IIS 7 kann das aber oder ?

von Tony (Gast)


Lesenswert?

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 ?

von Peter (Gast)


Lesenswert?

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.

von Tony (Gast)


Lesenswert?

Ist das denn unter IIS so ohne weiteres möglich oder bedarf es da auch 
erst wieder einigen Einstellungen ?

von Peter (Gast)


Lesenswert?

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.

von Tony (Gast)


Lesenswert?

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 ?

von Tony (Gast)


Lesenswert?

Ok hab es jetzt am laufen mit IIS 7.
Jetzt kann ich mich endlich mal wieder dem Problem mit dem SerialPort 
zuwenden.

von Tony (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von Tony (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von Tony (Gast)


Lesenswert?

Ok hab jetzt alles am laufen :)
Schönen Dank für eure Hilfe.

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
Noch kein Account? Hier anmelden.