请教下蓝牙服务如何查询!!!!!!
在远程蓝牙设备上执行服务查询
提供Winsock的版本和实现细节的数据来初始化caller application。可以通过调用WSAStartup函数来获得这个数据。
WSADATA wsd;
WSAStartup (MAKEWORD(1,0), &wsd);
通过设置WSAQUERYSET结构体来指定搜索参数。
WSAQUERYSET wsaq;
memset (&wsaq, 0, sizeof(wsaq));
wsaq.dwSize = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpBlob = &blob;
wsaq.lpcsaBuffer = &csai;
设置dwNameSpace成员为NS_BTH将查询指定为蓝牙查询。
调用WSALookupServiceBegin函数初始化搜索,将第一步中创建的WSAQUERYSET变量传递给pQuerySet参数来指定搜索标准
int iRet = WSALookupServiceBegin (&wsaq, 0, &hLookup);
将dwFlags参数设置为0来在远程设备上执行一个服务查询, WSALookupServiceBegin 返回一个句柄到hLookup参数中。
注意 将dwFlags参数设置为LUP_CONTAINERS, 调用 WSALookupServiceBegin将执行一个设备查询。详情参见“使用WinSock搜索蓝牙设备”。
要返回在远程设备上所找到的服务的相关数据,使用从WSALookupServiceBegin返回的句柄调用 WSALookupServiceNext函数。
CHAR buf[5000];
LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET) buf;
DWORD dwSize = sizeof(buf);
memset(pwsaResults,0,sizeof(WSAQUERYSET));
pwsaResults->dwSize = sizeof(WSAQUERYSET);
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob = NULL;
iRet = WSALookupServiceNext (hLookup, 0, &dwSize, pwsaResults);
WSALookupServiceNext返回了一个指向WSAQUERYSET的指针,它包含了lpBlob成员里的服务数据的引用。这个成员指向一个BLOB结构体,它包含了由WSALookupServiceNext一次性返回的二进制数据。 Windows CE提供了COM接口,你可以使用它们来分析服务数据。详情参见使用COM接口分析SDP记录.
调用WSALookupServiceEnd函数来结束设备搜索。这个函数将释放由WSALookupServiceBegin创建的lookup句柄。
WSALookupServiceEnd(hLookup);
要结束对Winsock服务的使用,调用WSACleanup函数。在程序中对每个成功调用的WSAStartup都必须对应地调用WSACleanup。
int iRet = WSALookupServiceBegin (&wsaq, 0, &hLookup);
iRet老是返回-1,错误为10022,说参数不对,请教下WSALookupServiceBegin中的第2个参数是0不行么,
有蓝牙服务查询成功的么,本人只能得到设备列表,而且可以连接上某个服务,但是不知道是什么服务,怎么查询蓝牙服务,知道的告诉下好么,谢谢!!!!
提供Winsock的版本和实现细节的数据来初始化caller application。可以通过调用WSAStartup函数来获得这个数据。
WSADATA wsd;
WSAStartup (MAKEWORD(1,0), &wsd);
通过设置WSAQUERYSET结构体来指定搜索参数。
WSAQUERYSET wsaq;
memset (&wsaq, 0, sizeof(wsaq));
wsaq.dwSize = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpBlob = &blob;
wsaq.lpcsaBuffer = &csai;
设置dwNameSpace成员为NS_BTH将查询指定为蓝牙查询。
调用WSALookupServiceBegin函数初始化搜索,将第一步中创建的WSAQUERYSET变量传递给pQuerySet参数来指定搜索标准
int iRet = WSALookupServiceBegin (&wsaq, 0, &hLookup);
将dwFlags参数设置为0来在远程设备上执行一个服务查询, WSALookupServiceBegin 返回一个句柄到hLookup参数中。
注意 将dwFlags参数设置为LUP_CONTAINERS, 调用 WSALookupServiceBegin将执行一个设备查询。详情参见“使用WinSock搜索蓝牙设备”。
要返回在远程设备上所找到的服务的相关数据,使用从WSALookupServiceBegin返回的句柄调用 WSALookupServiceNext函数。
CHAR buf[5000];
LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET) buf;
DWORD dwSize = sizeof(buf);
memset(pwsaResults,0,sizeof(WSAQUERYSET));
pwsaResults->dwSize = sizeof(WSAQUERYSET);
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob = NULL;
iRet = WSALookupServiceNext (hLookup, 0, &dwSize, pwsaResults);
WSALookupServiceNext返回了一个指向WSAQUERYSET的指针,它包含了lpBlob成员里的服务数据的引用。这个成员指向一个BLOB结构体,它包含了由WSALookupServiceNext一次性返回的二进制数据。 Windows CE提供了COM接口,你可以使用它们来分析服务数据。详情参见使用COM接口分析SDP记录.
调用WSALookupServiceEnd函数来结束设备搜索。这个函数将释放由WSALookupServiceBegin创建的lookup句柄。
WSALookupServiceEnd(hLookup);
要结束对Winsock服务的使用,调用WSACleanup函数。在程序中对每个成功调用的WSAStartup都必须对应地调用WSACleanup。
int iRet = WSALookupServiceBegin (&wsaq, 0, &hLookup);
iRet老是返回-1,错误为10022,说参数不对,请教下WSALookupServiceBegin中的第2个参数是0不行么,
有蓝牙服务查询成功的么,本人只能得到设备列表,而且可以连接上某个服务,但是不知道是什么服务,怎么查询蓝牙服务,知道的告诉下好么,谢谢!!!!
...全文
相关推荐
蓝牙c语言代码蓝牙c语言代码蓝牙c语言代码
蓝牙c语言代码蓝牙c语言代码蓝牙c语言代码蓝牙c语言代码蓝牙c语言代码蓝牙c语言代码蓝牙c语言代码蓝牙c语言代码
【蓝牙协议栈】【BLE】【BAS】精讲蓝牙电池服务
蓝牙电池服务是蓝牙设备与其他设备通信时用于报告其剩余电池电量的标准服务。它让用户能够随时了解蓝牙设备(如无线耳机、智能手表、蓝牙鼠标/键盘等)的电池状态,从而方便地管理这些设备的续航与电源使用。BAS通常用于在一个电池(可由一个或多个电芯组成)连接于一台设备的语境下暴露其电量及其他信息。当一台设备有多个需要监控的电池时应支持多个BAS实例,每个BAS实例对应一个电池。以下例子展示使用BAS的各种方式,在每种方式中电池可以是可拆装的。图1展示含有一个电池的手机支持一个BAS实例的例子。
C#扫描蓝牙设备demo
C#扫描蓝牙设备demo 直接运行就可使用 含dll及代码 绝对可用!!! C#扫描蓝牙设备demo 直接运行就可使用 含dll及代码 绝对可用!!!
Linux蓝牙SPP服务连接[代码]
本文详细介绍了在Linux开发板上建立蓝牙SPP(串口协议)服务连接的步骤。首先需要确保环境准备就绪,包括安装蓝牙驱动和BlueZ工具。通过sdptool命令查询和添加SPP服务,设置蓝牙可见性并扫描设备。接着创建端口并绑定设备,最后连接设备并读取端口数据。文章还提供了常见问题的解决方法,如服务查询失败、端口占用等,帮助用户顺利完成蓝牙串口通信的设置。
蓝牙的uuid标准
蓝牙的uuid标准


