Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Bluetooth. Проблема с подключением.


Автор: Pulse69 6.1.2008, 14:18
Подскажите кто сталкивался с Bluetooth устройствами.
Пишу приложение под WinSock2 для работы с Bluetooth устройствами. Возникла такая проблема: вызов функции connect всегда возвращает -1, а WSAGetLastError() выдаёт ошибку WSAEINVAL.  Судя по документации на Bluetooth в MSDN, это означает
Цитата

Plug-and-Play, driver-stack event or other error caused failure.

Я не совсем понимаю что там может быть не так, так что надеюсь на ваши подсказки.
Стандартные средства Windows работают с устройством нормально, у-во аутентифицировано. Вот небольшой код, который не работает.
Код

#include <winsock2.h>
#include <ws2bth.h>
#include <bthdef.h>

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

int _tmain(int argc, _TCHAR* argv[])
{
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,2), &wsa);

    SOCKADDR_BTH bth;
    SOCKET s = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
    
    bth.addressFamily = AF_BT;
    bth.btAddr = (bt_addr)0x0005c95b1aa0i64;
    bth.port = 0;
    bth.serviceClassId = SerialPortServiceClass_UUID;

    int i = connect(s, (sockaddr*)&bth, sizeof(bth));
    
    i = WSAGetLastError();
    WSACleanup();
    return 0;
}

Пытаюсь подключиться к SPP сервису, который этот телефон точно предоставляет. Самое интересное, что если в качестве адреса указать неверное значение, всё равно возвращается WSAEINVAL, а не более подходящий WSAEADDRNOTAVAIL. Согласно всем примерам и туториалам, вышеприведённый код должен работать, но это не так.
PS: Все драйвера BTH - стандартные WINDOWS, ОС - WinXP Pro. SP2


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)