Originally Posted by
cpri
No wel een vraag over de opmerking dat de call direct moet terugkeren
Met 'direct' bedoel ik een redelijk tijd. Dus dat mag wel 1 of 2 seconden zijn maar geen minuut of meer.
Want als je de service wilt stoppen dan moet die loop wel in een redelijke tijd kunnen reageren.
(en met langer dan 30 of 60 seconden kan het zijn dat Windows denkt dat je programma hangt)
Maar je kunt dus gewoon nog steeds met een aparte class werken THWP1, die met THWP1.Read de waardes uitleest, zoals ik liet zien in mijn voorbeeld.
Alleen zou ik die geen TThread maken en dus niet starten met THWP1.Start, maar gewoon direct THWP1.Read e.d. doen.
In je aparte applicatie om te testen kun je de ServiceExecute nabootsen met een eigen routine procedure TestServiceExecute waarin je hetzelfde doet.
Delphi Code:
procedure TestServiceExecute;
var
startTime64, endTime64, frequency64: Int64;
elapsedSeconds: single;
begin
QueryPerformanceFrequency(frequency64);
QueryPerformanceCounter(startTime64);
HWP1.Create( ?? );
while not Terminated do
begin
QueryPerformanceCounter(endTime64);
elapsedSeconds := (endTime64 - startTime64) / frequency64;
if elapsedSeconds >= 60 then
begin
HWP1.ReadData; // MOET direct terugkeren
HWP1.Save2DB;
QueryPerformanceCounter(startTime64);
end;
// ServiceThread.ProcessRequests(false); // De ProcessRequest hebben we hier niet nodig
Sleep(100);
end;
HWP1.Free;
end;
PS. Begrijp ik hier dat je een P1 meter device uit aan het lezen bent? Waarom dan 1x per uur.
(Je leest het in jouw voorbeeld overigens wel weer in 60 seconden uit)
Ik lees hier per 15 seconden uit (zodat ik de power direct kan zien van mijn P1 en zonnepanelen).
En doe je dit eigenlijk op een PC of server? Deze aan laten staan om een P1 uit te lezen is dan ook redelijk duur.
Een PC trekt zo 100W en dat is 876kW op jaarbasis. Wel zo even €350 per jaar.
Als je voor zoiets nu een raspberry pi (of ander boordje) pakt dan is het maar 5W (43kW = €17 op jaarbasis)
(Toen ik thuis ging werken heb ik mijn grote Dell server ook gelijk de deur uit gedaan. Die trok 170W )
Bookmarks