Microsoft Device Emulator 的蓝牙






4.91/5 (16投票s)
Microsoft 设备模拟器蓝牙可在模拟器和模拟器之间启用蓝牙通信。
引言
Microsoft 设备模拟器蓝牙 可在模拟器和模拟器之间启用蓝牙通信。
已使用以下 SDK 镜像测试了与 Microsoft 设备模拟器的蓝牙连接
- Windows Mobile 5.0 Pocket PC SDK
- Windows Mobile 5.0 Smartphone SDK
- Windows Mobile 6 Professional SDK
- Windows Mobile 6 Standard SDK
背景
我曾听说诺基亚发布了 适用于 Windows XP 的 S60 SDK 蓝牙驱动程序。我的许多 Windows Mobile 项目都使用蓝牙,但 Windows Mobile 模拟器不支持它。我意识到,如果诺基亚能做到,为什么我不能。请注意,我不是微软员工,我在这里也不是为了推广微软或任何人。
经过大量研究,我发现 Windows Mobile 镜像中包含 100% 有效的 Microsoft 蓝牙堆栈实现。唯一缺少的部分是蓝牙硬件。因此,所有需要做的工作是开发一个蓝牙 HCI 传输驱动程序,该驱动程序将 HCI/ACL 请求和响应传输到连接到台式机的真实蓝牙 USB 设备。但还有几个问题需要解决。第一个问题是如何访问蓝牙设备的 HCI 级别。Windows 上唯一可接受的允许访问 HCI 级别的蓝牙堆栈是 FreeBT
要求
请注意,您必须安装所有以下软件
- Windows XP 或 Windows Vista 32 位,并安装最新的服务包。
- Microsoft Visual Studio 2005 或 2008,并安装最新的服务包。您的 Visual Studio 安装必须包含 Smart Device Programmability 功能。
- Windows Mobile 5.0 Pocket PC SDK 和/或 Windows Mobile 5.0 Smartphone SDK 和/或 Windows Mobile 6 Professional SDK 和/或 Windows Mobile 6 Standard SDK 模拟器镜像
- Microsoft 设备模拟器(推荐:版本 3.0)
- Microsoft Remote Tools Framework 1.00
此外,您应该有一个可用的蓝牙 USB 加密狗。
注意
此版本的 Microsoft 设备模拟器蓝牙使用 FreeBT 项目来访问蓝牙 USB 加密狗。
架构概述
项目由以下组件组成
- 设备端
- 蓝牙 HCI 传输驱动程序
- 串行端口驱动程序,用于抽象传输驱动程序,使其无需了解通信方式
- Microsoft Remote Tools Framework 远程代理
- 桌面端
- Microsoft Remote Tools Framework 桌面插件
- FreeBT USB 驱动程序运行时
- FreeBT USB 驱动程序
- 已连接的蓝牙 USB 设备
蓝牙 USB 驱动程序安装
- 打开 Windows 设备管理器。
- 在设备管理器中,找到要用作 FreeBT USB 设备的蓝牙设备。
- 右键单击,然后在弹出菜单中选择“更新驱动程序...” 。
- 选择“否,请勿更新”并单击“下一步 >”。
- 选择“从列表或指定位置安装”并单击“下一步 >”。
- 选择“不要搜索,我将选择要安装的驱动程序”并单击“下一步 >”。
- 选择设备驱动程序并单击“从磁盘…” 。
- 在“查找文件”对话框中,浏览到 fbtusb.inf 文件并单击“下一步 >”。
- 当出现“硬件安装警告”时,单击“继续安装”。
- 安装完成后,单击“完成”。
- 设备管理器现在应在 USB 控制器列表中显示“FreeBT USB Driver”。
有关更多详细信息,请参阅 FreeBT 文档。
安装
- 安装 Visual Studio 2005 或 2008 并安装最新的服务包。您的 Visual Studio 安装应包含 Smart Device Programmability 功能。
- 安装 Microsoft 设备模拟器。您应该已经随 VS 安装一起安装了一个。将其更新到 Microsoft 设备模拟器 3.0。
- 安装您需要的模拟器镜像。
- 您必须有一个可用的 USB 蓝牙加密狗。将其插入一个可用的 USB 端口。
- 按照“蓝牙 USB 驱动程序安装”部分中的说明安装 FreeBT USB 驱动程序。
- 安装 Microsoft Remote Tools Framework 1.00。
入门
- 按照“蓝牙 USB 驱动程序安装”部分中的说明安装 FreeBT USB 驱动程序。
- 按照“安装”部分中的说明安装所有“要求”部分。
- 从“RTFx Plugin”文件夹启动 Remote Tools Framework 插件 BthEmulManager.cetool 。
- 从列表中选择一个模拟器镜像。
- 等待模拟器连接。
- 选择“Microsoft 设备模拟器蓝牙”节点。
- 如果蓝牙设备已成功连接,则会显示蓝牙设备信息(地址、制造商、HCI 版本、LMP 版本)。此时蓝牙应在您的模拟器中运行。否则,将显示错误代码及其描述。
- 要清除通信日志,请右键单击并选择“清除所有”。
- 要将当前设备信息复制到剪贴板,请选择“Microsoft 设备模拟器蓝牙”节点,右键单击并选择“复制到剪贴板”。
- 要关闭模拟器上的蓝牙,请单击“连接”菜单项,然后选择“断开与...模拟器的连接”。
- Microsoft Remote Tools Framework 允许您同时启动两个设备模拟器。如果您已安装两个或更多 FreeBT USB 设备,请单击“窗口”菜单项并选择“拆分窗口视图”。重复步骤 3-6。您将获得两个同时运行的蓝牙驱动的模拟器。
- 可以启用/禁用设备端日志记录。如果选中“设备日志记录”复选框,则会在模拟器上启用远程日志记录。查看模拟器上的 \\Temp 目录。应该会创建 btd_bthemul_0.txt、btd_BthEmulAgent_0.txt、btd_bthemulcom_0.txt 文件。
- 可以启用/禁用桌面端日志记录。如果选中“桌面日志记录”复选框,则会启用本地日志记录。查看您的安装目录。应该会创建 BthEmulManager.txt 文件。
- 可以启用/禁用通信日志记录。通信日志记录允许查看模拟器和蓝牙设备之间的通信活动。
故障排除
问。我已安装 FreeBT USB 驱动程序,但在部署模拟器后蓝牙仍无法工作。
答。如果尚未安装 Microsoft Remote Tools Framework 1.00,请安装它。从“RTFx Plugin”文件夹启动 Remote Tools Framework 插件 BthEmulManager.cetool 。
问。我正在尝试连接 Pocket PC 2003 SE 模拟器,但一直收到错误:“设备 Pocket PC 2003 SE VGA Emulator 的 CPU 类型为 ARMV4,操作系统版本为 4.21。”
答。Pocket PC 2003 和 Smartphone 2003 尚不支持。
问。README 指的是哪个 Windows 设备管理器?
答。Win2K&XP:开始 -> 设置 -> 控制面板 -> 系统 -> 硬件选项卡 -> 设备管理器
Vista:开始 -> 设置 -> 控制面板 -> 硬件和声音 -> 设备管理器
问。我首次启动 BthEmulManager.cetool 插件,但没有任何反应。模拟器中没有蓝牙。
答。尝试重新启动先前选择的模拟器的插件。另外,在模拟器上,转到“设置”->“连接”->“蓝牙”->“模式”选项卡,然后打开蓝牙。
您可能还会遇到 FreeBT USB 驱动程序本身的问题。该驱动程序仍然(并且很可能仍处于此阶段)处于 alpha 版本。有许多报告称它存在问题。此驱动程序的问题包括
- 它会无缘无故停止工作。
- 它可能会在读/写操作中丢失数据包。问题开始于快速发送大量数据包。最可能的原因是 HCI 缓冲区使用不当(读取缓冲区大小命令、已完成数据包数事件)。
- 它在某些芯片组(如 CSR)上不稳定。
如果您遇到此类问题并且在 Windows 驱动程序开发方面有经验,我鼓励您尝试改进驱动程序并分享您的结果。
如果驱动程序运行一段时间后出现问题,请启动设备管理器,从 USB 设备列表中选择有问题的 FreeBT USb 驱动程序,右键单击并选择“禁用”。之后,再次右键单击并选择“启用”。
谢谢
感谢 Antony C. Roberts 的 FreeBT 开源堆栈。没有它,本次发布就不可能实现。
历史
- 2009-05-15
- 一些小改进
- 2009-04-13
- 一些小改进
- 2009-04-08
- 原文
附注:抱歉我的英语。我的母语是 C++。但我俄语也说得很好。请让我知道我的错误。