0

昨晚在调试WinMo 6程序时遇到了意外的行为,不知道是不是在做梦。但首先,一些背景。

该程序通过串行端口与 GPS 设备进行通信。它使用带有电缆的物理端口,也可以通过蓝牙进行尝试。暂停或断电后,如果端口正在使用物理链路,我不需要关闭并重新打开端口。但是,如果使用蓝牙,我需要重新连接:旧句柄不会传输任何字节。重新打开大约需要 6 或 7 秒,因此应用程序在蓝牙暂停后无法立即使用。

然而,我记得有一次调试,我的蓝牙串口在几次断电/通电循环后仍然有效和正常工作,这让我感到惊喜。我现在无法重现该行为。这是BT驱动程序中的错误吗?

如果您可以尝试使用有关配置或 API 的任何提示,那将是很棒的。

4

1 回答 1

1

蓝牙协议的设计使得 GPD 设备和您的 Windows 设备之间必须至少每隔几秒进行一次通信。如果通信不存在,则链接将超时并且必须从头开始重新建立。

其次,还有执行电源循环的方式。如果蓝牙堆栈以正常方式进入关机状态,正确实现的蓝牙堆栈将明确关闭任何打开的连接。

简而言之,蓝牙连接并不意味着在电源循环后仍然存在,因此您的程序必须准备好在电源循环后重新建立与远程蓝牙设备的连接。

于 2010-10-15T14:00:10.887 回答