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

Langage Delphi Discussion :

BlueTooth, est-il possible de démarrer le device au runtime ?


Sujet :

Langage Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut BlueTooth, est-il possible de démarrer le device au runtime ?
    Bonjour,

    Je suis flemmard aujourd'hui, le boulot n'avance pas, aussi ai-je voulu me plonger un peu sur un sujet de "diversion".

    Je voudrais savoir s'il est possible de démarrer ma carte bluetooth d'un clic de bouton de mon application et ce de manière plus facile qu'en utilisant les API Windows.
    Naievement je croyais que la propriété Enabled du composant Bluetooh l'aurait fait

    Ah, précision , je parle du bluetooth de mon PC (généralement éteint) et non de mon mobile.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Windows fournit des API pour ça, mais rien de géré à ma connaissance dans le TBluetoothManager et les composants associés.

    L'activation des composants ne fait que déclencher le processus d'utilisation de l'API et la recherche automatique d'appareils compatibles à portée ou déclarés dans le système (selon la plateforme).

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Citation Envoyé par pprem
    rien de géré à ma connaissance dans le TBluetoothManager
    c'est bien ce que je craignais

    Toutes solutions que j'ai pu trouver à base de commandes, shell etc.. semblent nécessiter les droits administrateur.

    Par acquit de conscience j'ai même vérifier ce que WMI les pouvaient faire pour moi
    Code WSQL : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from Win32_PnPEntity where pnpclass='BlueTooth'
    Si le bluetooh est désactivé, une seule ligne dispo
    instance of Win32_PnPEntity
    {
    Caption = "Realtek Bluetooth 4.2 Adapter";
    ClassGuid = "{e0cbf06c-cd8b-4647-bb8a-263b43f0f974}";
    CompatibleID = {"USB\\Class_E0&SubClass_01&Prot_01", "USB\\Class_E0&SubClass_01", "USB\\Class_E0"};
    ConfigManagerErrorCode = 0;
    ConfigManagerUserConfig = FALSE;
    CreationClassName = "Win32_PnPEntity";
    Description = "Realtek Bluetooth 4.2 Adapter";
    DeviceID = "USB\\VID_0BDA&PID_B00A\\00E04C000001";
    HardwareID = {"USB\\VID_0BDA&PID_B00A&REV_0110", "USB\\VID_0BDA&PID_B00A"};
    Manufacturer = "Realtek Semiconductor Corp.";
    Name = "Realtek Bluetooth 4.2 Adapter";
    PNPClass = "Bluetooth";
    PNPDeviceID = "USB\\VID_0BDA&PID_B00A\\00E04C000001";
    Present = TRUE;
    Service = "BTHUSB";
    Status = "OK";
    SystemCreationClassName = "Win32_ComputerSystem";
    SystemName = "LAPTOP-781VSPO9";
    };
    mais à ma connaissance WMI ne fait que de la lecture, lecture dans le b....l qu'est la base de registre cela dit. Serait-il alors possible d'activer le bluetooth en tapant dans la base de registre ? C'est l'objectif de ce matin, affaire à suivre.

    D'un autre côté, je pense aussi à Ubuntu (pas à OSX je n'ai pas de pommier sous la main) et là adieu WMI, base de registre etc. Bonjour les {$IFDEF}
    Tout ça pour tenter d'utiliser un mobile comme lecteur de code barre ! Je suis ou trop curieux.

    Le pire est que je suis persuadé d'avoir déjà posté sur ce sujet (la partie inventaire avec mon mobile), Alois Alzheimer me guette ?

    Autre chose, j'ai toujours en tête la demande de Chekkal or au cours de mes essais (programmes de démo) j'ai vu ceci :
    Nom : Capture.PNG
Affichages : 230
Taille : 29,4 Ko
    Il serait donc possible d'utiliser un service SMS Malheureusement cette démo fait un remplissage des services à partir de constantes et non de services "réels" il va falloir que j'étudie chaque exemples de ce répertoire (C:\Users\Public\Documents\Embarcadero\Studio\21.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Autre chose, j'ai toujours en tête la demande de Chekkal or au cours de mes essais (programmes de démo) j'ai vu ceci :
    Nom : Capture.PNG
Affichages : 230
Taille : 29,4 Ko
    Il serait donc possible d'utiliser un service SMS Malheureusement cette démo fait un remplissage des services à partir de constantes et non de services "réels" il va falloir que j'étudie chaque exemples de ce répertoire (C:\Users\Public\Documents\Embarcadero\Studio\21.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth)
    dans cet exemple les services correspondent probablement aux services GATT publiés par l'appareil auquel on est connecté en BT LE

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Re,
    Non, dans l'exemple cela semble être des constantes lues dans le programme et non récupérée en fonction de l'appareil il me semble mais peu importe, cette histoire de service SMS/MMS m'intrigue j'aimerai en savoir plus.

    N.B. pour Ubuntu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    systemctl {start|stop|restart} bluetooth
    semblerait la piste (cmde non testée) mais il y a aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rfkill {unblock|block-list} bluetooth
    pour windows, j'ai pu voir un script powershell à étudier
    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
    [CmdletBinding()] Param (
        [Parameter(Mandatory=$true)][ValidateSet('Off', 'On')][string]$BluetoothStatus
    )
    If ((Get-Service bthserv).Status -eq 'Stopped') { Start-Service bthserv }
    Add-Type -AssemblyName System.Runtime.WindowsRuntime
    $asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]
    Function Await($WinRtTask, $ResultType) {
        $asTask = $asTaskGeneric.MakeGenericMethod($ResultType)
        $netTask = $asTask.Invoke($null, @($WinRtTask))
        $netTask.Wait(-1) | Out-Null
        $netTask.Result
    }
    [Windows.Devices.Radios.Radio,Windows.System.Devices,ContentType=WindowsRuntime] | Out-Null
    [Windows.Devices.Radios.RadioAccessStatus,Windows.System.Devices,ContentType=WindowsRuntime] | Out-Null
    Await ([Windows.Devices.Radios.Radio]::RequestAccessAsync()) ([Windows.Devices.Radios.RadioAccessStatus]) | Out-Null
    $radios = Await ([Windows.Devices.Radios.Radio]::GetRadiosAsync()) ([System.Collections.Generic.IReadOnlyList[Windows.Devices.Radios.Radio]])
    $bluetooth = $radios | ? { $_.Kind -eq 'Bluetooth' }
    [Windows.Devices.Radios.RadioState,Windows.System.Devices,ContentType=WindowsRuntime] | Out-Null
    Await ($bluetooth.SetStateAsync($BluetoothStatus)) ([Windows.Devices.Radios.RadioAccessStatus]) | Out-Null
    mais je me demande si wsl (que j'ai installé/testé , sur lequel j'ai écrit un petit tutoriel resté dans mes cartons) pourrait être une solution possible au sein d'un programme delphi
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Est-il possible de bloquer le reverse engineering ?
    Par fugi dans le forum Assembleur
    Réponses: 39
    Dernier message: 31/07/2007, 02h33
  2. [IRC] -> Est-ce possible avec JBuilder ?
    Par MaTHieU_ dans le forum JBuilder
    Réponses: 4
    Dernier message: 26/08/2003, 17h24
  3. Réponses: 3
    Dernier message: 29/07/2003, 09h38
  4. Réponses: 2
    Dernier message: 16/05/2003, 10h14
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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