Transfer-Datei vom PC auf ein anderes Gerät via Bluetooth-code-Beispiel C++

Hallo Stackoverflow-Benutzer !!!

Fragen:

  1. Ich bin auf der Suche für einige code-Beispiele, die zeigen, wie finde ich Bluetooth-Geräte, die eine Verbindung zu meinem computer.
  2. Ich bin auf der Suche für einige code-Beispiele, die zeigen, wie übertrage ich Daten von meinem Rechner auf ein mobiles Gerät.

Nun bin ich versucht, zu entwickeln, die Anwendung auf C++, die müssen arbeiten mit Bluetooth Geräte. Während ich die Erforschung über das internet fand ich einige Informationen über Bluetooth und ich fand einige code-Beispiele, die Hexe zu präsentieren, wie Sie können arbeiten mit Bluetooth-Geräten. Zum Beispiel hier ich fand code Hexe zeigt, wie Sie verwenden können, finden Sie alle bluetooth-Geräte innerhalb der Reichweite von allen bluetooth-radios:

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <bthdef.h>
#include <BluetoothAPIs.h>

#pragma comment(lib, "Irprops.lib")

//The BLUETOOTH_FIND_RADIO_PARAMS structure facilitates 
//enumerating installed Bluetooth radios.
BLUETOOTH_FIND_RADIO_PARAMS m_bt_find_radio = {
  sizeof(BLUETOOTH_FIND_RADIO_PARAMS)
};

//The BLUETOOTH_RADIO_INFO structure contains information
//about a Bluetooth radio.
BLUETOOTH_RADIO_INFO m_bt_info = {
  sizeof(BLUETOOTH_RADIO_INFO),
  0,
};

//The BLUETOOTH_DEVICE_SEARCH_PARAMS structure specifies
//search criteria for Bluetooth device searches.
BLUETOOTH_DEVICE_SEARCH_PARAMS m_search_params = {
  sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS),
  1,
  0,
  1,
  1,
  1,
  15,
  NULL
};

//The BLUETOOTH_DEVICE_INFO structure provides information
//about a Bluetooth device.
BLUETOOTH_DEVICE_INFO m_device_info = {
  sizeof(BLUETOOTH_DEVICE_INFO),
  0,
};

HANDLE m_radio = NULL;
HBLUETOOTH_RADIO_FIND m_bt = NULL;
HBLUETOOTH_DEVICE_FIND m_bt_dev = NULL;

int wmain(int argc, wchar_t **args) {
  while(true) {
    //The BluetoothFindFirstRadio function begins the 
    //enumeration of local Bluetooth radios.
    m_bt = BluetoothFindFirstRadio(&m_bt_find_radio, &m_radio);

    int m_radio_id = 0;
    do {
      m_radio_id++;

      //The BluetoothGetRadioInfo function obtains information
      //about a Bluetooth radio.
      BluetoothGetRadioInfo(m_radio, &m_bt_info);

      wprintf(L"Radio %d:\r\n", m_radio_id);
      wprintf(L"\tName: %s\r\n", m_bt_info.szName);
      wprintf(L"\tAddress: %02x:%02x:%02x:%02x:%02x:%02x\r\n", m_bt_info.address.rgBytes[1], m_bt_info.address.rgBytes[0], m_bt_info.address.rgBytes[2], m_bt_info.address.rgBytes[3], m_bt_info.address.rgBytes[4], m_bt_info.address.rgBytes[5]);
      wprintf(L"\tClass: 0x%08x\r\n", m_bt_info.ulClassofDevice);
      wprintf(L"\tManufacturer: 0x%04x\r\n", m_bt_info.manufacturer);

      m_search_params.hRadio = m_radio;

      ::ZeroMemory(&m_device_info, sizeof(BLUETOOTH_DEVICE_INFO));
      m_device_info.dwSize = sizeof(BLUETOOTH_DEVICE_INFO);

      m_bt_dev = BluetoothFindFirstDevice(&m_search_params, &m_device_info);

      int m_device_id = 0;
      do {
        m_device_id++;

        wprintf(L"\tDevice %d:\r\n", m_device_id);
        wprintf(L"\t\tName: %s\r\n", m_device_info.szName);
        wprintf(L"\t\tAddress: %02x:%02x:%02x:%02x:%02x:%02x\r\n", m_device_info.Address.rgBytes[1], m_device_info.Address.rgBytes[0], m_device_info.Address.rgBytes[2], m_device_info.Address.rgBytes[3], m_device_info.Address.rgBytes[4], m_device_info.Address.rgBytes[5]);
        wprintf(L"\t\tClass: 0x%08x\r\n", m_device_info.ulClassofDevice);
        wprintf(L"\t\tConnected: %s\r\n", m_device_info.fConnected ? L"true" : L"false");
        wprintf(L"\t\tAuthenticated: %s\r\n", m_device_info.fAuthenticated ? L"true" : L"false");
        wprintf(L"\t\tRemembered: %s\r\n", m_device_info.fRemembered ? L"true" : L"false");

      } while(BluetoothFindNextDevice(m_bt_dev, &m_device_info));

      BluetoothFindDeviceClose(m_bt_dev);

    } while(BluetoothFindNextRadio(&m_bt_find_radio, &m_radio));

    BluetoothFindRadioClose(m_bt);

    Sleep(10000);
  }

  return 0;
}

Ich dann erstellen Sie Projekt und führen Sie es auf meinem notebook mit Bluetooth-Funktion eingeschaltet ist wird kein Ergebnis angezeigt. Als wenn die Anwendung nicht finden können jede beliebige Bluetooth-Gerät. Nachdem ich weiterhin meine Forschung und fand andere Artikel genannt die Suche nach Bluetooth-Geräten und services mit C++ in Windows XP

