在网上查了很多资料,知道蓝牙通信编程的大致流程,不过发现个很郁闷的事情,先看下面的代码:
BOOL bRes = FALSE;
int iResult = 0;
LPWSAQUERYSET pwsaResults;
WSAQUERYSET wsaq; WSADATA wsd;
WSAStartup (MAKEWORD(1,0), &wsd);
memset (&wsaq, 0, sizeof(wsaq));
wsaq.dwSize = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpcsaBuffer = NULL; // initialize searching procedure
iResult = WSALookupServiceBegin(&wsaq,
LUP_CONTAINERS,
&hLookup);
if (iResult != 0)
{
iResult = WSAGetLastError();
return iResult;
}
都说使用WSALookupServiceBegin,WSALookupServiceNext,WSALookupServiceEnd三个函数基本上能完成蓝牙设备的通信问题,不过调试的时候,我发现执行到WSALookupServiceBegin函数时就失败了,错误10108,没有NS_BTH类型的服务.也就是说不支持蓝牙服务,winsock2.h中确实没有定义蓝牙,不知道要怎么处理,才能让winsock2.h支持蓝牙?
其实也有直接使用socket的方法,比起上面的来说要简单一些,不过问题还是出在winsock2.h对蓝牙的支持上.
WSADATA wsadat;
WSAStartup( MAKEWORD( 1, 0 ), & wsadat );
sock = WSASocket(AF_BTH,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED);//执行到这里就出错
int dwRet = getsockopt(sock,SOL_IRLMP,SO_PROTOCOL_INFO,(char *)&devList,&dwListLen);
有谁做过的?指点一下,万分感谢
BOOL bRes = FALSE;
int iResult = 0;
LPWSAQUERYSET pwsaResults;
WSAQUERYSET wsaq; WSADATA wsd;
WSAStartup (MAKEWORD(1,0), &wsd);
memset (&wsaq, 0, sizeof(wsaq));
wsaq.dwSize = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpcsaBuffer = NULL; // initialize searching procedure
iResult = WSALookupServiceBegin(&wsaq,
LUP_CONTAINERS,
&hLookup);
if (iResult != 0)
{
iResult = WSAGetLastError();
return iResult;
}
都说使用WSALookupServiceBegin,WSALookupServiceNext,WSALookupServiceEnd三个函数基本上能完成蓝牙设备的通信问题,不过调试的时候,我发现执行到WSALookupServiceBegin函数时就失败了,错误10108,没有NS_BTH类型的服务.也就是说不支持蓝牙服务,winsock2.h中确实没有定义蓝牙,不知道要怎么处理,才能让winsock2.h支持蓝牙?
其实也有直接使用socket的方法,比起上面的来说要简单一些,不过问题还是出在winsock2.h对蓝牙的支持上.
WSADATA wsadat;
WSAStartup( MAKEWORD( 1, 0 ), & wsadat );
sock = WSASocket(AF_BTH,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED);//执行到这里就出错
int dwRet = getsockopt(sock,SOL_IRLMP,SO_PROTOCOL_INFO,(char *)&devList,&dwListLen);
有谁做过的?指点一下,万分感谢
WSASocket和getsockopt这两个函数的参数应该没有用错,能找到的资料上都是这么用的.
却从没有找到有相关环境配置的内容,只是说MS在XP SP2以上版本的操作系统下支持蓝牙
不知道为什么我这里不行
难道PC上就不能做蓝牙编程?
谢谢啦