Zitat 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