Laden...

Bei verbundenem/entferntem Bluetooth-Gerät automatisch eine Benachrichtigung schicken

Erstellt von ill_son vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.532 Views
I
ill_son Themenstarter:in
227 Beiträge seit 2009
vor 6 Jahren
Bei verbundenem/entferntem Bluetooth-Gerät automatisch eine Benachrichtigung schicken

Hallo,

ich versuche gerade, meine Software dazu zu bringen, dass sie mich benachrichtigt, wenn ein Bluetooth-Gerät mit dem Rechner verbunden oder die Verbindung getrennt wird.

Für USB-Geräte habe ich das schon mal wie folgt implementiert:


private void Window_SourceInitialized(object sender, EventArgs e)
{
    //hook in to receive device changed event 

     IntPtr windowHandle = (new WindowInteropHelper(this)).Handle;
     HwndSource src = HwndSource.FromHwnd(windowHandle);
     src.AddHook(new HwndSourceHook(WndProc));
}

private IntPtr WndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) //device added or removed
{
    // address the messages you are receiving using msg, wParam, lParam
    if (msg == 537) //WM_DEVICECHANGE
    {
        if ((int)wParam == 7) //DBT_DEVNODES_CHANGED
            _PortScanner.StartScan();
     }

     return IntPtr.Zero;
}

Nun möchte ich das Ganze, wie gesagt, für Bluetooth haben. Google hat das hier gefunden:

Bluetooth Programming with Windows Sockets

Bluetooth and WM_DEVICECHANGE Messages

Aber so richtig schlau werde ich daraus nicht und bräuchte etwas Hilfe.

Grüße, Alex

Final no hay nada más

16.826 Beiträge seit 2008
vor 6 Jahren

Und ausserhalb der Microsoft Dokumentation hast Du nichts gefunden?
Kann mir kaum vorstellen, dass Du der Erste mit diesem Wunsch bist.

Spätestens auf die sehr bekannte 32feet.NET Open Source Bibliothek für PANs (und damit für Bluetooth) solltest Du gestolpert sein.

I
ill_son Themenstarter:in
227 Beiträge seit 2009
vor 6 Jahren

32feet habe ich natürlich gefunden, das unterstützt aber den BT-Stack meines Adapters nicht. Ich hab inzwischen noch bisschen weiter recherchiert und fürchte, dass das nicht ganz so trivial ist wie oben mit USB, weil man offensichtlich eine Verbindung zum BT-Adapter herstellen muss. Eine generelle Variante scheint also schwierig, was doof ist, da ich ja nicht weiß, auf welchem Rechner die Anwendung später läuft.

Vielleicht sollte ich noch erwähnen, dass ich am Ende mit SPP bzw. COM-Port kommunieren möchte. Ich möchte nur die Ports scannen, wenn eines meiner Geräte sich mit dem Rechner verbindet, damit man das nicht immer manuell machen muss. In der eigentlichen Anwendung habe ich mit der eigentlichen Bluetooth-Kommunikation gar nichts zu tun.

Final no hay nada más

16.826 Beiträge seit 2008
vor 6 Jahren

IIRC bietet Windows Callbacks an, auf die Du Dich setzen kannst. Meines Wissens aber gibts Unterschiede der APIs pro Betriebssystemversion.
32feet ist eben ein Wrapper für diese APIs. Wenn also 32feet den Stack nicht unterstützt, dann liegt das evtl. an der API zu Windows(Win32).

Ob Du das "automatisch Verbinden" überhaupt ohne eigenen Treiber hin bekommst weiß ich nicht; kann mir vorstellen, dass es hier eine Sicherheitshürde gibt.

I
ill_son Themenstarter:in
227 Beiträge seit 2009
vor 6 Jahren

Ich möchte mich ja nicht automatisch verbinden. Ich möchte nur eine Message, wenn ein Gerät sich verbunden hat. Wenn PC <-> Gerät sich kennen (gepaired sind) sollte das doch automatisch gehen, wenn sie in Reichweite sind. Und wenn das passiert bzw. wenn manuell eine Verbindung hergestellt wurde, hätte ich gern eine Message/Event, damit die Software bescheit weiß.

Final no hay nada más