手机篮牙打开后出现windowsce篮球几号位是什么意思思

在WinCE5中编程查找并连接周围的蓝牙设备并实现通信_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
在WinCE5中编程查找并连接周围的蓝牙设备并实现通信
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
你可能喜欢商家等级:
蓝牙眼镜CE认证是用什么标准,CE认证测试内容
微信二维码
该商品尚不支持在线交易,建议选购支持的商品。若您直接向卖家转账付款,可能存在资金风险。
公司名称:
深圳市立讯检测技术有限公司
联&系&人:
黄汉焕 &市场部 销售顾问
联系方式:
<li alt="010-" title="010-0-
(专属客服:屈佳)
联系我时,请说是在慧聪网上看到的,谢谢!
店家邀请你留下联系方式
留下联系方式,可以方便卖家主动找到你,拥有更多的商机
电话号码:
你也可以!
发采购信息
请输入用于接收短信的手机号码
发送成功!
慧聪已向手机号码“”发送一条短信,请查收!由于使用人数较多,可能会有延迟,请耐心等待!
超过次数限制!
您也可以,让卖家主动找您!
超过次数限制!未登录用户仅可免费使用5次。
成功加入采购单!
当前采购单共3种货品
成功加入采购单!
当前采购单共3种货品
不能购买自己发布的产品!
选中货品中含失效货品,无法完成下单,可能是:
1.货品库存不足
2.货品已过期,或被卖家删除
3.货品不支持在线交易当前位置:
在WinCE5中编程查找并连接周围的蓝牙设备并实现通信
在WinCE5中编程查找并连接周围的蓝牙设备并实现通信
发布日期: 11:26
浏览次数:11296次
标  签:Win32
文章评分:5.0
操  作:
称号:未设置简介:...
文章概要:
蓝牙(Bluetooth)是一种短距离无线通信技术,利用“蓝牙”技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与Internet之间的通信,从而使这些现代通信设备与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。
不好意思,题目有些长,我只是想让更多人能看到这篇文章,提高被搜索引擎搜到几率。
蓝牙(Bluetooth)是一种短距离无线通信技术,利用“蓝牙”技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与Internet之间的通信,从而使这些现代通信设备与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。说得通俗一点,就是蓝牙技术使得现代一些轻易携带的移动通信设备和电脑设备,不必借助电缆就能联网,并且能够实现无线上因特网,其实际应用范围还可以拓展到各种家电产品、消费电子产品和汽车等信息家电,组成一个巨大的无线通信网络。
利用蓝牙做无线通信的应用非常广泛,甚至有些工业控制都在使用,编程玩家当然也是爱不释手,比如用自己的宝贝手机编一个蓝牙控制程序来控制自己的电脑,看电影的时候可以当做遥控器来使用。
那么如何在手机中编程实现蓝牙通信即是本文将要阐述的内容,本文以Windows Mobile 5.0 为开发平台,简单介绍用蓝牙APIs进行编程的要点,并附上一个源代码供大家参考。
在PC上编写蓝牙应用程序,可以使用 WindowsXP Platform SDK中的蓝牙APIs,也可以使用WinSock,二者兼可实现蓝牙设备的查找,服务的发现、配对。大部分蓝牙设备都提供虚拟串口的服务,所以真正的通信可以使用系统中虚拟的串口,像操作普通串口一样进行数据通信,当然也可以使用网络编程服务器侦听客户端连接的方式来进行数据通信。PC端蓝牙编程我有一个简单的源代码,可以给初学者一点启发,下载地址是:/downloads82/sourcecode/windows/comm/detail316460.html
在Windows Mobile中我们不能使用Windows XP Platform SDK,像 BluetoothFindFirstDevice()、BluetoothFindNextDevice()等函数都没办法使用,但是我们还可以使用蓝牙SOCKET来编程。
蓝牙通信第一步就是搜索蓝牙设备。这里要用到 WSALookupServiceBegin()、WSALookupServiceNext()、WSALookupServiceEnd()三个API函数。为了纪录搜索到的所有周边蓝牙设备信息,自定义一个结构体和数组变量:
// 远程蓝牙设备详细信息
typedef struct _RemoteBthDevInfo
_RemoteBthDevInfo ()
memset ( szName, 0, sizeof(szName) );
memset ( &RemoteAddr, 0, sizeof(BT_ADDR) );
memset ( &LocalAddr, 0, sizeof(BT_ADDR) );
TCHAR szName[64];
BT_ADDR RemoteA
BT_ADDR LocalA
} t_RemoteBthDevI
typedef CArray t_Ary_RemoteBthDevI
搜索周边蓝牙设备的具体代码如下:
// 用Socket 函数搜索附近的蓝牙设备,成功时返回设备数,否则返回-1
int CBlueTooth_WM::ScanNearbyBthDev_Direct ()
m_Ary_RemoteBthDevInfo.RemoveAll ();
SetWaitCursor ();
WSAQUERYSET queryS
DWORD flags = LUP_RETURN_NAME | LUP_RETURN_ADDR;
CHAR buf[5000];
double __ // ensure proper alignment
LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET)
DWORD dwSize = sizeof(buf);
BOOL bHaveN
ZeroMemory(&querySet, sizeof(querySet));
querySet.dwSize = sizeof(querySet);
querySet.dwNameSpace = NS_BTH;
if ( ::WaitForSingleObject ( m_hEvtEndModule, 0 ) == WAIT_OBJECT_0 )
return -1;
if (ERROR_SUCCESS != WSALookupServiceBegin (&querySet, LUP_CONTAINERS, &hLookup))
ResotreCursor ();
MsgBoxErr ( _T("WSALookupServiceBegin failed") );
return (-1);
ZeroMemory(pwsaResults, sizeof(WSAQUERYSET));
pwsaResults-&dwSize = sizeof(WSAQUERYSET);
pwsaResults-&dwNameSpace = NS_BTH;
pwsaResults-&lpBlob = NULL;
BOOL bError = FALSE;
while ( TRUE )
if ( ::WaitForSingleObject ( m_hEvtEndModule, 0 ) == WAIT_OBJECT_0 )
if ( ERROR_SUCCESS == WSALookupServiceNext (hLookup, flags, &dwSize, pwsaResults) )
ASSERT (pwsaResults-&dwNumberOfCsAddrs == 1);
BT_ADDR b = ((SOCKADDR_BTH *)pwsaResults-&lpcsaBuffer-&RemoteAddr.lpSockaddr)-&btA
bHaveName = pwsaResults-&lpszServiceInstanceName && *(pwsaResults-&lpszServiceInstanceName);
t_RemoteBthDevInfo RemoteBthDevI
if ( bHaveName )
hwSnprintf ( RemoteBthDevInfo.szName, sizeof(RemoteBthDevInfo.szName), _T("%s"),
pwsaResults-&lpszServiceInstanceName );
RemoteBthDevInfo.RemoteAddr =
CSADDR_INFO* pCSAddr = (CSADDR_INFO *)pwsaResults-&lpcsaB
RemoteBthDevInfo.LocalAddr = ((SOCKADDR_BTH *)pCSAddr-&LocalAddr.lpSockaddr)-&btA
TRACE (L"%s ( %04x%08x )\n", RemoteBthDevInfo.szName, GET_NAP(b), GET_SAP(b) );
Add_RemoteBthDevInfo ( RemoteBthDevInfo );
if ( WSAGetLastError() != WSA_E_NO_MORE )
bError = TRUE;
ResotreCursor ();
MsgBoxErr ( L"Lookup bluetooth device failed" );
WSALookupServiceEnd(hLookup);
ResotreCursor ();
if ( bError ) return (-1);
return (int)m_Ary_RemoteBthDevInfo.GetSize();
搜索周边的蓝牙设备重要的是要得到他们的蓝牙地址,这个地址是通信建立的关键,以上代码将搜索到的地址、设备名称等信息保存在m_Ary_RemoteBthDevInfo数组中了。那接下来就是该建立连接了,我现在测试的是将Windows Mobile手机和一个装有蓝牙芯片的心电仪设备建立连接,该设备的提供的蓝牙名称为“CONTRON”,连接过程其实很简单,做过SOCKET网络编程的人都知道,代码如下:
// 连接到蓝牙服务器中的某一个服务,成功返回,失败返回错误代码
int CBlueTooth_WM::ConnectToBlueToothServer ( BT_ADDR ServerAddress, LPCTSTR lpszServiceGUID )
if ( m_socketClient==INVALID_SOCKET )
GUID ServerG
if ( !StringToGUID(lpszServiceGUID, &ServerGuid) )
return -1;
m_socketClient = socket (AF_BT, SOCK_STREAM, BTHPROTO_RFCOMM);
if (m_socketClient == INVALID_SOCKET)
return WSAGetLastError();
SOCKADDR_BTH
memset (&sa, 0, sizeof(sa));
sa.addressFamily = AF_BT;
sa.serviceClassId = ServerG
sa.btAddr = ServerA
if (connect (m_socketClient, (SOCKADDR *)&sa, sizeof(sa)) == SOCKET_ERROR)
m_socketClient = INVALID_SOCKET;
return WSAGetLastError();
SOCKET连接一旦建立起来,就能像访问普通的网络通信套接字一样来访问蓝牙设备里的数据了,请看一下数据通信代码:
// 数据传输(收/发)
// 返回成功传输的字节数。失败时返回-1;连接已经断开,返回-2;处理不能立即完成,返回-3
int CBlueTooth_WM::Transmite ( LPVOID lpData, int nSize, BOOL bSend )
if ( m_socketClient==INVALID_SOCKET ) return -1;
if ( !lpData ) return -1;
if ( nSize & 1 ) return 0;
int iBytesTransmited = 0;
if ( bSend )
iBytesTransmited = send (m_socketClient, (char *)lpData, nSize, 0);
iBytesTransmited = recv (m_socketClient, (char *)lpData, nSize, 0);
if ( iBytesTransmited & 0 ) return iBytesT
int nLastError = WSAGetLastError ();
if ( nLastError == WSAENETDOWN ||
nLastError == WSAENOTCONN ||
nLastError == WSAENOTSOCK ||
nLastError == WSAESHUTDOWN ||
nLastError == WSAETIMEDOUT )
Disconnect ();
return -2;
if ( nLastError == WSAEWOULDBLOCK )
return -3;
return -1;
其实用虚拟串口的方式也可以实现蓝牙的通信,在Windows Mobile 中使用如下代码就可以虚拟出一个串口设备:
PORTEMUPortP
memset (&pp, 0, sizeof(pp));
pp.channel = 0;
pp.flocal = FALSE;
pp.device = reinterpret_cast&_SOCKADDR_BTH*&(pwsaResults-&lpcsaBuffer-&LocalAddr.lpSockaddr)-&btA
memcpy(&pp.uuidService, &CLSID_NULL, sizeof(GUID));
pp.uiportflags = RFCOMM_PORT_FLAGS_REMOTE_DCB;
int port = 4;
// 1到9中任何一个数
HANDLE bth = RegisterDevice
(L"COM", port, L"btd.dll", (DWORD)&pp));
串口创建好以后直接使用 CreateFile()、WriteFile()、ReadFile()、DeviceIoControl()等函数像操作普通串口一样来操作它。例如:
HANDLE hCommPort = CreateFile (L"COM4:", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
附带源代码是一个简单的蓝牙通信程序。程序执行后,出现如下界面:
先选择“Setting …”菜单,打开如下画面:
按下“Scan”按钮,程序开始搜索周边的蓝牙设备,并将所有找到的设备名称添加在下拉列表中,这里选择我的心电仪设备“CONTRON”,并设置好我将要使用的蓝牙服务GUID,然后选择“OK”菜单保存配置信息,回到前面的界面。
选择菜单“Connect Bluetooth Device”,程序将开始连接刚才配置的蓝牙设备,连接成功以后便可选择菜单“Send Test Data”来进行收发数据的测试了。
由于时间和水平的关系,代码和文章写得都不咋的,但愿能起到抛砖引玉的作用。
谢谢谢老师,我看到你的文章之后才把蓝牙打印机的模块的发送信息做完整,我准备写一篇总结。
20:44 发表
谢老师能留下个QQ号或者邮箱吗?我有写蓝牙串口的问题想请教。 我的QQ: 邮箱:
21:19 发表
最多还可以输入100字
【VIP年会员制套餐】
【C/C++软件工程师实战能力集训大纲】
VC知识库发布了C/C++业界的“本草纲目”
【牛人都在千人一号群! 加群三步走!!!】
第一步:请必须加VC知识库QQ: 为好友;
第二步:请必须关注本站微博:
第三步:申请加入群:.(必须将关注微博截屏发到QQ方可通过!)
【最新2013:】
全部100% VC++源码提供: E-Form++全新大型SCADA & HMI解决方案源码、CAD解决方案源码、Gis解决方案源码 、电力石油化工仿真与图形建模解决方案源码、大量其他高级制图VC++源码下载!
【 新视频发布】
o o o o o o o o o o
在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多。...
(九宫问题)在一个3×3的九宫中有1-8这8个数及一个空格随机的摆放在其中的格子里。现在要求实现这个问题:将该九宫格调整为如图1-1右图所示的形式。调整的规则是:每次只能将与空格(上、下、或左、右)相邻的一个数字平移到空格中。试编程实现这一问题的求解。...
本文介绍了套接字编程的基本知识。...诺基亚ce0979蓝牙耳机怎么开_百度知道
诺基亚ce0979蓝牙耳机怎么开
爱应用-WPER【yinshuang07】 为您解答:你好,长按3秒以上,开机连接蓝牙模式如有疑问请追问,么么哒!!!!
来自团队:
其他类似问题
为您推荐:
蓝牙耳机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 篮球火结局是什么意思 的文章

 

随机推荐