获取范围内的蓝牙设备
Get bluetooth devices in range
我正在为Windows桌面开发。我想让设备在范围内,然后作为列表显示给用户。
这是我正在使用的代码:
HBLUETOOTH_DEVICE_FIND founded_device;
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 = FALSE;
search_criteria.fReturnRemembered = FALSE;
search_criteria.fReturnConnected = TRUE;
search_criteria.fReturnUnknown = FALSE;
search_criteria.fIssueInquiry = FALSE;
search_criteria.cTimeoutMultiplier = 0;
founded_device = BluetoothFindFirstDevice(&search_criteria, &device_info);
if (founded_device == NULL)
{
_tprintf(TEXT("Error: n%sn"), getErrorMessage(WSAGetLastError(), error));
return -1;
}
do
{
_tprintf(TEXT("founded device: %sn"), device_info.szName);
} while (BluetoothFindNextDevice(founded_device, &device_info));
return 0;
我的问题是,在范围内的设备列表中,我总是得到记住的设备。 即使 fReturnRemembered 设置为 false。
我需要找到一种方法来仅获取范围内的设备而没有记住的设备。
目前我正在做的是,我正在尝试打开一个插座并尝试交流,但是还有其他方法吗?
如果要
开始扫描(设备查询),则应更改搜索条件:
search_criteria.fIssueInquiry = TRUE;
也许使用一些大于 0 的超时。
顺便说一句,如果BluetoothFindFirstDevice(&search_criteria, &device_info);
返回 NULL
,这并不意味着它失败了。它可能会在没有结果的情况下结束搜索。您应该通过WSAGetLastError()
得到错误并检查它是否ERROR_NO_MORE_ITEMS
.
另一种方法是使用 WinSock API。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 错误:未在此范围内声明'reverse'
- 并行用于C++17中数组索引范围内的循环
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 不计算一个范围内的完美数
- 错误:"imread"未在此范围内声明
- 我在范围内未声明的错误类有问题
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 未在此范围内声明错误 'xy'
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 命名空间范围内的外部 - GCC vs clang vs msvc
- 如何获取特定范围内的地图lower_bound?
- 优化代码以获取给定范围内可被整数整除的整数数
- 使用数学获取范围内的数字
- 获取范围内的蓝牙设备
- 在类范围内获取虚方法的类型
- 在给定'getrand100()'函数的情况下获取特定范围内的随机数
- 获取模板错误。在此范围内未声明"T"
- C++:获取范围内整数的最快方法