个粉丝

问答

专栏

资料

 发布于  2010-01-25 14:23:57
采纳率 0%
128个问答
3178

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);      
}
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区