0

Bluetooth を使用する Cocoa アプリケーションを作成しています。Bluetooth デバイスに接続しようとしていますが、失敗します。

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");
    }
}

そして、それは印刷します

あなたのための価格はありません

エラー コード 4 は何を意味しますか? また、OSStatus エラー コードからエラーの理由を特定する簡単な方法はありますか?

4

2 に答える 2

1

[IOBluetoothDevice openConnection]メソッドが OSStatus コードをテストしている間、IOReturnコード (I/O Kit 固有のエラー番号) を返します。 OSStatus は IOReturn と同じではありません。logError:

Apple には、I/O キットのエラーを検索するためのマクロを説明する Technical Q&A があります。 http://developer.apple.com/library/mac/#qa/qa1075/_index.html

あなたの場合、Mach エラーのようです (これはおそらく、ログ行に 10 進数の 4 として表示されるエラーの 0x4 hi ビットです)。

于 2013-06-21T09:42:18.477 に答える
0

私は4応答が実際にあると思いますkBluetoothHCIErrorPageTimeout。これを使用していることがわかった唯一のコードは、https://www.ida.liu.se/~TDDD63/projects/2013/mindstorms/Installation/Mac/lightblue-0.4-master/src/mac/_bluetoothsockets です。パイ

于 2017-02-16T13:27:45.453 に答える