wince蓝牙驱动(2)
来源:互联网 发布:通过网络赚钱的方法 编辑:程序博客网 时间:2024/05/16 11:25
【转】wince蓝牙驱动(2)
之前没有摸过蓝牙,这回的项目里面有蓝牙模块.而我目前对蓝牙只知道的有:1.我们的设计里蓝牙模块是连接在串口上的.2.蓝牙不是蓝色的牙齿.呵呵, ,我不得不提前开始接触一下蓝牙协议栈.粗看起来还挺复杂庞大的.单蓝牙组织公布的规范1.1多达1084页.先看张图(不知道如何贴图,图片是msdn里面蓝牙协议栈的结构图,可以访问http://msdn2.microsoft.com/en-us/library/ms890956.aspx)
东西很多,先分类吧!从底向上看,蓝牙的协议和规范可以分这些大类:
一:最底层.就是上图蓝色部分.其中有射频规范,基带规范和链路管理层(Link Manager Protocol).一个好消息是,不要管这部分内容.因为这部分都在蓝牙模块里面实现了.可能需要稍微了解下的就是链路管理协议主要是负责认证,加密,链路管理和控制这些功能.还有一些有趣的信息,一个主设备最大和7个从设备建立链接,从设备之间不能互通.主设备到从设备的最大数据传输速率为723.2kbps,反向57.6kbps.也可以配置为双向433.9kbps.
二:接口层.协议栈和硬件之间的接口.在WinCE中,它也包括了3个部分:第一,HCI(Host Controller Interface),第二,Bluetooth Universal Transport Manager,第三,HCI Transport layer主机控制接口层.第一层向上提供一个接口,第三层是和硬件的接口,比如连接到Host的是串口,那第三层就是一个串口的抽象的传输层,那为什么还需要第二层呢?第二层叫统一传输管理,是因为WinCE是一个开放的平台,它也不知道蓝牙究竟是连接串口,usb口,sdio甚至一些pcmcia等其他的pnp设备,等等,而且作为HCI的上层也不想知道你用什么物理接口.于是它抽象出来这么一个东西来统一管理.简单说就是大一统所有的接口了,它先去扫描PCMCIA,USB和sdio等pnp设备,如果没有就根据注册表取默认的设备接口.最后被选定的接口会被安排到这里[HKEY_LOCAL_MACHINESoftwareMicrosoftBluetoothHCI]
第二和第三部分的代码在WINCE500PUBLICCOMMONOAKDRIVERSBLUETOOTHTRANSPORTS目录下面,那个univ目录的就是Universal Transport Manager,其他是各个具体的Transport layer的实现.
刚才说到如果没有扫描到pnp的蓝牙设备就使用默认的,这个默认的接口在哪里?其实也是根据注册表来找接口,看看下面的内容吧:1代表优先级别.name=COM2,baud=1c200,这很明显,就是以115200的波特率打开COM2口了.
IF BSP_BLUETOOTH_BUILTIN_UART
[HKEY_LOCAL_MACHINESoftwareMicrosoftBluetoothTransportsBuiltIn1]
"driver"="bthuart.dll"
"flags"=dword:4
"name"="COM2:"
"baud"=dword:1c200
"resetdelay"=dword:1388
ENDIF
来源:http://bbs.21ic.com/icview-31255-1-1.html
- wince蓝牙驱动(2)
- wince 蓝牙驱动(1)
- wince 蓝牙驱动(1) .
- WinCE蓝牙驱动
- WinCE蓝牙驱动
- WinCE蓝牙驱动
- WinCE蓝牙驱动
- WinCE蓝牙驱动
- wince音频驱动-2
- WIFI(wince)驱动
- Wince音频驱动(1)
- 蓝牙驱动
- wince驱动
- wince驱动
- WINCE蓝牙开发
- wince串口蓝牙
- wince 蓝牙 --转载
- [转]wince 蓝牙
- 对web.config中的数据库连接字符串进行加密
- Cassandra
- 用指向指针的指针对5个字符串进行排序
- Android学习札记4:PopupWindow在设置setFocusable后监听返回键盘事件
- 系统rm的处理机制
- wince蓝牙驱动(2)
- linux中profile与bashrc的区别
- 为什么升级VS2010 .net4.0
- 克莱斯勒发布首个车载无线充电系统
- 兼容DC与兼容位图关系
- 禁止对话框(窗口)的大小改变和移动
- EL和JSTL表达式
- 25个让Java程序员更高效的Eclipse插件
- 保存和恢复activity信息