IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

SimpleBLE : AV inexplicable au droit de SimpleBleAdapterScanStart. Irritant [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 412
    Billets dans le blog
    2
    Par défaut SimpleBLE : AV inexplicable au droit de SimpleBleAdapterScanStart. Irritant
    Bsr à vous,

    Je me familiarise avec la librairie SimpleBLE et le projet InsideBlue fonctionne sans problème: BT_Bric4_dvp.zip

    J'ai créé un projet de test (PiloteBRIC4) pour un objet TBRIC4 qui gère la connexion BLE

    Découverte du BT LE: OK
    Init BLE: OK

    Au droit du SimpleBleAdapterScanStart et SimpleBleAdapterScanStop: AV

    Je suis sous Linux Mint 21 64 bits, Lazarus 2.2.0 et FPC 3.3.2 amd64 bits

    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
     
    procedure TBRIC4.StartDiscoveryDevices();
    var
      ERR: TSimpleBleErr;
    begin   
      AfficherMessageErreur('%s.StartDiscoveryDevices(): 0x%X', [classname, BleAdapter]);
      AfficherMessageErreur('000');
      if (not FlagBleScanningActive) then
      begin
        AfficherMessageErreur('FA: 001');
        FlagBleScanningActive := true;
        AfficherMessageErreur('FI: 002');
        FTimer.OnTimer := @self.ScanTimer;
        FTimer.Enabled := True;
        AfficherMessageErreur('Devices found: %d', [PeripheralNofDevices]);
        AfficherMessageErreur('FA: 003');       // OK
        SimpleBleAdapterScanStart(BleAdapter);  // <--- AV ici
        AfficherMessageErreur('FA: 004');
      end
      else
      begin
        AfficherMessageErreur('FI: 001');
        FlagBleScanningActive := false;
        AfficherMessageErreur('FI: 002');
        FTimer.OnTimer := nil; // @self.ScanTimer;
        AfficherMessageErreur('FI: 003');
        SimpleBleAdapterScanStop(BleAdapter);
        AfficherMessageErreur('FI: 004');
      end;     
    end;
    Dans le OnTimer de TBRIC4:

    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
     
    procedure TBRIC4.ScanTimer(Sender: TObject);
    begin
      if (FTimer.Enabled) then
      begin
        AfficherMessageErreur('%s.ScanTimer()', [ClassName]);
     
        //exit;
        // check if BLE adapter is still enabled
        if SimpleBleAdapterIsBluetoothEnabled() <> BleIsEnabled then
        begin
          BleIsEnabled := SimpleBleAdapterIsBluetoothEnabled();
          if (not BleIsEnabled) then
          begin
            AfficherMessageErreur('Bluetooth is disabled.');
            FlagBleScanningActive := false;
            ScanClearPeripheralList;
            Exit;
          end
          else
          begin
            AfficherMessageErreur('Bluetooth is enabled.');
            FlagBleScanningActive := false;
            SimpleBleAdapterScanStop(BleAdapter);
            Exit;
          end;
        end; // if SimpleBleAdapterIsBluetoothEnabled() <> BleIsEnabled then begin
        if (FlagBleScanningActive and (PeripheralNofDevices > 0)) then
        begin
           AfficherMessageErreur('Devices found %d: ', [PeripheralNofDevices]);
        end;
      end; // if (FTimer.Enabled) then
    end;
    Inexplicable et irritant +++

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    Je me demande si ce ne serait pas lié à l'omission de fournir aux susdites fonctions les Callbacks qui leur sont nécessaires par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SimpleBleAdapterSetCallbackOnScanStart : function(Handle: TSimpleBleAdapter; Callback: TSimpleBleCallbackScanStart; UserData: PPointer): TSimpleBleErr;  cdecl;
    SimpleBleAdapterSetCallbackOnScanStop : function(Handle: TSimpleBleAdapter; Callback: TSimpleBleCallbackScanStop; UserData: PPointer): TSimpleBleErr; cdecl;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre très actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 412
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Bonjour,
    Je me demande si ce ne serait pas lié à l'omission de fournir aux susdites fonctions les Callbacks qui leur sont nécessaires par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SimpleBleAdapterSetCallbackOnScanStart : function(Handle: TSimpleBleAdapter; Callback: TSimpleBleCallbackScanStart; UserData: PPointer): TSimpleBleErr;  cdecl;
    SimpleBleAdapterSetCallbackOnScanStop : function(Handle: TSimpleBleAdapter; Callback: TSimpleBleCallbackScanStop; UserData: PPointer): TSimpleBleErr; cdecl;
    Les callbacks avaient été effectivement affectés mais l'un d'entre eux déclenchait une AV sans rapport avec la bibliothèque SimpleBLE. Résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Clic droit/gauche souris
    Par Mouse! dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 30/05/2013, 20h34
  2. Evènement sur clic droit !?
    Par soccersoft dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2002, 21h39
  3. gérer le clic gauche-droite en même temps de la sou
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2002, 22h52
  4. Tracer une ligne droite sans les interruptions
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/11/2002, 01h22
  5. [VB6] [Printer] Chiffres alignés à droite
    Par Laye dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 03/10/2002, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo