⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitorbluesoleil.cpp

📁 基于BlueSleil的Sample 查找附近的蓝牙设备 确定安装了蓝牙和BlueSleil
💻 CPP
字号:
#include "MonitorBlueSoleil.h"
#include "SdkFunc.h"
#include "Config.h"


/*
Detect running status of BlueSoleil using BT_IsBlueSoleilStarted and BT_IsBluetoothReady
*/
DWORD WINAPI DetectBlueSoleil(LPVOID param)
{
    BOOL bInitialized = FALSE;	
    while(1)
    {		
        if(BT_IsBlueSoleilStarted(0))
		{
    		if(!bInitialized)
			{
    //				BT_IsBluetoothReady(15);
    			bInitialized = BT_InitializeLibrary();
    			if(bInitialized)
				{
    				//SDK_Init();
    			}
    			else
				{
    				SDK_Done();
    				printf("BlueSoleil starts, Fail to initialize Lib\n");
    			}
    		}
    	}
		else
		{
    		if(bInitialized)
			{
    		    SDK_Done();
    			bInitialized = FALSE;
    			printf("BlueSoleil stops, Lib uninitialized\n");
    		}
    	}
    	
    	if(WaitForSingleObject(g_hForceExit,1000) == WAIT_OBJECT_0) break;
    }
    return 0;
}


/***************************************************************************
Detect running status of BlueSoleil using events
****************************************************************************/

DWORD WINAPI DetectBlueSoleilByEvents(LPVOID param)
{
	//Must created with bManualReset=TRUE
	g_hBlueSoleilStarted = CreateEvent(NULL, TRUE, FALSE, ("Global\\BluesoleilBluetoothStarted"));
	if(!g_hBlueSoleilStarted) return 0;
	g_hBlueSoleilStopping = CreateEvent(NULL, TRUE, FALSE, ("Global\\BluesoleilStopping"));
    if(!g_hBlueSoleilStopping)
	{
		CloseHandle(g_hBlueSoleilStarted);
		return 0;
	}
	HANDLE hWaitHandles[2];
	DWORD dwRet;

	while(1)
	{
		//Wait for BlueSoleil stopping
		hWaitHandles[0] = g_hForceExit;
		hWaitHandles[1] = g_hBlueSoleilStopping;
		dwRet = WaitForMultipleObjects(2,hWaitHandles,FALSE,INFINITE);
		if(dwRet == WAIT_OBJECT_0)
			break;
		else if(dwRet == WAIT_OBJECT_0 + 1)
		{
			SDK_Done();
			printf("BlueSolei exits detected.\n\n");
			
		}
		else
			break;

		//Wait for BlueSoileil started
		hWaitHandles[0] = g_hForceExit;
		hWaitHandles[1] = g_hBlueSoleilStarted;
		dwRet = WaitForMultipleObjects(2,hWaitHandles,FALSE,INFINITE);
		if(dwRet == WAIT_OBJECT_0)
			break;
		else if(dwRet == WAIT_OBJECT_0 + 1)
		{
			SDK_Init();
			printf("BlueSolei starts detected.\n\n");
		}else
			break;
		
	}
	
	CloseHandle(g_hBlueSoleilStarted);
	CloseHandle(g_hBlueSoleilStopping);
	return 0;
}

VOID StartMornitorBlueSoleil()
{
	DWORD dwID;
	
	if(g_iMonitorType == DETECT_BY_API)
		g_hDetectThread = CreateThread(NULL,0,DetectBlueSoleil,NULL,0,&dwID);
	else
		g_hDetectThread = CreateThread(NULL,0,DetectBlueSoleilByEvents,NULL,0,&dwID);
}

void EndMornitorBlueSoleil()
{
	if(g_hDetectThread == NULL){
		printf("Detect BlueSoleil not started.\n");
		return;
	}
	
	if(WaitForSingleObject(g_hDetectThread, 2000) != WAIT_OBJECT_0){
		printf("Wait detect BlueSoleil thread time out.\n");
		TerminateThread(g_hDetectThread, -1);
	}
	else
		printf("Detect BlueSoleil thread exit.\n");

	g_hDetectThread = NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -