AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IdHttpServer

Offene Frage von "Gloegg_FHBI"
Ein Thema von Gloegg_FHBI · begonnen am 21. Feb 2012 · letzter Beitrag vom 21. Feb 2012
Antwort Antwort
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#1

IdHttpServer

  Alt 21. Feb 2012, 14:02
Hallo DP,

Ich habe eine Delphi-Anwendung, die mithilfe des TVideograbbers (Datastead) ein Video abspielt. Diese Anwendung steuere ich mithilfe einer iPhone-App. Dazu habe ich ein Datenmodul mit einem IdHttpServer hinzugefügt und folgenden OnCommandGet-EventHandler:
Delphi-Quellcode:
procedure TdmNetwork.httpServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  jo : IJSONObject;
  ctx : TRttiContext;
  typ : TRttiType;
  m : TRttiMethod;
  param : TValue;
begin
  jo := TJSON.NewObject(ARequestInfo.Params.Values['p']);
  param := TValue.From<IJSONObject>(jo);
  ctx := TRttiContext.Create;
  try
    typ := ctx.GetType(TMyVideoPlayer);
    m := typ.GetMethod(jo.GetString('Command'));
    AResponseInfo.ContentText := m.Invoke(fVideoPlayer,[param]).AsString;
  finally
    ctx.Free;
  end;
end;
In der App schicke ich dann z.B. so einen Request:
Code:
- (void) play
{
  NSURL *url = [NSURL URLWithString:@"http://ip.vom.rechner/?p={"Command":"Play"}"];
  NSString *response = [NSString stringWithContentsOfURL:url];
}
funktionert soweit prima.

Allerdings wollte ich jetzt eine Trackbar zur Fortschrittsanzeige in der App haben. Dazu habe ich in der App einen Thread erstellt, der mir alle 900ms die aktuelle Position abfragt und dann entsprechend die Value von einem UISlider (iOS-Äquivalent zu TTrackBar) setzt. Ist nicht die schönste Lösung, da hier gepollt wird, aber so komme ich um die Programmierung eines Servers in Objective-C herum.

Allerdings habe ich jetzt Ruckler im Video (kaum sichtbar im Bild, aber deutlich hörbare Audioruckler).


hier noch die Implementierung von GetPosition:
Delphi-Quellcode:
function TMyVideoPlayer.GetPosition(jo: IJSONObject): string;
var
  joResult : IJSONObject;
begin
  joResult := TJSON.NewObject;
  joResult.Put('Position',fVideoForm.getPosition);
  result := joResult.ToString;
end;
Der IdHttpServer macht für jede anfrage einen neuen Thread auf, in dem dann OnCommandGet ausgeführt wird, warum kommt es dann zu den rucklern?

PS: Ich weiß, dass das DataSnap für Arme ist, aber ich hab leider nur die Prof. und nicht die Enterprise

Geändert von Gloegg_FHBI (21. Feb 2012 um 14:53 Uhr) Grund: korrektur von missverständlicher Komponente
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: IdHttpServer

  Alt 21. Feb 2012, 14:32
Dazu habe ich in der App einen Thread erstellt, der mir alle 900ms die aktuelle Position abfragt und dann entsprechend die Value von der TrackBar setzt.
Die iPhone App fragt also auch über den Delphi Indy HTTP Server die Position ab (um sie auf dem iPhone anzuzeigen), gleichzeitig wird auf dem Server die Trackbar Position gesetzt?

Ich würde das Setzen der Trackbar Position auf dem Formular als ersten Kandidaten weglassen, vielleicht liegt hier der Grund für den Ruckler.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: IdHttpServer

  Alt 21. Feb 2012, 14:51
Sorry, hab ich mich falsch ausgedrückt. In der Anwendung gibt es keine TrackBar. In der App gibt es einen UISlider und der wird nur zum anzeigen benutzt.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz