Changeset 27 for trunk/UDriveScan.pas
- Timestamp:
- Apr 6, 2016, 7:45:46 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/UDriveScan.pas
r25 r27 50 50 51 51 TSpeedValue = record 52 public 52 53 Null: Boolean; 53 54 Max: Int64; 54 55 Average: Int64; 56 Values: array of Int64; 55 57 Min: Int64; 56 58 procedure Reset; … … 132 134 133 135 procedure TSpeedValue.UpdateValue(Value: Int64); 136 var 137 Sum: Double; 138 I: Integer; 134 139 begin 135 140 if Null then begin 136 141 Min := High(Int64); 137 142 Max := Low(Int64); 138 Average := 0;143 SetLength(Values, 0); 139 144 end; 140 145 Null := False; 141 146 if Value > Max then Max := Value; 142 147 // TODO: Computer average 143 Average := Value; 148 SetLength(Values, Length(Values) + 1); 149 Values[Length(Values) - 1] := Value; 150 Sum := 0; 151 for I := 0 to Length(Values) - 1 do 152 Sum := Sum + Values[I]; 153 Average := Trunc(Sum / Length(Values)); 144 154 if Value < Min then Min := Value; 145 155 end; … … 344 354 SpeedTimeCurrent: TDateTime; 345 355 Index: Integer; 356 Value: Int64; 346 357 begin 347 358 SpeedTimeCurrent := Now; 348 359 Index := Trunc(SectorCurrent / SectorCount * SpeedStepsCount); 349 360 if Index >= Length(SpeedSteps) then Index := Length(SpeedSteps) - 1; 350 SpeedSteps[Index].UpdateValue( 351 Trunc((SectorCurrent - SectorLast) * SectorSize / ((SpeedTimeCurrent - SpeedTimeLast) / OneSecond))); 361 Value := Trunc((SectorCurrent - SectorLast) * SectorSize / ((SpeedTimeCurrent - SpeedTimeLast) / OneSecond)); 362 if Value < 0 then Value := 0; 363 SpeedSteps[Index].UpdateValue(Value); 352 364 SpeedTimeLast := SpeedTimeCurrent; 353 365 SectorLast := SectorCurrent; … … 389 401 SpeedTimer.Enabled := False; 390 402 SpeedTimer.OnTimer := SpeedTimerExecute; 391 SpeedStepsCount := 1000;403 SpeedStepsCount := 500; 392 404 SectorSize := 4096; 393 405 Terminated := True;
Note:
See TracChangeset
for help on using the changeset viewer.