Forum: PC-Programmierung HTML, Scriptsprache und COM-Schnittstelle


von Frank B. (frank501)


Lesenswert?

Hallo,

erst mal hoffe ich, mit meinem Problem im richtigen Forum gelandet zu 
sein.

Meine Problemstellung ist folgende:
ich möchte eine HTML Seite erstellen, die auf meinem Homeserver liegt 
und mit Apache ausgeliefert wird. Auf der Seite möchte ich
1.: Buttons haben, die mir beim anklicken ein bestimmtes Byte an die 
Serielle Schnittstelle (Com) senden,
2.: Werte, welche von der seriellen Schnittstelle kommen anzeigen.

Hintrgrund : Die Seite will ich von Rechnern im Netzwerk, aber auch von 
außen, evtl. mit dem Handy abrufen können um damit Daten meiner 
Heizungssteuerung und Heimautomatisierung anzuzeigen und Befehle an 
diese senden zu können.

Die serielle Schnittstelle kann eine echte Com-Schnittstelle sein oder 
an einem USB-Adapter hängen, da habe ich die freie Auswahl.

Die Daten werden dann von einem ATMega ausgewertet beziehungsweise 
gesendet. Wenn es nötig ist, kann der µC auch die Daten auf einen Befehl 
vom Server senden (Senden nach Empfang eines bestimmten Bytes).

Ich habe geringfügig Ahnung von HTML, aber leider überhaupt keinen 
Schimmer was Scriptsprachen angeht.
Deshalb möchte ich  mir zuerst einmal einen Überblick verschaffen, was 
ich überhaupt für dieses Projekt benötige.
Ich kann auf dem Homeserver der unter Linux läuft, installieren, was 
dafür benötigt wird (PHP, Perl?), weiß aber nicht, ob ich damit weit 
genug bin, um irgend wie auf die serielle Schnittstelle zuzugreifen und 
wenn ja, wie ich das programmieren muß weiß ich nicht.

den µC kann ich programmieren, aber was die PC-Seite angeht habe ich 
keine große Ahnung, was ich brauche und wie ich es machen muß.

Frank

von Julian O. (juliano)


Lesenswert?

Benutz doch mal die Suche, es gibt sogar nen Artikel im Wiki

Ich habe die Suchwörter "php com" verwendet

von cube (Gast)


Lesenswert?

also buttons sind kein problem
1
>input type="button" name="b1" value="Licht" onclick="">
einfach mal genauer google nach html button und javascript.
Was mir eher zu denken gibt, ist das mit dem bytes senden. Das geht 
soweit ich weiß nicht mit JS. Aber schua mal hier: 
http://thomaspfeifer.net/
Der hat sich einen Webserver mit nem AVR gebaut und kann auch übers 
Handy, PC drauf zugreifen und steuern. Wie das PC-Seitig gemacht wurde 
keine Ahnung. Einfach mal schauen.

von Peter (Gast)


Lesenswert?

Wenn man es richtig machen will, sollte man eine im Hintergrund laufende 
Anwendung schreiben die sich nur im die COM kümmernt. Aus der 
Scriptsprache kommuniziert man das mit dem Hintergrundprogramm. Das hat 
den Vorteil das die Schnittstelle nur von einer Anwendung ansgeprochen 
wird.
Wenn es ein weniger unsauber sein soll, dann kan man einfach eine PERL 
CGI script schreiben was bei jedem request die com öffnen und wieder 
schliesst. Aber was ist wenn mal 2 Request gleichzeigt ankommen?

Wenn es unter windows laufen soll, könnte man es mit einer ASP-Anwendung 
machen, die Anwendung selber läuft nur einmal aber für jeden Request 
wird einen neues Request objekt gebildet.

von Frank B. (frank501)


Lesenswert?

Julian O. schrieb:
> Benutz doch mal die Suche, es gibt sogar nen Artikel im Wiki
>
> Ich habe die Suchwörter "php com" verwendet

Den Artikel hab ich auch gefunden, aber wie binde ich das ganze in eine 
HTML Seite ein?



