Код ошибки 10049 bluetooth

Ошибка 10049 при подключении устройства bluetooth с 32 футами

Я пытаюсь установить соединение с настраиваемым устройством Bluetooth без использования COM-портов. Однако я получаю сообщение об ошибке: [10049] «Запрошенный адрес недействителен в своем контексте». Что я делаю неправильно?

static Guid serviceClass= new Guid("4d36e978-e325-11ce-bfc1-08002be10318"); //GUID of device class static BluetoothAddress addr = BluetoothAddress.Parse("001210160177"); //from device BluetoothDeviceInfo device = new BluetoothDeviceInfo(addr); device.SetServiceState(serviceClass, true); Console.WriteLine(BluetoothSecurity.PairRequest(device.DeviceAddress, "0000")); //pairing my device - writes True BluetoothEndPoint ep = new BluetoothEndPoint(addr, serviceClass); BluetoothClient conn = new BluetoothClient(ep); //10049 error conn.Connect(ep); Console.WriteLine(conn.GetStream()); 

2 ответа

Все это описано в документации по проекту. 🙂

Короче, удалите эту строку SetServiceState , это ненужно / плохо. Выполнять сопряжение каждый раз также необязательно и немного медленно, но, вероятно, не стоит менять, если оно работает хорошо.

  • «См. Раздел« Общие подключения данных Bluetooth »ниже. BluetoothClient предоставляет поток для чтения и записи — нет необходимости использовать виртуальные COM-порты»
BluetoothAddress addr = BluetoothAddress.Parse("001122334455"); Guid serviceClass; serviceClass = BluetoothService.SerialPort; // - or - etc // serviceClass = MyConsts.MyServiceUuid // var ep = new BluetoothEndPoint(addr, serviceClass); var cli = new BluetoothClient(); cli.Connect(ep); Stream peerStream = cli.GetStream(); peerStream.Write/Read . 
  • 10049 «Запрошенный адрес недействителен в своем контексте.»
  • На удаленном устройстве не работает служба с данным идентификатором класса обслуживания

То есть Неверный идентификатор класса обслуживания.

device.SetServiceState(serviceClass, true); //do it before pairing . BluetoothClient conn = new BluetoothClient(); conn.Connect(ep); 
static Guid serviceClass = new Guid("4d36e978-e325-11ce-bfc1-08002be10318"); //GUID of device class 
static Guid serviceClass = new Guid("00001101-0000-1000-8000-00805f9b34fb"); //GUID of bluetooth service 

Чтобы увидеть правильный GUID, обратитесь к настройкам / свойствам вашего устройства (не ключа). Вы можете увидеть их из Windows.

Читайте также:  Включить блютуз леново g500

Источник

Код ошибки 10049 bluetooth

Я пытаюсь установить соединение с настраиваемым устройством Bluetooth без использования COM-портов. Однако я получаю сообщение об ошибке: [10049] «Запрошенный адрес недействителен в своем контексте». Что я делаю неправильно? static Guid serviceClass= new Guid(«4d36e978-e325-11ce-bfc1-08002be10318».

Я пытаюсь установить соединение с настраиваемым устройством Bluetooth без использования COM-портов. Однако я получаю сообщение об ошибке: [10049] «Запрошенный адрес недействителен в своем контексте». Что я делаю неправильно?

static Guid serviceClass= new Guid("4d36e978-e325-11ce-bfc1-08002be10318"); //GUID of device class static BluetoothAddress addr = BluetoothAddress.Parse("001210160177"); //from device BluetoothDeviceInfo device = new BluetoothDeviceInfo(addr); device.SetServiceState(serviceClass, true); Console.WriteLine(BluetoothSecurity.PairRequest(device.DeviceAddress, "0000")); //pairing my device - writes True BluetoothEndPoint ep = new BluetoothEndPoint(addr, serviceClass); BluetoothClient conn = new BluetoothClient(ep); //10049 error conn.Connect(ep); Console.WriteLine(conn.GetStream()); 

2 ответа

:-)

