Windows Moible, Wince 使用.NET Compact Framework的进行蓝牙(Bluetooth)设备配对的开发
在.NET Compact Framework下的Bluetooth開發 之 32feet.NET 里講述了如何使用32feet.net庫來進行Bluetooth的開發,天機 同學在使用過程發現設備配對問題,本文講述如何進行Bluetooth設備配對的開發。
以下是一個Bluetooth配對程序。在配對之前先掃描附近的Bluetooth設備。
????????BluetoothClient?client?=?new?BluetoothClient();????????Dictionary<string,?BluetoothAddress>?deviceAddresses?=?new?Dictionary<string,?BluetoothAddress>();
????????private?void?menuItem2_Click(object?sender,?EventArgs?e)
????????{
????????????//Turn?on?the?bluetooth
????????????BluetoothRadio?radio?=?BluetoothRadio.PrimaryRadio;
????????????radio.Mode?=?RadioMode.Connectable;
????????????//Scan?the?nearby?devices
????????????BluetoothDeviceInfo[]?devices?=?client.DiscoverDevices();
????????????listBoxDevices.Items.Clear();
????????????deviceAddresses.Clear();
????????????foreach(BluetoothDeviceInfo?device?in?devices)
????????????{
????????????????listBoxDevices.Items.Add(device.DeviceName);
????????????????deviceAddresses[device.DeviceName]?=?device.DeviceAddress;
????????????}
????????}
deviceAddresses 用于保存設備名字和設備地址的映射。當點擊 Discover 菜單,先修改BluetoothRadio 的 property Mode 來打開Bluetooth設備,然后通過DiscoverDevices() 函數來掃描附近的所有Bluetooth設備。
?
這是掃描的結果, Jake為我的手機, AV890為Bluetooth 耳機。點擊AV890 然后點擊 Pair 菜單進行配對。AV890的默認配對密碼為 0000。
配對的代碼如下:
????????private?void?menuItem3_Click(object?sender,?EventArgs?e)????????{
????????????try
????????????{
????????????????BluetoothAddress?deviceAddress?=?deviceAddresses[listBoxDevices.SelectedItem.ToString()];
????????????????client.SetPin(deviceAddress,?textBoxPin.Text.Trim());
????????????????client.Connect(deviceAddress,?BluetoothService.Handsfree);?//if?connect?ot?Hands?free.
????????????????//client.Connect(deviceAddress,?BluetoothService.SerialPort);?//if?connect?to?cell?phone?and?so?forth.
????????????????MessageBox.Show("Pair?successful.");
????????????????//transfer?data..
????????????}
????????????catch?(Exception?ex)
????????????{
????????????????MessageBox.Show(ex.Message);
????????????}
????????}
由于設備有密碼,所以配對的時候需要設置密碼,使用 SetPin()函數設置對端設備的密碼。SetPin() 函數使用了下面的API
[DllImport("btdrt.dll",?SetLastError=true)]public?static?extern?int?BthSetPIN(byte[]?pba,?int?cPinLength,?byte[]?ppin);
?
Connect() 函數的第二個參數十分重要,天機 同學的程序配對失敗可能是因為在這里沒有設置正確。參數二是服務類型,通信雙方必須使用同樣的服務類型。如果通信雙方的程序都是由我們負責開發,可以使用通用的服務類型,例如BluetoothService.SerialPort。但是如果要與第三方設備進行通信,需要查出該設備的服務類型,在設備端的通信服務類型一般編寫在Firmware(固件)里面,而且會按照規范編寫,例如Bluetooth耳機會使用BluetoothService.Handsfree。具體的規范可以參考下面文章。http://en.wikipedia.org/wiki/Bluetooth_profile
在32feet.net里使用BluetoothService來定義服務類型,如下:
Code
????????///?<summary>
????????///?Represents?the?base?Guid?from?which?all?standard?Bluetooth?profiles?are?derived?-?not?used?for?connections.
????????///?</summary>
????????public?static?readonly?Guid?BluetoothBase?=?new?Guid(0x00000000,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????//Considering?moving?all?the?protocol?definitions?to?a?separate?class?from?the?profiles
????????public?static?readonly?Guid?SdpProtocol?=?new?Guid(0x00000001,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?UdpProtocol?=?new?Guid(0x00000002,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?RFCommProtocol?=?new?Guid(0x00000003,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?TcpProtocol?=?new?Guid(0x00000004,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?TcsBinProtocol?=?new?Guid(0x00000005,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?TcsAtProtocol?=?new?Guid(0x00000006,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?ObexProtocol?=?new?Guid(0x00000008,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?IPProtocol?=?new?Guid(0x00000009,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?FtpProtocol?=?new?Guid(0x0000000A,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?HttpProtocol?=?new?Guid(0x0000000C,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?WspProtocol?=?new?Guid(0x0000000E,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?BnepProtocol?=?new?Guid(0x0000000F,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?UpnpProtocol?=?new?Guid(0x00000010,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?HidpProtocol?=?new?Guid(0x00000011,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?HardcopyControlChannelProtocol?=?new?Guid(0x00000012,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?HardcopyDataChannelProtocol?=?new?Guid(0x00000014,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?HardcopyNotificationProtocol?=?new?Guid(0x00000016,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?AvctpProtocol?=?new?Guid(0x00000017,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?AvdtpProtocol?=?new?Guid(0x00000019,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?CmtpProtocol?=?new?Guid(0x0000001B,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?UdiCPlaneProtocol?=?new?Guid(0x0000001D,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?McapControlChannelProtocol?=?new?Guid(0x0000001E,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?McapDataChannelProtocol?=?new?Guid(0x0000001F,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????public?static?readonly?Guid?L2CapProtocol?=?new?Guid(0x00000100,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1000]
????????///?</summary>
????????public?static?readonly?Guid?ServiceDiscoveryServer?=?new?Guid(0x00001000,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1001]
????????///?</summary>
????????public?static?readonly?Guid?BrowseGroupDescriptor?=?new?Guid(0x00001001,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1002]
????????///?</summary>
????????public?static?readonly?Guid?PublicBrowseGroup?=?new?Guid(0x00001002,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Provides?a?basic?Serial?emulation?connect?over?Bluetooth.?[0x1101]
????????///?</summary>
????????public?static?readonly?Guid?SerialPort?=?new?Guid(0x00001101,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Used?to?establish?PPP?connections?over?RFComm?channels.?[0x1102]
????????///?</summary>
????????public?static?readonly?Guid?LanAccessUsingPpp?=?new?Guid(0x00001102,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1103]
????????///?</summary>
????????public?static?readonly?Guid?DialupNetworking?=?new?Guid(0x00001103,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1104]
????????///?</summary>
????????public?static?readonly?Guid?IrMCSync?=?new?Guid(0x00001104,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Used?for?sending?binary?objects?between?devices.[0x1105]
????????///?</summary>
????????public?static?readonly?Guid?ObexObjectPush?=?new?Guid(0x00001105,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?OBEX?version?of?an?FTP?server?[0x1106]
????????///?</summary>
????????public?static?readonly?Guid?ObexFileTransfer?=?new?Guid(0x00001106,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1107]
????????///?</summary>
????????public?static?readonly?Guid?IrMCSyncCommand?=?new?Guid(0x00001107,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Supports?Bluetooth?headset?devices.[0x1108]
????????///?</summary>
????????public?static?readonly?Guid?HSP?=?new?Guid(0x00001108,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1109]
????????///?</summary>
????????public?static?readonly?Guid?CordlessTelephony?=?new?Guid(0x00001109,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x110A]
????????///?</summary>
????????public?static?readonly?Guid?AudioSource?=?new?Guid(0x0000110A,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x110B]
????????///?</summary>
????????public?static?readonly?Guid?AudioSink?=?new?Guid(0x0000110B,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x110C]
????????///?</summary>
????????public?static?readonly?Guid?AVRemoteControlTarget?=?new?Guid(0x0000110C,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x110D]
????????///?</summary>
????????public?static?readonly?Guid?AdvancedAudioDistribution?=?new?Guid(0x0000110D,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x110E]
????????///?</summary>
????????public?static?readonly?Guid?AVRemoteControl?=?new?Guid(0x0000110E,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x110F]
????????///?</summary>
????????public?static?readonly?Guid?VideoConferencing?=?new?Guid(0x0000110F,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1110]
????????///?</summary>
????????public?static?readonly?Guid?Intercom?=?new?Guid(0x00001110,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1111]
????????///?</summary>
????????public?static?readonly?Guid?Fax?=?new?Guid(0x00001111,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1112]
????????///?</summary>
????????public?static?readonly?Guid?HeadsetAudioGateway?=?new?Guid(0x00001112,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1113]
????????///?</summary>
????????public?static?readonly?Guid?Wap?=?new?Guid(0x00001113,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1114]
????????///?</summary>
????????public?static?readonly?Guid?WapClient?=?new?Guid(0x00001114,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1115]
????????///?</summary>
????????public?static?readonly?Guid?Panu?=?new?Guid(0x00001115,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1116]
????????///?</summary>
????????public?static?readonly?Guid?Nap?=?new?Guid(0x00001116,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1117]
????????///?</summary>
????????public?static?readonly?Guid?GN?=?new?Guid(0x00001117,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1118]
????????///?</summary>
????????public?static?readonly?Guid?DirectPrinting?=?new?Guid(0x00001118,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1119]
????????///?</summary>
????????public?static?readonly?Guid?ReferencePrinting?=?new?Guid(0x00001119,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x111A]
????????///?</summary>
????????public?static?readonly?Guid?Imaging?=?new?Guid(0x0000111A,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x111B]
????????///?</summary>
????????public?static?readonly?Guid?ImagingResponder?=?new?Guid(0x0000111B,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x111C]
????????///?</summary>
????????public?static?readonly?Guid?ImagingAutomaticArchive?=?new?Guid(0x0000111C,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x111D]
????????///?</summary>
????????public?static?readonly?Guid?ImagingReferenceObjects?=?new?Guid(0x0000111D,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Supports?hands?free?kits?such?as?a?car?kits?which?provide?audio?and?more?advanced?call?control?than?the?Headset?profile.?[0x111E]
????????///?</summary>
????????public?static?readonly?Guid?Handsfree?=?new?Guid(0x0000111E,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x111F]
????????///?</summary>
????????public?static?readonly?Guid?HandsfreeAudioGateway?=?new?Guid(0x0000111F,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1120]
????????///?</summary>
????????public?static?readonly?Guid?DirectPrintingReferenceObjects?=?new?Guid(0x00001120,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?[0x1121]
????????///?</summary>
????????public?static?readonly?Guid?ReflectedUI?=?new?Guid(0x00001121,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Used?for?printing?simple?text,?HTML,?vCard?objects?and?similar.?[0x1122]
????????///?</summary>
????????public?static?readonly?Guid?BasicPrinting?=?new?Guid(0x00001122,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1123]
????????///?</summary>
????????public?static?readonly?Guid?PrintingStatus?=?new?Guid(0x00001123,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Supports?human?interface?devices?such?as?keyboards?and?mice.?[0x1124]
????????///?</summary>
????????public?static?readonly?Guid?HumanInterfaceDevice?=?new?Guid(0x00001124,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1125]
????????///?</summary>
????????public?static?readonly?Guid?HardcopyCableReplacement?=?new?Guid(0x00001125,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1126]
????????///?</summary>
????????public?static?readonly?Guid?HardcopyCableReplacementPrint?=?new?Guid(0x00001126,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1127]
????????///?</summary>
????????public?static?readonly?Guid?HardcopyCableReplacementScan?=?new?Guid(0x00001127,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Common_ISDN_Access?[0x1128]
????????///?</summary>
????????public?static?readonly?Guid?CommonIsdnAccess?=?new?Guid(0x00001128,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1129]
????????///?</summary>
????????public?static?readonly?Guid?VideoConferencingGW?=?new?Guid(0x00001129,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?UDI_MT?[0x112A]
????????///?</summary>
????????public?static?readonly?Guid?UdiMT?=?new?Guid(0x0000112A,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?UDI_TA?[0x112B]
????????///?</summary>
????????public?static?readonly?Guid?UdiTA?=?new?Guid(0x0000112B,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x112C]
????????///?</summary>
????????public?static?readonly?Guid?AudioVideo?=?new?Guid(0x0000112C,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?SIM_Access?[0x112D]
????????///?</summary>
????????public?static?readonly?Guid?SimAccess?=?new?Guid(0x0000112D,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Phonebook?Access?-?PCE?[0x112E]
????????///?</summary>
????????public?static?readonly?Guid?PhonebookAccessPce?=?new?Guid(0x0000112E,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Phonebook?Access?-?PSE?[0x112F]
????????///?</summary>
????????public?static?readonly?Guid?PhonebookAccessPse?=?new?Guid(0x0000112F,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Phonebook?Access?[0x1130]
????????///?</summary>
????????public?static?readonly?Guid?PhonebookAccess?=?new?Guid(0x00001130,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Headset?[0x1131]
????????///?</summary>
????????public?static?readonly?Guid?Headset?=?new?Guid(0x00001131,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Message?Access?Server?[0x1132]
????????///?</summary>
????????public?static?readonly?Guid?MessageAccessServer?=?new?Guid(0x00001132,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Message?Notification?Server?[0x1133]
????????///?</summary>
????????public?static?readonly?Guid?MessageNotificationServer?=?new?Guid(0x00001133,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Message?Access?Profile?[0x1134]
????????///?</summary>
????????public?static?readonly?Guid?MessageAccessProfile?=?new?Guid(0x00001134,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Bluetooth?Device?Identification.?[0x1200]
????????///?</summary>
????????public?static?readonly?Guid?PnPInformation?=?new?Guid(0x00001200,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1201]
????????///?</summary>
????????public?static?readonly?Guid?GenericNetworking?=?new?Guid(0x00001201,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1202]
????????///?</summary>
????????public?static?readonly?Guid?GenericFileTransfer?=?new?Guid(0x00001202,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1203]
????????///?</summary>
????????public?static?readonly?Guid?GenericAudio?=?new?Guid(0x00001203,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1204]
????????///?</summary>
????????public?static?readonly?Guid?GenericTelephony?=?new?Guid(0x00001204,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1205]
????????///?</summary>
????????public?static?readonly?Guid?UPnp?=?new?Guid(0x00001205,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///??[0x1206]
????????///?</summary>
????????public?static?readonly?Guid?UPnpIP?=?new?Guid(0x00001206,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?ESDP_UPNP_IP_PAN?[0x1300]
????????///?</summary>
????????public?static?readonly?Guid?UPnpIPPan?=?new?Guid(0x00001300,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?ESDP_UPNP_IP_LAP?[0x1301]
????????///?</summary>
????????public?static?readonly?Guid?UPnpIPLap?=?new?Guid(0x00001301,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?ESDP_UPNP_L2CAP?[0x1302]
????????///?</summary>
????????public?static?readonly?Guid?UPnpIPL2Cap?=?new?Guid(0x00001302,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Video?Distribution?Profile?-?Source?[0x1303]
????????///?</summary>
????????public?static?readonly?Guid?VideoSource?=?new?Guid(0x00001303,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Video?Distribution?Profile?-?Sink?[0x1304]
????????///?</summary>
????????public?static?readonly?Guid?VideoSink?=?new?Guid(0x00001304,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Video?Distribution?Profile?[0x1305]
????????///?</summary>
????????public?static?readonly?Guid?VideoDistribution?=?new?Guid(0x00001305,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Health?Device?Profile?(HDP)?[0x1400]
????????///?</summary>
????????public?static?readonly?Guid?HealthDevice?=?new?Guid(0x00001400,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Health?Device?Profile?(HDP)?-?Source?[0x1401]
????????///?</summary>
????????public?static?readonly?Guid?HealthDeviceSource?=?new?Guid(0x00001401,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);
????????///?<summary>
????????///?Health?Device?Profile?(HDP)?-?Sink?[0x1402]
????????///?</summary>
????????public?static?readonly?Guid?HealthDeviceSink?=?new?Guid(0x00001402,?0x0000,?0x1000,?0x80,?0x00,?0x00,?0x80,?0x5F,?0x9B,?0x34,?0xFB);?
配對成功后的界面。
可以在配對成功(connection()函數)后加入相應的通信處理代碼。
?
源代碼:http://files.cnblogs.com/procoder/BluetoothPairing.rar
運行環境:VS2008 + Windows?Mobile 5 Pocket PC SDK? + CF.NET 2.0
?
總結
以上是生活随笔為你收集整理的Windows Moible, Wince 使用.NET Compact Framework的进行蓝牙(Bluetooth)设备配对的开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为应用程序池 ''DefaultAppP
- 下一篇: java信息管理系统总结_java实现科