BlueTooth_WM.h
上传用户:hbzxgg2
上传日期:2009-03-28
资源大小:291k
文件大小:3k
源码类别:

Windows Mobile

开发平台:

Visual C++

  1. #pragma once
  2. #include <initguid.h>
  3. #include <ws2bth.h>
  4. #include <bthapi.h>
  5. #include <bthutil.h>
  6. #include <winsock2.h>
  7. /****************************************************************************************************************
  8. 投稿说明:
  9. ****************************************************************************************************************/
  10. #define NOTE_BlueTooth_WM 
  11. L" ◆◆◆ 《如何在 Windows Mobile (WinCE 5.0) 中用Vc++编程查找并连接周围的蓝牙(Bluetooth)设备》◆◆◆rn
  12. 如何在手机中编程实现蓝牙通信即是本文将要阐述的内容,本文以Windows Mobile 5.0 为开发平台,简单介绍用蓝
  13. 牙APIs进行编程的要点,并附上一个源代码供大家参考。rn
  14. 你可以任意修改复制本代码,但请保留这段文字不要修改。rn
  15. 希望我能为中国的软件行业尽一份薄力!rn
  16. rn
  17. ◆◆◆ 作者 ◆◆◆rn
  18.     谢红伟 · chrys · chrys@163.com · http://www.howa.com.cnrn
  19. rn
  20. ◆◆◆ 日期 ◆◆◆rn
  21.     2007-08-18 23:31:18"
  22. // 配对时用得PIN码
  23. #define AUTHENTICATION_PASSKEY _T("0000")
  24. // 心电仪蓝牙名称
  25. #define RDS_BLUETOOTH_DEVICE_NAME _T("CONTRON")
  26. // 远程蓝牙设备详细信息
  27. typedef struct _RemoteBthDevInfo
  28. {
  29. _RemoteBthDevInfo ()
  30. {
  31. memset ( szName, 0, sizeof(szName) );
  32. memset ( &RemoteAddr, 0, sizeof(BT_ADDR) );
  33. memset ( &LocalAddr, 0, sizeof(BT_ADDR) );
  34. }
  35. TCHAR szName[64];
  36. BT_ADDR RemoteAddr;
  37. BT_ADDR LocalAddr;
  38. } t_RemoteBthDevInfo;
  39. typedef CArray<t_RemoteBthDevInfo,t_RemoteBthDevInfo&> t_Ary_RemoteBthDevInfo;
  40. //----------------------------------------------------------------------------------------------------
  41. // 一些在 bluetoothapis.h 或 bthsdpdef.h 中定义这里重新定义,因为不能包含这些 Windows 头文件
  42. //----------------------------------------------------------------------------------------------------
  43. typedef struct _BLUETOOTH_ADDRESS {
  44.     union {
  45.         BT_ADDR ullLong;       //  easier to compare again BLUETOOTH_NULL_ADDRESS
  46.         BYTE    rgBytes[ 6 ];   //  easier to format when broken out
  47.     };
  48. } BLUETOOTH_ADDRESS_STRUCT;
  49. #define BLUETOOTH_ADDRESS BLUETOOTH_ADDRESS_STRUCT
  50. class CBlueTooth_WM
  51. {
  52. public:
  53. CBlueTooth_WM(void);
  54. ~CBlueTooth_WM(void);
  55. BOOL Init ( LPCTSTR lpszCurDir );
  56. int ScanNearbyBthDev_Direct ();
  57. CString FormatBthAddress(BT_ADDR BthAddress);
  58. void ThreadProc_ScanNearbyBthDev ();
  59. BOOL ScanNearbyBthDev ( HANDLE hEvt_Notify=NULL, HWND hWnd_Noify=NULL);
  60. BOOL Save_RemoteBthDevInfo_ToFile(LPCTSTR lpszPath);
  61. BOOL Read_RemoteBthDevInfo_FromFile(LPCTSTR lpszPath);
  62. int ConnectToBlueToothServer ( BT_ADDR ServerAddress, LPCTSTR lpszServiceGUID );
  63. BOOL IsConnect () { return ( m_socketClient!=INVALID_SOCKET ); }
  64. void Disconnect ();
  65. int Transmite ( LPVOID lpData, int nSize, BOOL bSend );
  66. int Send ( LPVOID lpData, int nSize );
  67. int Recv ( LPVOID lpData, int nSize );
  68. int Find_RemoteBthDevInfo ( LPCTSTR lpszName_Found, t_RemoteBthDevInfo *pRemoteBthDevInfo=NULL );
  69. int Find_RemoteBthDevInfo ( BT_ADDR Addr_Found, t_RemoteBthDevInfo *pRemoteBthDevInfo=NULL );
  70. private:
  71. void RemoveAll_RemoteBthDevInfo(void);
  72. int ScanNearbyBthDevFinished ( int nRetValue );
  73. BOOL StringToGUID ( LPCTSTR lpszGUID, GUID *pGUID);
  74. BOOL Add_RemoteBthDevInfo ( t_RemoteBthDevInfo &RemoteBthDevInfo );
  75. public:
  76. t_Ary_RemoteBthDevInfo m_Ary_RemoteBthDevInfo;
  77. private:
  78. HANDLE m_hEvtEndModule;
  79. CString m_csCurDir;
  80. SOCKET m_socketClient;
  81. HANDLE m_hEvt_Notify_ScanNearbyBthDev;
  82. HWND m_hWnd_Noify_ScanNearbyBthDev;
  83. DWORD m_dwThreadID_ScanNearbyBthDev;
  84. HANDLE m_hThread_ScanNearbyBthDev;
  85. };