Artikel ausdem Wiki
> Man sollte sich in PHP auskennen und nötigenfalls in der Lage sein PHP
> neu zu kompilieren

Mit PHP kenne ich mich überhaupt nicht aus. Ich wusste bis eben nicht 
einmal, daß man das compilieren muß und bin davon ausgegangen, daß es 
eine Scriptsprache ist.



cube schrieb:
> Webserver mit nem AVR gebaut

Es gibt ja einige Webserver mit Mikrocontrollern als Bausatz, fertig 
oder im Netz, aber eine solche Lösung wollte ich eigentlich vermeiden, 
da ich die Anzahl der Module/Geräte für meine Hausautomation minimieren 
wollte. Deshalb wollte ich den schon vorhandenen Server mit verwenden.


Alles in allem suche ich eine einfache Lösung, die mir mit steiler 
Lern/Erfolgskurve zu einer Lösung verhilft, was nicht heißen soll, das 
ich nicht bereit wäre zu lernen, aber die Zusammenhänge PHP, HTML, 
Hardware sind mir wirklich überhaupt nicht klar.
Natürlich könnte ich ein fertiges Script wie aus dem Beispiel im Wiki 
verwenden, aber trotzdem fehlt mir der Zusammenhang mit der HTML Seite, 
den ich nicht verstehe.

Frank

von Kalka (Gast)


Lesenswert?

Hey,

also ich denke hier gibt es viele Wege - empfehlen würde ich dir 
folgenden:

Zunächst musst du lernen mit PHP ein wenig umzugehen, da wirst du nicht 
großartig drum rum kommen. Das ist allerdings auch gar nicht so 
schwierig, da gibt es genug Anleitungen zu.

Weiter solltest du dich mit Datenbank-Systemen beschäftigen. Stichwort 
MySQL.

Jetzt setzt du dir einen kleinen Server, auf welchem dann ein Web- sowie 
Datenbank-Server läuft. Deine Web-Applikation kann dann einfach Daten in 
eine Tabelle schreiben (eine Art "Command"-Tabelle).


Ein zweites Programm sollte dann im Hintergrund regelmäßig die Datenbank 
pollen - natürlich nicht zu häufig, damit nicht zu viel traffic entsteht 
(minütlich?).
Findet dieses Programm dann Daten in der "COmmand"-Tabelle, kann es den 
entsprechenden Befehl abarbeiten. Eventuell kann man hier noch angeben, 
ob das Programm den Befehl ausgeführt hat und wann - oder ob eben etwas 
schief gegangen ist.


Für diesen Fall brauchst du allerdings auch erfahrung in 
Anwendungsentwicklung, um eben dein "Üebrwachungsprogramm" zu erstellen.


Vom Web direkt auf die Com-Schnittstelle zuzugreifen halte ich nicht für 
sinnvoll - es ist halt einfach nicht dafür gemacht.

Viele Grüße,
  Kalka

von Markus V. (valvestino)


Lesenswert?

Eine weitere, recht mächtige Möglichkeit wäre JSP (Java Server Pages). 
Beim Page-Request werden  Teile der Web-Page (HTML-Code) dynamisch durch 
Java-Programme (Servlets) auf dem Web-Server erzeugt und and den Client 
geschickt. Es handelt sich dabei NICHT um Java-Script, das clientseitig 
ausgeführt wird.

Der Vorteil bei einer derartigen Lösung ist, man braucht auf dem Client 
keinerlei Plugins, Addons, Softwarepakete... Auf dem Server benötigt man 
einen Web-Server, der JSP kann, z.B. den Open-Source-Server Tomcat. Von 
dort aus hat man dann Zugriff auf alle Resourcen, die von Java aus 
zugänglich sind, z.B. Datenbanken, Com-Schnittstellen, Dateissystem, ...

Hier ein Tutorial dazu:
http://www.jsptutorial.org/

@Kalka
> Vom Web direkt auf die Com-Schnittstelle zuzugreifen halte ich nicht für
> sinnvoll - es ist halt einfach nicht dafür gemacht.