#include <winsock2.h>
#include <ws2bth.h>
#include <BluetoothAPIs.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "irprops.lib")

using namespace std;

int main(){

    //Initialising winsock

    WSADATA data;
    int result;

    result = WSAStartup(MAKEWORD(2, 2), &data);//initializing winsock

    if (result!=0) {
        cout << "An error occured while initialising winsock, closing....";
        exit(result);
    }

    //Initialising query for device
    WSAQUERYSET queryset;

    memset(&queryset, 0, sizeof(WSAQUERYSET));
    queryset.dwSize = sizeof(WSAQUERYSET);
    queryset.dwNameSpace = NS_BTH;

    HANDLE hLookup;

    result = WSALookupServiceBegin(&queryset, LUP_CONTAINERS, &hLookup);

    if (result!=0){
        cout << "An error occured while initialising look for devices, closing....";
        Sleep(100000);
        exit(result);
    }

    //Initialisation succedd, start looking for devices

    BYTE buffer[4096];
    memset(buffer, 0, sizeof(buffer));
    DWORD bufferLength = sizeof(buffer);
    WSAQUERYSET *pResults = (WSAQUERYSET*)&buffer;

        while (result==0){
            result = WSALookupServiceNext(hLookup, LUP_RETURN_NAME | LUP_CONTAINERS | LUP_RETURN_ADDR | LUP_FLUSHCACHE | LUP_RETURN_TYPE | LUP_RETURN_BLOB | LUP_RES_SERVICE,&bufferLength, pResults);

            if(result==0){//A device found
                //print the name of the device
                LPTSTR s = pResults->lpszServiceInstanceName;
                wcout << s << "found. quering for services\n";
                //Initialise quering the device services
                WSAQUERYSET queryset2;
                memset(&queryset2, 0, sizeof(queryset2));
                queryset2.dwSize = sizeof(queryset2);
                queryset2.dwNameSpace = NS_BTH;
                queryset2.dwNumberOfCsAddrs = 0;
                CSADDR_INFO * addr = (CSADDR_INFO *)pResults->lpcsaBuffer;
                WCHAR addressAsString[1000];
                DWORD addressSize = sizeof(addressAsString);
                WSAAddressToString(addr->RemoteAddr.lpSockaddr,addr->RemoteAddr.iSockaddrLength,NULL,addressAsString, &addressSize);
                queryset2.lpszContext = addressAsString;
                GUID protocol = L2CAP_PROTOCOL_UUID;
                queryset2.lpServiceClassId = &protocol;
                HANDLE hLookup2;
                int result2 = WSALookupServiceBegin(&queryset2, LUP_FLUSHCACHE |LUP_RETURN_NAME | LUP_RETURN_TYPE | LUP_RETURN_ADDR | LUP_RETURN_BLOB | LUP_RETURN_COMMENT, &hLookup2);

                if (result2 !=0){
                    cout << "An error occured while initializing query for services";
                    Sleep(100000);
                    exit(result);
                }

                //Start quering for device services
                while(result2 ==0){
                    BYTE buffer2[4096];
                    memset(buffer2, 0, sizeof(buffer2));
                    DWORD bufferLength2 = sizeof(buffer2);
                    WSAQUERYSET *pResults2 = (WSAQUERYSET*)&buffer2;
                    result2 = WSALookupServiceNext(hLookup2,LUP_FLUSHCACHE |LUP_RETURN_NAME | LUP_RETURN_TYPE | LUP_RETURN_ADDR | LUP_RETURN_BLOB | LUP_RETURN_COMMENT,&bufferLength2,pResults2);
                    if(result2 == 0)
                        wcout << "Service found: " << pResults2->lpszServiceInstanceName <<"\n";
                    Sleep(100000);
                }
            }
        }

        Sleep(100000);

    return 0;     

}

Wenn ich kompilieren Sie diese ein und starten Sie die Anwendung Fehlermeldung erscheint"Ein Fehler trat beim initialisieren der Geräte, schließen ......" !!!

Wenn Sie können geben Sie mir Informationen, alle Artikel, code-Beispiel oder sonst etwas, das mit hilft, mich in meiner Forschung werde ich mich sehr freuen und vielen Dank an Euch !!!

Beste Grüße !!!

Was ist die spezifische Fehlermeldung, die Sie erhalten. Das ist, was ist das Ergebnis? Es könnte Ihnen helfen, einzugrenzen, eine bestimmte Ursache.
Ich will wissen, bin ich auf einem richtigen Weg zur Anwendung ?? Oder vielleicht kannst du links !!! Von wo muss ich anfangen, meine Entwicklung ?
Sie könnten auf dem richtigen Weg. Mein Punkt war, dass Sie einen Fehler erhalten, auf der ersten Initialisierung. Das heißt, der Aufruf " result = WSAStartup(MAKEWORD(2, 2), &data);". Offensichtlich etwas ging da schief. Könnten Sie uns sagen, was der Wert von "Ergebnis" ist nach dem Aufruf? Wenn es einer der Werte ist hier ( msdn.microsoft.com/en-us/library/ms742213(v=vs. 85).aspx ), haben Sie vielleicht einen Tipp, was Los ist.
Die value-Ergebnis ist "0"
Jetzt versuche ich auf Windows 7 Betriebssystem ... kann sein, dass ist das Ergebnis ??

InformationsquelleAutor Viktor Apoyan | 2011-04-28

Schreibe einen Kommentar