Thema: Delphi router fernsteuern

Einzelnen Beitrag anzeigen

xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#7

Re: router fernsteuern

  Alt 16. Aug 2004, 15:42
so:

Die Kommunikation mit dem Router läuft über Http, und zwar habe ich da die Indi-Komponente verwendet.

Zum Code:

SL_Router ist eine tStringlist, in die die Antwort auf die Http-Get-Anfrage gespeichert wird.
ini ist vom Typ tinifile und beinhaltet die benötigten Parameter, die in einem inifile gespeichert sind.
IdHTTP1 ist die Http-Komponente von Indi.

Delphi-Quellcode:
var SL_Router: tstringlist;
    ini: tinifile;

{-------- Router-Kommunikation + HTTP -----------------------------------------}
procedure HTTPAnfrage(Anfrage:string);
begin
    SL_Router.Clear;
   // SL_Router.Add(IdHTTP1.Get(Anfrage));
end;

function RouterKLogin:boolean;
begin
    try
      HTTPAnfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Login-Sequenz','')+ini.ReadString('Router','Passwort',''));
    except
      on E: Exception do begin
                          If pos('302',E.Message)<>0 // siehe Http-Error-Codes
                            then result:=true
                            else result:=false;
                          end;
    end;
end;

function eRouterKLogout:boolean;
begin
    try
      HTTPAnfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Logout-Sequenz',''));
    except
      on E: Exception do begin
                          If pos('302',E.Message)<>0
                            then result:=true
                            else result:=false;
                          end;
    end;
end;

procedure RouterKommunikation(typ:integer); // typ = 1 Verbindung herstellen
begin // typ = 2 Verbindung trennen
  try // typ = 3 Status abfragen
    If eRouterKLogin then
      begin
          case typ of
            1:begin
                try
                  ehttpanfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Verbinden-Sequenz',''));
                except
                  on E: Exception do
                    If pos('302',E.Message)=0
                      then ;// fehlgeschlagen
                end;
              end;

            2:begin
                try
                  ehttpanfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Trennen-Sequenz',''));
                except
                  on E: Exception do
                    If pos('302',E.Message)=0
                      then ;// fehlgeschlagen
                end;
              end;

            3:begin
                try

                  ehttpAnfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Status-Sequenz',''));
                  If AnsiContainsText(SL_Router.text,ini.ReadString('Router','Indikator-Verbunden-Sequenz','XXX'))then
                    begin
                     // Verbunden:=true;
                    end
                  else
                  If AnsiContainsText(SL_Router.text,ini.ReadString('Router','Indikator-Getrennt-Sequenz',''))then
                    begin
                     // Verbunden:=False;
                     end;
                except

                end;
              end;
            end;

      end;

      eRouterKLogout;

end;
das ini-File beinhaltet folgendes:
Code:
[Router]
IP=192.168.2.1
Port=80
Passwort=PASSWORT
Login-Sequenz=/cgi-bin/login.exe?pws=
Logout-Sequenz=/cgi-bin/logout.exe
Verbinden-Sequenz=/cgi-bin/statusprocess.exe?connect=+connect+
Trennen-Sequenz=/cgi-bin/statusprocess.exe?disconnect=disconnect
Status-Sequenz=/status_main.stm
Indikator-Verbunden-Sequenz=bWanConnected=1
Indikator-Getrennt-Sequenz=bWanConnected=0
Peter Enenkel
blubb
  Mit Zitat antworten Zitat