Я пытаюсь создать соединение Bluetooth между моим ПК и целевым устройством, используя winsock2 API. Я создал новое универсальное приложение для Windows (C ++) с VS 2015 и начал реализовывать код, который я уже использовал ранее, с приложением win32 и прекрасно работал в MainPage.xaml.cpp.
Я получил ошибку: идентификатор BTHPROTO_RFCOMM и SOCKADDR_BTH не определены. Они оба определены внутри ws2bth.h и включены в мой код.
Я не могу найти причину, почему мой код не работает, не нашел ничего о ws2bth.h, не работающем с Univeral Windows App.
Надеюсь, вы можете помочь мне здесь.
-Кристиан
Изменить: я могу перейти к определению, щелкнув правой кнопкой мыши на BTHPROTO_RFCOMM в моем файле MainPage.xaml.cpp, но ошибка остается.
#define WIN32_LEAN_AND_MEAN 1
#include "pch.h"#include "MainPage.xaml.h"#include <stdio.h>
#include <winsock2.h>
#include <ws2bth.h>
#pragma comment(lib, "ws2_32.lib")
SOCKET clientSocket;
using namespace MoodlightControl;
using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;MainPage::MainPage()
{
InitializeComponent();
}
int startWinsock() {
WORD wVersionRequested;
WSADATA wsaData;
int err;
// Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
return 0;// Check, if Winsock2.2.dll supported
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
WSACleanup();
return 0;
}
else
return 1;
}
int connect() {
clientSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
if (clientSocket == INVALID_SOCKET)
return 1;
SOCKADDR_BTH bth_addr;
bth_addr.addressFamily = AF_BTH;
bth_addr.btAddr = 0x98D331FD02D9;
bth_addr.port = 1;
if (connect(clientSocket, (struct sockaddr *) &bth_addr, sizeof(SOCKADDR_BTH)) == SOCKET_ERROR) {
return 1;
}
return 0;
}
Задача ещё не решена.
Других решений пока нет …