www.mikrocontroller.net

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


Autor: Frank B. (frank501)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Julian O. (juliano)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutz doch mal die Suche, es gibt sogar nen Artikel im Wiki

Ich habe die Suchwörter "php com" verwendet

Autor: cube (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also buttons sind kein problem
>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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank B. (frank501)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kalka (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Web-Applikator (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank B. (frank501)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nico22 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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"...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.