Zitat von
MichWuhr
Seite aufrufen, Buttonklicken, Webserver o.ä. sended über
RS232 befehl an
AVR und der Schaltet dann irgentwas
Hallo Michael!
So etwas schüttelt man mit der richtigen Programmiersprache und dem richtigen Web-Framework innerhalb von wenigen Minuten aus dem Ärmel.
Die Programmiersprache die ich gerne verwende heißt Python http://python.org/ und funktioniert unter Windows genau so gut wie unter Linux.
Es ist zwar kein ausgeklügeltes, schönes Programm, aber es demonstriert, wie es funktionieren könnte.
Code:
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import cherrypy # http://www.cherrypy.org/
import serial # http://pyserial.sourceforge.net/
import time
class Root(object):
def __init__(self):
"""Initialisierung"""
self.lamp_status = "OFF"
def switch_lamp(self, new_status):
"""
Schaltet die Lampe ein/aus
new_status: Wenn "ON", dann wird die Lampe eingeschaltet.
Wenn nicht "ON" (z.B. "OFF") dann wird die Lampe ausgeschaltet.
"""
# Prüfen
if new_status.upper() == "ON":
new_status = "ON"
else:
new_status = "OFF"
# Verbindung zum µC herstellen und zum Schalten veranlassen
ser = serial.Serial(port = "COM1", baudrate = 9600, timeout = 1)
ser.write("SWITCH LAMP " + new_status + "\n")
# kurz warten
time.sleep(0.1)
# Antwort des µC abholen
new_status = ser.readline()
# Verbindung schließen
ser.close()
# Neuen Status speichern
if new_status.upper().strip() == "ON":
self.lamp_status = "ON"
else:
self.lamp_status = "OFF"
def index(self, switch = None):
"""
Diese Methode wird ausgeführt wenn keine Seite (nur der Ordnername)
angefordert wird. Sie liefert den Text zurück, der an den Browser
gesendet wird.
"""
# Schalten
if not switch is None:
self.switch_lamp(switch)
# HTML zurück geben
html = """
<html>
<body>
<form action=".">
<input type="submit" name="switch" value="ON">
<input type="submit" name="switch" value="OFF">
</form>
<h2>Current Status</h2>
%(lamp_status)s</p>
</body>
</html>
""" % dict(lamp_status = self.lamp_status)
return html
index.exposed = True
def main():
# Server starten
cherrypy.quickstart(Root())
if __name__ == "__main__":
main()
CherryPy ist ein kleines Web-Framework welches auch als kleiner Webserver laufen kann (wie in diesem Beispiel gezeigt wird). Gibt man im Browser "http://localhost:8080/" ein, dann wird die Seite angezeigt.
Das Ergebnis sieht dann so aus:
Bild hier
mfg
Gerold, ...der mal wieder mit seiner Lieblingprogrammiersprache angeben wollte
PS: Fast hätte ich es vergessen: Das Programm läuft auf einem PC mit Internetzugang und verhält sich wie ein Webserver. Die Schaltanweisung wird per RS-232 an den µC weitergegeben. Danach wird die Rückgabe des µC ausgewertet. Der neue Status der Lampe wird in eine Variable geschrieben, welche beim Generieren des HTML-Codes abgefragt wird.
EDIT: Ich hatte zwei Klammern vergessen
Lesezeichen