Wince实现蓝牙设备搜寻
本代码实例实现在windows mobile上搜寻蓝牙设备的功能。
操作环境 :windows mobile系统
SDK :windows mobile 5.0 Pocket PC
主要的API :
WSALookupServiceBegin(
IN LPWSAQUERYSETW lpqsRestrictions,
IN DWORD dwControlFlags,
OUT LPHANDLE lphLookup);
说明:实现搜寻的初始化
WSALookupServiceNext(
IN HANDLE hLookup,
IN DWORD dwControlFlags,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSAQUERYSETW lpqsResults);
说明:实现搜寻的功能
WSALookupServiceEnd(
IN HANDLE hLookup);
说明:关闭搜寻
Code:
// 本函数实现搜寻蓝牙设备,如果查找到,则名称添加到列表中
void PopulateBtDevList(HWND hDlg)
{
INT iResult = 0;
LPWSAQUERYSET pwsaResults;
DWORD dwSize = 0;
WSAQUERYSET wsaq;
HCURSOR hCurs;
HANDLE hLookup = 0;
// empty the list box
SendMessage(GetDlgItem(hDlg, IDC_DEVLIST), LB_RESETCONTENT, 0, 0);
SendMessage(GetDlgItem(hDlg, IDC_DEVLIST), LB_ADDSTRING, 0, (LPARAM)_T("Results..."));
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)
{
TCHAR tszErr[32];
iResult = WSAGetLastError();
StringCchPrintf(tszErr, 32, _T("Socket Error: %d"), iResult);
MessageBox(hDlg, tszErr, _T("Error"), MB_OK);
}
union {
CHAR buf[5000]; // returned struct can be quite large
SOCKADDR_BTH __unused; // properly align buffer to BT_ADDR requirements
};
// save the current cursor
hCurs = GetCursor();
for (; ;)
{
// set the wait cursor while searching
SetCursor(LoadCursor(NULL, IDC_WAIT));
pwsaResults = (LPWSAQUERYSET)buf;
dwSize = sizeof(buf);
memset(pwsaResults, 0, sizeof(WSAQUERYSET));
pwsaResults->dwSize = sizeof(WSAQUERYSET);
// namespace MUST be NS_BTH for bluetooth queries
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob = NULL;
// iterate through all found devices, returning name and address
// (this sample only uses the name, but address could be used for
// further queries)
iResult = WSALookupServiceNext(hLookup, LUP_RETURN_NAME|LUP_RETURN_ADDR, &dwSize, pwsaResults);
if (iResult != 0)
{
iResult = WSAGetLastError();
if (iResult != WSA_E_NO_MORE)
{
TCHAR tszErr[32];
iResult = WSAGetLastError();
StringCchPrintf(tszErr, 32, _T("Socket Error: %d"), iResult);
MessageBox(hDlg, tszErr, _T("Error"), MB_OK);
}
// we're finished
break;
}
// add the name to the listbox
if (pwsaResults->lpszServiceInstanceName)
{
SendMessage(GetDlgItem(hDlg, IDC_DEVLIST), LB_ADDSTRING, 0, (LPARAM)pwsaResults->lpszServiceInstanceName);
}
}
WSALookupServiceEnd(hLookup);
// restore cursor
SetCursor(hCurs);
}
操作环境 :windows mobile系统
SDK :windows mobile 5.0 Pocket PC
主要的API :
WSALookupServiceBegin(
IN LPWSAQUERYSETW lpqsRestrictions,
IN DWORD dwControlFlags,
OUT LPHANDLE lphLookup);
说明:实现搜寻的初始化
WSALookupServiceNext(
IN HANDLE hLookup,
IN DWORD dwControlFlags,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSAQUERYSETW lpqsResults);
说明:实现搜寻的功能
WSALookupServiceEnd(
IN HANDLE hLookup);
说明:关闭搜寻
Code:
// 本函数实现搜寻蓝牙设备,如果查找到,则名称添加到列表中
void PopulateBtDevList(HWND hDlg)
{
INT iResult = 0;
LPWSAQUERYSET pwsaResults;
DWORD dwSize = 0;
WSAQUERYSET wsaq;
HCURSOR hCurs;
HANDLE hLookup = 0;
// empty the list box
SendMessage(GetDlgItem(hDlg, IDC_DEVLIST), LB_RESETCONTENT, 0, 0);
SendMessage(GetDlgItem(hDlg, IDC_DEVLIST), LB_ADDSTRING, 0, (LPARAM)_T("Results..."));
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)
{
TCHAR tszErr[32];
iResult = WSAGetLastError();
StringCchPrintf(tszErr, 32, _T("Socket Error: %d"), iResult);
MessageBox(hDlg, tszErr, _T("Error"), MB_OK);
}
union {
CHAR buf[5000]; // returned struct can be quite large
SOCKADDR_BTH __unused; // properly align buffer to BT_ADDR requirements
};
// save the current cursor
hCurs = GetCursor();
for (; ;)
{
// set the wait cursor while searching
SetCursor(LoadCursor(NULL, IDC_WAIT));
pwsaResults = (LPWSAQUERYSET)buf;
dwSize = sizeof(buf);
memset(pwsaResults, 0, sizeof(WSAQUERYSET));
pwsaResults->dwSize = sizeof(WSAQUERYSET);
// namespace MUST be NS_BTH for bluetooth queries
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob = NULL;
// iterate through all found devices, returning name and address
// (this sample only uses the name, but address could be used for
// further queries)
iResult = WSALookupServiceNext(hLookup, LUP_RETURN_NAME|LUP_RETURN_ADDR, &dwSize, pwsaResults);
if (iResult != 0)
{
iResult = WSAGetLastError();
if (iResult != WSA_E_NO_MORE)
{
TCHAR tszErr[32];
iResult = WSAGetLastError();
StringCchPrintf(tszErr, 32, _T("Socket Error: %d"), iResult);
MessageBox(hDlg, tszErr, _T("Error"), MB_OK);
}
// we're finished
break;
}
// add the name to the listbox
if (pwsaResults->lpszServiceInstanceName)
{
SendMessage(GetDlgItem(hDlg, IDC_DEVLIST), LB_ADDSTRING, 0, (LPARAM)pwsaResults->lpszServiceInstanceName);
}
}
WSALookupServiceEnd(hLookup);
// restore cursor
SetCursor(hCurs);
}
我来回答
回答0个
时间排序
认可量排序
暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2012-12-05 13:32:08
-
2009-11-06 20:23:42
-
2012-12-04 13:21:01
-
2008-08-27 23:38:01
-
2012-12-04 13:58:18
-
2012-12-24 14:14:27
-
2020-05-23 12:04:27
-
2017-08-18 17:24:00
-
2015-11-22 12:39:59
-
2018-12-19 16:01:41
-
32016-12-30 16:55:54
-
2012-12-04 13:13:47
-
2012-12-05 11:10:23
-
2012-12-05 14:28:56
-
2010-01-28 10:58:40
-
2015-03-24 23:53:19
-
2015-03-24 23:52:40
-
2013-08-29 19:28:56
-
2016-04-18 17:35:25
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认