打印

WinCE上的蓝牙问题,期待各位帮助!

[复制链接]
5556|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wlsui|  楼主 | 2007-10-23 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在用蓝牙实现WinCE和PC机通信时遇到了问题,问题如下:
现在我有两个不同型号的蓝牙USB适配器,为表述方便,假设为A和B,有两个WinCE开发平台,一个为三星2410,一个为Intel PXA270
在PXA270平台上:
1、用蓝牙A插入USB口,在WinCE的“蓝牙设备属性”里点“扫描设备”按钮,可以搜索到设备,并PC机能正常传输文件至WinCE。这应该能说明USB口和WinCE的设置等应该都没问题的;
2、用蓝牙B插入USB口,在WinCE的“蓝牙设备属性”里点“扫描设备”按钮,弹出“硬件错误10050,控制器不存在”对话框;
而在2410平台上,A和B都能正常搜索到设备,并且PC能正常传输文件至WinCE,这就说明,蓝牙B本身并没有损坏;

问题是蓝牙B在PXA270上为什么不行呢?

弹出对话框里的10050错误号WinCE里的说明是:Network is down. A socket operation encountered a dead network. 
This could indicate a serious failure of the network system (that is, the protocol stack that the Windows 
Sockets DLL runs over), the network interface, or the local network itself. 

另在PXA270平台上:用逻辑分析仪分别观察蓝牙A和B插入USB口时D+和D-的数据,发现能正常操作的A插入时有较多的数据流(枚举成功),而B则只有少量的数据,估计根本就没有枚举成功。由于逻辑分析仪观察到的都是纯二进制数据,所以很难分析出到底是些什么样的数据包,也就不知道B插入时是在哪个SETUP阶段出了问题。


尝试了很多方法都没有成功,不知各位高手有没有遇到过这种问题,有什么解决方法或建议能否指点一下?
在此先谢谢了!

相关帖子

沙发
high| | 2007-10-24 15:52 | 只看该作者

我没有接蓝牙设备

会弹出和你一样对话框.也许一个不被支持.

使用特权

评论回复
板凳
wlsui|  楼主 | 2007-10-24 16:46 | 只看该作者

问题是在2410上正常啊,

2410和270上编译的系统镜象是一样的

使用特权

评论回复
地板
high| | 2007-10-24 17:41 | 只看该作者

其他想法,输出电流不够?

使用特权

评论回复
5
wlsui|  楼主 | 2007-10-24 21:33 | 只看该作者

有这可能!

觉得有这可能!
我明天上班的时候将那蓝牙插入PC机,然后用抓USB数据的软件抓一下那些蓝牙USB描述符中需要的电流大小,正常的蓝牙和不正常的蓝牙对比下.

不过话说回来,USB蓝牙适配器所需的电流应该不会很大,一般的USB控制器都能提供那么多的电流吧
而USB协议里规定的枚举时USB设备需要的电流不能大于100mA,100mA的电流一般的控制器应该都能提供的.而从昨天用逻辑分析仪抓的数据来看枚举就没有成功.当然,也有可能枚举时主机发现不支持那么大的电流就终止了枚举的过程.

有点笨的是之前为什么不知道抓一下设备描述符里的数据.呵呵

谢谢你的提醒!我明天再试下

使用特权

评论回复
6
wlsui|  楼主 | 2007-10-25 21:41 | 只看该作者

唉,不行

配置描述符中读出来的所需电流值竟然是0
可能写那蓝牙固件程序的人自己也不清楚是多少,就填了个0进去

使用特权

评论回复
7
wlsui|  楼主 | 2007-10-25 21:55 | 只看该作者

那个不正常的蓝牙插入USB口时输出信息如下:

0x83cc6b24: CHub(External tier 1)::HubStatusChangeThread - port 2, change = 0x0001, status = 0x0101
0x83cc6b24: CHub(External tier 1)::HubStatusChangeThread - device attached on port 2
0x83cc6b24: +CHub(External tier 1)::AttachDevice - port = 2, fIsLowSpeed = 0
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_OPENING_ENDPOINT0_PIPE, failures = 0
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_USING_ADDRESS0, failures = 0
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_RESET_AND_ENABLE_PORT, failures = 0
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SCHEDULING_GET_DEVICE_DESCRIPTOR_TEST, failures = 0
0x83cc6b24: CHub(External tier 1)::AttachDevice - failure on DEVICE_CONFIG_STATUS_SCHEDULING_GET_DEVICE_DESCRIPTOR_TEST step
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_RESET_AND_ENABLE_PORT, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SCHEDULING_GET_DEVICE_DESCRIPTOR_TEST, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SCHEDULING_SET_ADDRESS, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_LEAVE_ADDRESS0, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SCHEDULING_GET_INITIAL_DEVICE_DESCRIPTOR, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SCHEDULING_GET_DEVICE_DESCRIPTOR, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SETUP_CONFIGURATION_DESCRIPTOR_ARRAY, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SCHEDULING_GET_INITIAL_CONFIG_DESCRIPTOR, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SCHEDULING_GET_CONFIG_DESCRIPTOR, failures = 1
0x83cc6b24: CHub(External tier 1)::AttachDevice - failure on DEVICE_CONFIG_STATUS_SCHEDULING_GET_CONFIG_DESCRIPTOR step
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_SCHEDULING_GET_CONFIG_DESCRIPTOR, failures = 2
0x83cc6b24: CHub(External tier 1)::AttachDevice - failure on DEVICE_CONFIG_STATUS_SCHEDULING_GET_CONFIG_DESCRIPTOR step
0x83cc6b24: CHub(External tier 1)::AttachDevice - status = DEVICE_CONFIG_STATUS_FAILED, failures = 3
0x83cc6b24: -CHub(External tier 1)::AttachDevice - port = 2, fIsLowSpeed = 0, address = 2
0x83ae3000: WPCSHELL: SHRecognizeGesture found WM_LBUTTONUP, dropping out of loop...

使用特权

评论回复
8
wlsui|  楼主 | 2007-10-25 22:01 | 只看该作者

可以看出枚举就没有成功

正常的蓝牙枚举成功后主机会打开相应的通信管道pipe
而那个不正常的蓝牙则不会

从这点看这应该算是USB方面的问题,而不是与蓝牙相关的软件代码方面的问题
因为在涉及蓝牙协议栈前操作就没有成功

使用特权

评论回复
9
wlsui|  楼主 | 2007-10-25 22:13 | 只看该作者

看来我应该将这个问题转到USB版块合适些:

*

使用特权

评论回复
10
high| | 2007-10-25 23:18 | 只看该作者

楼主别急,我们对着大地呼唤‘平常人~’

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

263

帖子

1

粉丝