2013-06-21 119 views
0

我在寫一個使用藍牙的Cocoa應用程序。我正嘗試連接到藍牙設備,但失敗。IOBluetoothDevice openConnection失敗 - 識別錯誤代碼

IOBluetoothDevice *btDevice; 

// I do search and find the device 
btDevice = ;//device found 
//btDevice is not nil 

IOReturn status   = [btDevice openConnection]; 
if (status != kIOReturnSuccess) { 
    NSLog(@"Error - failed to connect. %d", status); 
} 

我什麼時候搜索獲得設備,但openConnection方法失敗。和NSLog打印

錯誤=無法連接。 4

現在這個錯誤代碼表示什麼? 我看着IOKit.framework/IOReturn.h文件,它顯示了許多錯誤代碼

#define kIOReturnError   iokit_common_err(0x2bc) // general error 
#define kIOReturnNoMemory  iokit_common_err(0x2bd) // can't allocate memory 
#define kIOReturnNoResources  iokit_common_err(0x2be) // resource shortage 
#define kIOReturnIPCError  iokit_common_err(0x2bf) // error during IPC 
#define kIOReturnNoDevice  iokit_common_err(0x2c0) // no such device 
....... 
//And many more 

我寫一個函數來確定哪些是錯誤代碼4

- (void)logError:(OSStatus)status{ 
    if (status == kIOReturnError) { 
     NSLog(@"kIOReturnError"); 
    }else if(status == kIOReturnNoMemory){ 
     NSLog(@"kIOReturnNoMemory"); 
    }else if(status == kIOReturnNoResources){ 
     NSLog(@"kIOReturnNoResources"); 
    }else if(status == kIOReturnIPCError){ 
     NSLog(@"kIOReturnIPCError"); 
    }else if(status == kIOReturnNoDevice){ 
    ...... 
    ...... 
    }else{ 
     NSLog(@"No price for you"); 
    } 
} 

而且它打印

沒有價格你

什麼是e錯誤代碼4暗示?還有什麼更容易的方法來識別來自OSStatus錯誤代碼的錯誤原因嗎?

回答

1

[IOBluetoothDevice openConnection]返回IOReturn代碼(這是I/O Kit特定的錯誤編號),而您的logError:方法測試OSStatus代碼。
OSStatus與IOReturn不同。

Apple有一個技術問題Q & A解釋了查找I/O Kit錯誤的宏。 http://developer.apple.com/library/mac/#qa/qa1075/_index.html

在你的情況下,它似乎是一個錯誤馬赫(這可能是出現在你的日誌行小數4的錯誤爲0x4喜位)。

+0

你是對的OSStatus部分,即使我正在檢查函數中的不同IOReturn錯誤代碼。我弄錯了方法原型。我正在檢查你的鏈接。 – Krishnabhadra

相關問題