Все это описано в документации по проекту.

Короче, удалите эту строку SetServiceState , это ненужно / плохо. Выполнять сопряжение каждый раз также необязательно и немного медленно, но, вероятно, не стоит менять, если оно работает хорошо.

  • «См. Раздел« Общие подключения данных Bluetooth »ниже. BluetoothClient предоставляет поток для чтения и записи — нет необходимости использовать виртуальные COM-порты»

2) http://32feet.codeplex.com/wikipage?title=General % 20Bluetooth% 20Data% 20Connections

BluetoothAddress addr = BluetoothAddress.Parse("001122334455"); Guid serviceClass; serviceClass = BluetoothService.SerialPort; // - or - etc // serviceClass = MyConsts.MyServiceUuid // var ep = new BluetoothEndPoint(addr, serviceClass); var cli = new BluetoothClient(); cli.Connect(ep); Stream peerStream = cli.GetStream(); peerStream.Write/Read . 
  • 10049 «Запрошенный адрес недействителен в своем контексте.»
  • На удаленном устройстве не работает служба с данным идентификатором класса обслуживания

То есть Неверный идентификатор класса обслуживания.

alanjmcf
15 Мар 2014 в 14:55

device.SetServiceState(serviceClass, true); //do it before pairing . BluetoothClient conn = new BluetoothClient(); conn.Connect(ep); 
static Guid serviceClass = new Guid("4d36e978-e325-11ce-bfc1-08002be10318"); //GUID of device class 
static Guid serviceClass = new Guid("00001101-0000-1000-8000-00805f9b34fb"); //GUID of bluetooth service 

Чтобы увидеть правильный GUID, обратитесь к настройкам / свойствам вашего устройства (не ключа). Вы можете увидеть их из Windows.

Читайте также:  Mac bluetooth передать файл

Question

Hi, I’m writing a program to connect to a bluetooth device using Winsock. In discovery mode, I can find the device, but when I try to connect() I always get the error 10049 (WSAEADDRNOTAVAIL — Address not available). What is the problem?

WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0) return (EXIT_FAILURE); if ((_socket = socket(AF_BT, SOCK_STREAM, BTHPROTO_RFCOMM)) == INVALID_SOCKET) return (EXIT_FAILURE); SOCKADDR_BTH sa; std::memset(&sa, 0, sizeof(sa)); int nSizeInput = sizeof(sa); int result = WSAStringToAddress(_address, AF_BTH, NULL, (LPSOCKADDR)&sa, &nSizeInput); // To validate the address. char addressStr[64] = ; DWORD dwSizeOfStr = sizeof(addressStr); WSAAddressToStringA((LPSOCKADDR)&sa, nSizeInput, NULL, addressStr, &dwSizeOfStr); result = connect(_socket, (SOCKADDR*)&sa, sizeof(sa));

Answers

There’s a sample that covers this in the WM6 SDK:
Windows Mobile 6 SDKSamplesPocketPCCPPwin32BluetoothBthChat Try setting the addressFamily member of SOCKADDR_BTH to AF_BT. Also, try setting the btAddr member to one of the devices returned from WSALookupServiceNext.
http://msdn.microsoft.com/en-us/library/aa916570.aspx -PaulH

I’m developing a dll in visual-c++ for client side application to connect my pc to my android phone via bluetooth. I use this function to find my bluetooth service on the phone(see commented code!):

