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

📄 bluetooth_wm.h

📁 蓝牙设备搜索与连接 RDSTerminal
💻 H
字号:
#pragma once

#include <initguid.h>
#include <ws2bth.h>
#include <bthapi.h>
#include <bthutil.h>
#include <winsock2.h>

/****************************************************************************************************************
		投稿说明:
****************************************************************************************************************/
#define NOTE_BlueTooth_WM \
L"	◆◆◆ 《如何在 Windows Mobile (WinCE 5.0) 中用Vc++编程查找并连接周围的蓝牙(Bluetooth)设备》◆◆◆\r\n\
	如何在手机中编程实现蓝牙通信即是本文将要阐述的内容,本文以Windows Mobile 5.0 为开发平台,简单介绍用蓝\
牙APIs进行编程的要点,并附上一个源代码供大家参考。\r\n\
	你可以任意修改复制本代码,但请保留这段文字不要修改。\r\n\
	希望我能为中国的软件行业尽一份薄力!\r\n\
\r\n\
	◆◆◆ 作者 ◆◆◆\r\n\
    谢红伟 · chrys · chrys@163.com · http://www.howa.com.cn\r\n\
\r\n\
	◆◆◆ 日期 ◆◆◆\r\n\
    2007-08-18 23:31:18"

// 配对时用得PIN码
#define AUTHENTICATION_PASSKEY		_T("0000")

// 心电仪蓝牙名称
#define RDS_BLUETOOTH_DEVICE_NAME	_T("CONTRON")

// 远程蓝牙设备详细信息
typedef struct _RemoteBthDevInfo
{
	_RemoteBthDevInfo ()
	{
		memset ( szName, 0, sizeof(szName) );
		memset ( &RemoteAddr, 0, sizeof(BT_ADDR) );
		memset ( &LocalAddr, 0, sizeof(BT_ADDR) );
	}
	TCHAR szName[64];
	BT_ADDR RemoteAddr;
	BT_ADDR LocalAddr;
} t_RemoteBthDevInfo;
typedef CArray<t_RemoteBthDevInfo,t_RemoteBthDevInfo&> t_Ary_RemoteBthDevInfo;

//----------------------------------------------------------------------------------------------------
// 一些在 bluetoothapis.h 或 bthsdpdef.h 中定义这里重新定义,因为不能包含这些 Windows 头文件
//----------------------------------------------------------------------------------------------------

typedef struct _BLUETOOTH_ADDRESS {
    union {
        BT_ADDR ullLong;       //  easier to compare again BLUETOOTH_NULL_ADDRESS
        BYTE    rgBytes[ 6 ];   //  easier to format when broken out
    };

} BLUETOOTH_ADDRESS_STRUCT;
#define BLUETOOTH_ADDRESS BLUETOOTH_ADDRESS_STRUCT

class CBlueTooth_WM
{
public:
	CBlueTooth_WM(void);
	~CBlueTooth_WM(void);
	BOOL Init ( LPCTSTR lpszCurDir );
	int ScanNearbyBthDev_Direct ();
	CString FormatBthAddress(BT_ADDR BthAddress);
	void ThreadProc_ScanNearbyBthDev ();
	BOOL ScanNearbyBthDev ( HANDLE hEvt_Notify=NULL, HWND hWnd_Noify=NULL);
	BOOL Save_RemoteBthDevInfo_ToFile(LPCTSTR lpszPath);
	BOOL Read_RemoteBthDevInfo_FromFile(LPCTSTR lpszPath);
	int ConnectToBlueToothServer ( BT_ADDR ServerAddress, LPCTSTR lpszServiceGUID );
	BOOL IsConnect () { return ( m_socketClient!=INVALID_SOCKET ); }
	void Disconnect ();
	int Transmite ( LPVOID lpData, int nSize, BOOL bSend );
	int Send ( LPVOID lpData, int nSize );
	int Recv ( LPVOID lpData, int nSize );
	int Find_RemoteBthDevInfo ( LPCTSTR lpszName_Found, t_RemoteBthDevInfo *pRemoteBthDevInfo=NULL );
	int Find_RemoteBthDevInfo ( BT_ADDR Addr_Found, t_RemoteBthDevInfo *pRemoteBthDevInfo=NULL );

private:
	void RemoveAll_RemoteBthDevInfo(void);
	int ScanNearbyBthDevFinished ( int nRetValue );
	BOOL StringToGUID ( LPCTSTR lpszGUID, GUID *pGUID);
	BOOL Add_RemoteBthDevInfo ( t_RemoteBthDevInfo &RemoteBthDevInfo );

public:
	t_Ary_RemoteBthDevInfo m_Ary_RemoteBthDevInfo;
private:
	HANDLE m_hEvtEndModule;
	CString m_csCurDir;
	SOCKET m_socketClient;

	HANDLE m_hEvt_Notify_ScanNearbyBthDev;
	HWND m_hWnd_Noify_ScanNearbyBthDev;
	DWORD m_dwThreadID_ScanNearbyBthDev;
	HANDLE m_hThread_ScanNearbyBthDev;
};

⌨️ 快捷键说明

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