Das ist leider ziemlicher Unsinn. Mir fällt da spontan ein 
Com-Port-Server ein, dessen Oberfläche remote über Web-Clients 
dargestellt wird. Läuft bei uns in der Firma, um die Systemconsolen von 
mehreren OpenVMS-Servern remote verfügbar zu machen.

Serverseitige Zugriffe auf irgendwelche Resourcen des Servers sind dank 
Web-/Applicationserver überhaupt kein Problem, man hat damit sämtliche 
Möglichkeiten, die solch eine Architektur bietet. Selbst clientseitige 
Zugriffe auf Peripherie sind machbar (was im vorliegenden Fall des TOs 
aber garnicht gefragt ist), dann allerdings nur über Plugins.

Gruß
Markus

von Web-Applikator (Gast)


Lesenswert?

Markus Volz schrieb:
> @Kalka
>> Vom Web direkt auf die Com-Schnittstelle zuzugreifen halte ich nicht für
>> sinnvoll - es ist halt einfach nicht dafür gemacht.
>
> Das ist leider ziemlicher Unsinn. Mir fällt da spontan ein
> Com-Port-Server ein, dessen Oberfläche remote über Web-Clients
> dargestellt wird. Läuft bei uns in der Firma, um die Systemconsolen von
> mehreren OpenVMS-Servern remote verfügbar zu machen.

Das ist leider ziemlicher Unsinn.

Auf dem Com-Port-Server ist ein Webserver (+ggfs Applikationsserver), 
der auf den Comport zugreift.
Der Webbrowser kommuniziert über HTTP (vermutlich AJAX) mit diesem.
Wär ja auch komisch, wenn man von jedem Webbrowser, der potenziel auf 
den Com-Port-Server zugreifen könnte, ein dediziertes RS232-Kabel ziehen 
müsste.

Genau das braucht der TE auch... Web-Application-Server liest Infos vom 
Comport und sendet Komandos dort hin. Webbrowser kommuniziert über HTTP 
mit dem Server.

von Frank B. (frank501)


Lesenswert?

Hallo noch mal,

ich habe mir die komplexität des Themas deutlich geringer vorgestellt 
als sie es anscheinend ist.
Also werde ich das ganze wie es aussieht fallen lasen und notgedrungen 
doch auf einen der externen Webserver wie den Digi connect ME zurück 
greifen.

Danke für alle die helfen wollten.

Frank

von Purzel H. (hacky)


Lesenswert?

Ich hab mal ein Jahr lang auf diesem Thema gearbeitet. Ein Webserver auf 
dem AVR, der mit einer seriellen Schnittstelle mit dem PC verbunden ist. 
Die Verbindung zu diesem PC kann auch ueber das Internet laufen. Und die 
serielle Verbindung zwischen PC und Webserver, benoetigt nicht unbedingt 
ein Kabel, wie RS232, RS422, RS485, sondern kann auch ueber Zigbee, oder 
Bluetooth laufen. Der Ethernet-Serial Dienst benoetigt nicht zwingend 
einen PC, das kann auch was anderes sein.

von Nico22 (Gast)


Lesenswert?

Frank B. schrieb:
> Mit PHP kenne ich mich überhaupt nicht aus. Ich wusste bis eben nicht
> einmal, daß man das compilieren muß und bin davon ausgegangen, daß es
> eine Scriptsprache ist.

PHP ist eine Scriptsprache, die man nicht kompilieren muss.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Nico22 schrieb:
> PHP ist eine Scriptsprache, die man nicht kompilieren muss.
PHP muß man sehr wohl kompilieren, es sei den man nutzt fertige Pakete.
Und genau darauf bezog sich der Kommentar, da man PHP (welches im Source 
vorliegt) durchaus auch auf der Ebene "RS232 Tauglich" machen kann, nur 
muß man den PHP Interpreter dann natürlich neu kompilieren.

"PHP-Skripte" werden meist nicht compiliert sondern interpretiert, aber 
es gibt durchaus "Optimizer" welche den Code zumindest in einen 
Zwischensprache "kompilieren"...

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.