bool BlueRayXVR::findPairedService(GUID* guid, _SOCKET_ADDRESS* ret)< this->checkStartup(); HBLUETOOTH_DEVICE_FIND found_devices; BLUETOOTH_DEVICE_INFO device_info; device_info.dwSize = sizeof(device_info); BLUETOOTH_DEVICE_SEARCH_PARAMS search_criteria; search_criteria.dwSize = sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS); search_criteria.fReturnAuthenticated = TRUE; search_criteria.fReturnRemembered = FALSE; search_criteria.fReturnConnected = FALSE; search_criteria.fReturnUnknown = FALSE; search_criteria.fIssueInquiry = FALSE; search_criteria.cTimeoutMultiplier = 0; found_devices = BluetoothFindFirstDevice(&search_criteria, &device_info); if (found_devices == NULL) < _tprintf(TEXT("Error: n%sn"), getErrorMessage(WSAGetLastError(), error)); return false; >WSAQUERYSET querySet; memset(&querySet, 0, sizeof(querySet)); querySet.dwSize = sizeof(querySet); querySet.lpServiceClassId = guid; querySet.dwNameSpace = NS_BTH; SOCKADDR_BTH sab; memset (&sab, 0, sizeof(sab)); sab.addressFamily = AF_BTH; char addressAsString[1000]; DWORD addressSize = sizeof(addressAsString); bool found = false; do < sab.btAddr = device_info.Address.ullLong; if (0 != WSAAddressToString((LPSOCKADDR)&sab, sizeof(sab), NULL, (LPWSTR)addressAsString, &addressSize))< _tprintf(TEXT("Error get the mac of the device %sn.Going to the next device."), device_info.szName); >else< _tprintf(TEXT("Check on device %s%s for the service.n"), device_info.szName, addressAsString); querySet.lpszContext =(LPWSTR) addressAsString; HANDLE service_lookup_handle; DWORD flags = LUP_FLUSHCACHE |LUP_RETURN_NAME | LUP_RETURN_ADDR | LUP_RETURN_BLOB; int result = WSALookupServiceBegin(&querySet, flags, &service_lookup_handle); if (0 == result) < BYTE buffer[2000]; DWORD bufferLength = sizeof(buffer); WSAQUERYSET *pResults = (WSAQUERYSET*)&buffer; if(0 == WSALookupServiceNext(service_lookup_handle, flags, &bufferLength, pResults)) < _tprintf(TEXT("Service : %sn"), pResults->lpszServiceInstanceName); _tprintf(TEXT("Comment : %sn"), pResults->lpszComment); *ret = pResults->lpcsaBuffer->RemoteAddr; found = true; /* this->sock = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM); if (0 == ::connect(sock, ret->lpSockaddr, ret->iSockaddrLength)) < printf("connected"); //closesocket (*sock); //return TRUE; >wprintf(L"errore %d: %s", WSAGetLastError(), this->getErrorMessage(WSAGetLastError(), this->error)); */ > result = WSALookupServiceEnd(service_lookup_handle); > else _tprintf(TEXT("%snGoing to the next device..n"), getErrorMessage(GetLastError(), error)); > > while (BluetoothFindNextDevice(found_devices, &device_info) && !found); if(found_devices) BluetoothFindDeviceClose(found_devices); _tprintf(TEXT("No more device.n")); return found; > 

And this one to connect to the phone:

bool BlueRayXVR::connect(_SOCKET_ADDRESS* host) < this->sock = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM); if (this->sock == INVALID_SOCKET) < _tprintf(TEXT("Failed to get bluetooth socket! %sn"), getErrorMessage(WSAGetLastError(), error)); exit(1); >if (0 == ::connect(sock, host->lpSockaddr, host->iSockaddrLength)) < printf("connectedn"); return TRUE; >wprintf(L"errore %d: %s", WSAGetLastError(), this->getErrorMessage(WSAGetLastError(), this->error)); return FALSE; > 

In my test console app i do:

 _SOCKET_ADDRESS address; memset (&address, 0, sizeof(address)); if(blue->findPairedService(&blue->getDefaultGUID4XVR(), &address))< printf("service founded..try to connect..n"); if(blue->connect(&address)) blue->read(); > 

The problem is that if i run my code i always get error 10049.

Читайте также:  Airpods pro характеристики bluetooth

the strange thing is that if i uncomment the lines of code in findPairedService function and i just do

 _SOCKET_ADDRESS address; memset (&address, 0, sizeof(address)); if(blue->findPairedService(&blue->getDefaultGUID4XVR(), &address)) 

it succesfully connect to the phone….

Источник

Оцените статью
Adblock
detector