WINCE中蓝牙驱动程序的添加

fanqiaqi   2008-12-5 09:27 楼主
各位大侠,小弟现在往WINCE5.0中添加蓝牙驱动,用的BC-4的芯片,使用板子上的COM4口,结果在CSR_Init函数中调用CreateFile(TEXT("COM4……时,返回失败了,原OS中没有任何蓝牙相关的代码与驱动,包括btd.dll,在注册表中的设置如下:不知道是不是我的设置有问题?请高手指教。[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SerialCSR]
    "Prefix"="CSR"                        
    "Dll"="SerialCSR.Dll"
    "Order"=dword:10               
    "Index"=dword:2

回复评论 (22)

应该还是你串口驱动配置的问题
从你的注册表来看,你的设备号应该是“CSR2:“啊,怎么会是COM4:呢?
点赞  2008-12-5 09:41
你可以考虑直接用SPI往蓝牙的flash里面写寄存器,BC-4的芯片厂商会提供那个烧写软件给你的,比软件直接可靠
点赞  2008-12-5 09:54
WinCE里不是已经有CSR蓝牙的驱动了嘛
点赞  2008-12-5 10:18
hzdysymbol ,你好。
我用测试程序去打开“COM4:”的时候是成功的,但就是直接在系统启动加载CSR_Init函数时,CreateFile就失败了!我们同时有两个项目在进行,第一个项目中,注册表是跟我这个一样的,代码也是这样写,但是那样就是对的,能够正常打开COM口,但是那个项目中,是用UART0做为COM4连接的,这会是什么原因呢?谢谢。
点赞  2008-12-5 10:21
记得弄过WINCE50下的,但弄了很久没见什么效果!
点赞  2008-12-5 10:33
请问一下,如果加载bthcsr.dll到内核里面去呢?这个动态库是在哪生成的?谢谢。
点赞  2008-12-5 10:54
加上这个Catalog item:“Bluetooth Stack with Universal Loadable Driver”

然后修改注册表:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Bluetooth\Transports\BuiltIn\1]
    "driver"="bthcsr.dll"
    "flags"=dword:4
    "name"="COM4:"
    "baud"=dword:1c200
    "resetdelay"=dword:1388

蓝牙模块还要修改PSKEY,主要是Host Interface和Baudrate。
点赞  2008-12-5 11:44
Catalog item:“Bluetooth Stack with Universal Loadable Driver”怎么加呀?我不懂!!catalog Item里面没找到!!!
点赞  2008-12-5 12:46
我以为是应用程序控制串口的呢,原来蓝牙是这么回事啊。
点赞  2008-12-5 13:06
.................
首先你的搞清楚你怎么控制CSR
如果是用COM去控制你就应该去操作com。
你建立CSR1.。。这个我理解你想做个CSR的驱动。。。那就要再你的驱动中对COM口进行操作。
然后应用层通过调用CSR1这样一个控制口来执行一些程序。
思路要清楚就好了
点赞  2008-12-5 13:40
现在的问题是我调用CSR_Init之后,应该会CreateFile(TEXT("CSR1:"),...);然后执行CSR_Open函数,可是我的代码:
HANDLE WINAPI CSR_Open(HANDLE pContext, DWORD AccessCode, DWORD ShareMode)
{
        RETAILMSG(1, (TEXT("CSR_Open\r\n")));
        return (HANDLE)NULL;
}确没有执行!!!
点赞  2008-12-5 14:01
追踪后发现在HCI_OpenConnection函数中执行:
hFile = CreateFile(szComPortName,   //szComPortName = CSR1:
                GENERIC_READ | GENERIC_WRITE,
                0,    // comm devices must be opened w/exclusive-access
                NULL, // no security attrs
                OPEN_EXISTING, // comm devices must use OPEN_EXISTING
                FILE_ATTRIBUTE_NORMAL,    // overlapped I/O
                NULL  // hTemplate must be NULL for comm devices  
                                );

用GetLastError()返回值为:55。
点赞  2008-12-5 14:23
引用: 引用 8 楼 orangeman1982112 的回复:
Catalog item:“Bluetooth Stack with Universal Loadable Driver”怎么加呀?我不懂!!catalog Item里面没找到!!!


Core OS > Windows CE devices > Communication Services and Networking > Networking - Personal Area Network (PAN) > Bluetooth > Bluetooth Protocol Stack with Transport Driver Support
点赞  2008-12-5 14:23
引用: 引用 13 楼 xy1001 的回复:
引用 8 楼 orangeman1982112 的回复:
Catalog item:“Bluetooth Stack with Universal Loadable Driver”怎么加呀?我不懂!!catalog Item里面没找到!!!


Core OS > Windows CE devices > Communication Services and Networking > Networking - Personal Area Network (PAN) > Bluetooth > Bluetooth Protocol Stack with Transport Driver Support


我加了这个组件,但是在HCI_OpenConnection函数中执行:
hFile = CreateFile(szComPortName,  //szComPortName = CSR1:
                GENERIC_READ | GENERIC_WRITE,
                0,    // comm devices must be opened w/exclusive-access
                NULL, // no security attrs
                OPEN_EXISTING, // comm devices must use OPEN_EXISTING
                FILE_ATTRIBUTE_NORMAL,    // overlapped I/O
                NULL  // hTemplate must be NULL for comm devices  
);
还是失败,返回错误结果为:0x37(The specified network resource or device is no longer available)。

请高手指教啊,谢谢啦。
点赞  2008-12-5 15:07
你的蓝牙模块有没有配置正确呢?
PSKEY_HOST_INTERFACE这个PSKEY要配置成UART link running BCSP
点赞  2008-12-5 15:20
我有一个PSConfig.psr的文档,里面的内容是:
// PSKEY_BDADDR
&0001 = 0010 05fd 006e 0006
// UART BAUD RATE
&01be = 01d8
// ANA FREQ
&01fe = 3E80
// PSKEY_PCM_CONFIG32
&01b3 = 0800 0000

但是在platform.bib文件中加入:
PSConfig.psr    $(_TARGETPLATROOT)\SRC\DRIVERS\CSP\Bluetooth\SerialCSR\PSConfig.psr         NK SH
后,编译就会出现如下错误:
Error: Failed reading e32 structure in module PSConfig.psr
点赞  2008-12-5 16:14
而且我发现还有一个问题存在,就是配置PSKEY应该是在CreateFile(TEXT("COM4:"),……)之后才对,现在是打开COM4口都有问题的。
点赞  2008-12-5 16:29
添加了Core OS > Windows CE devices > Communication Services and Networking > Networking - Personal Area Network (PAN) > Bluetooth > Bluetooth Protocol Stack with Transport Driver Support组件后,系统在开机的时候自动会去打开COM0:
所以请你去检查一下COM0:对应的是哪一个UART,如果是跟你COM4是同一个,那你是没有办法成功打开的
点赞  2008-12-5 16:50
...........你COM4如果被占用了当然就打不开。。确认下COM4是否工作正常吧
点赞  2008-12-5 16:52
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复