Entwickler-Ecke
Windows API - Bluetoothgeräte in der Umgebeung finden
jjturbo - Di 05.04.11 07:57
Titel: Bluetoothgeräte in der Umgebeung finden
Moin Forum,
ich möchte ein kleines Programm schreiben, um Bluetoothgeräte in der Nähe anzuzeigen.
Ich habe jetzt mal mit "JwaBluetoothAPIs.pas,v 1.11 2005/09/06 16:36:50 marquardt Exp $" probiert, aber mit diesem Codeschnipsel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure Finde; var hFind :HBLUETOOTH_RADIO_FIND; hDevFind :HBLUETOOTH_DEVICE_FIND; FindParams :BLUETOOTH_FIND_RADIO_PARAMS; SearchParams :BLUETOOTH_DEVICE_SEARCH_PARAMS; SearchParamsSize :dword; DevInfo :^PBLUETOOTH_DEVICE_INFO; DevInfoSize :dword; hRadio :THandle; RadioInfo :PBLUETOOTH_RADIO_INFO; RadioInfoSize :dword; begin
RadioList.Clear; DeviceList.Clear;
FindParams.dwSize := SizeOf(BLUETOOTH_FIND_RADIO_PARAMS); hFind := BluetoothFindFirstRadio(@FindParams, hRadio);
if hFind <> 0 then begin |
ist hFind immer 0.
Was mache ich denn falsch?
Gruß Oliver
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 05.04.2011 um 10:02
jaenicke - Di 05.04.11 10:11
jjturbo hat folgendes geschrieben : |
| Was mache ich denn falsch? |
Du liest die Hilfe nicht oder hast vergessen das Ergebnis hier zu schreiben...
jjturbo - Di 05.04.11 15:04
GetLasterror meldet Fehler 259, "Es sind keine Daten mehr verfügbar".
Windows.pas:
Delphi-Quelltext
1: 2: 3:
| ERROR_NO_MORE_ITEMS = 259; {$EXTERNALSYM ERROR_NO_MORE_ITEMS} |
Delete - Di 05.04.11 15:21
Mit diesem "Codeschnipsel" kann ich nichts anfangen...
jjturbo - Di 05.04.11 15:23
Delphi-Quelltext
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:
| procedure TForm1.Button1Click(Sender: TObject); const BTTimeOut = 10; var hFind :HBLUETOOTH_RADIO_FIND; hDevFind :HBLUETOOTH_DEVICE_FIND; FindParams :BLUETOOTH_FIND_RADIO_PARAMS; SearchParams :BLUETOOTH_DEVICE_SEARCH_PARAMS; SearchParamsSize :dword; DevInfo :^PBLUETOOTH_DEVICE_INFO; DevInfoSize :dword; hRadio :THandle; RadioInfo :PBLUETOOTH_RADIO_INFO; RadioInfoSize :dword;
RadioList :TStringList; DeviceList :TStringList; ErrNo :Integer; ErrText :String; begin
RadioList := TStringList.Create; DeviceList := TStringList.Create;
protokoll(clBlack,'Suche nach BT-Sendern...'); RadioList.Clear; DeviceList.Clear;
FindParams.dwSize := SizeOf(BLUETOOTH_FIND_RADIO_PARAMS); hFind := BluetoothFindFirstRadio(@FindParams, hRadio);
if hFind = 0 then begin ErrNo := GetLastError; <--Fehler 259--------------------------------------------------------- Showmessage('GetLastError meldet Fehlernr. ' + IntToStr(ErrNo) + ': ' + SysErrorMessage(ErrNo)); end;
if hFind <> 0 then begin |
ALF - Di 05.04.11 15:40
Wie währe es wenn Du noch auf das Timeout wartest! So schnell ist der Scann nicht!
Gruss Alf
jjturbo - Mi 06.04.11 07:05
Wieso Scan? BluetoothFindFirstRadio sucht doch erst mal nur nach einem Bluetoothsender im PC, oder?
jjturbo - Mi 06.04.11 10:13
Ok, danke für den Link.
Ich habe schon mehrere Varianten, die ich woanders gefunden habe ausprobiert.
BluetoothFindFirstRadio findet nichts.
Eingeschaltet ist es natürlich, ich nutze es z.B. für Skypegespräche via Bluetootheadset.
ALF - Mi 06.04.11 11:08
Mir war aber so, als hätt ich mal gelesen das ein USB-Bluetooth auch wenn es schon Aktiv ist, der Zugriff auf die Schnittstelle unter Umständen anders reagiert als eine Onboardschnittstelle. Daher die Frage nach timeout. Kann mich natürlich jetzt auch irren :gruebel:
Alf
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!