Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
Delphi 2005 Professional
|
Re: router fernsteuern
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
|
|
Zitat
|