前面我们讲解了一些蓝牙协议栈的相关内容,相信大家已经有所了解了。我们知道蓝牙协议栈在嵌入式方面有着非常广泛的应用。那么今天我们则主要说明一下这当中,蓝牙协议栈的初始化状态的一些命令。
在启动时,蓝牙协议栈的完全装载和初始化需要一定的时间。可以使用BTH_NAMEDEVENT_STACK_INITED来检查协议栈的初始化情况,它定义在%_WINCEROOT%\Public\Common\Sdk\Inc\Bt_api.h中。要打开这个命名事件需要使用OpenEvent函数。
- // 确定协议栈是否已初始化
- BOOL fStackUp = FALSE;
- for (int i = 0 ; i < 100 ; ++i)
- {
- HANDLE hBthStackInited = OpenEvent (EVENT_ALL_ACCESS, FALSE, BTH_NAMEDEVENT_STACK_INITED);
- if (hBthStackInited)
- {
- DWORD dwRes = WaitForSingleObject (hBthStackInited, INFINITE);
- CloseHandle (hBthStackInited);
- if (WAIT_OBJECT_0 == dwRes)
- {
- fStackUp = TRUE;
- break;
- }
- }
- Sleep (1000);
- }
- if (! fStackUp)
- {
- // 错误处理
- }