Bonjour,

CPU : Raspberry PI 4 B
OS : RASPBIAN
Langage : LAZARUS 2.0.0 + dfsg - 2
Compilateur : FPC 3.0.4

Je cherche à faire un genre de "chrono" pour mesurer des temps d'exécution de routine, donc avec une précision à la µs.

Mes recherches m'ont amenées à trouver l'exemple ci dessous, mais que je n'arrive pas à faire fonctionner.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
unit UCompteurNano;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, baseUnix, SysUtils, cthreads, Ctypes;
 
Procedure DebCompteur;
function  FinCompteur:string;
 
Const
  CLOCK_MONOTONIC = 1;
 
Type
  timespec = record
    tv_sec   : time_t;
    tv_nsec : clong;
  end;
var startTime : timespec;
     EndTime   : timespec;
 
    Procedure clock_gettime(clk_id : cint; tp:ptimespec); cdecl; external 'C' name 'clock_gettime';
 
implementation
 
Procedure DebCompteur;
begin
    clock_gettime(CLOCK_MONOTONIC, @startTime);
end;
 
function FinCompteur:string;
Var duree:Int64;
begin
   clock_gettime(CLOCK_MONOTONIC, @EndTime);
   duree:=(EndTime.tv_sec - StartTime.tv_sec)*1000000000;
   duree:=duree + (EndTime.     tv_nsec - StartTime.tv_nsec);
   result:=IntToStr(duree) + 'ns';
end;
 
end.
D'après ce que j'en ai compris, j'utilise une librairie en "C" dans Lazarus, je pense que cette utilisation me pose des problèmes.
De plus je ne sais pas si cette librairie est installée sur mon Raspberry.

Lorsque je met les deux unités suivantes "cthreads, Ctypes", le code se compile, mais le programme ne se lance plus.
Si j'ajoute l'appel à la " DLL => clock_gettime ", le code ne se compile plus.

Si quelqu'un a des idées, je suis bien sur preneur !

bonne soirée.