0

我正在编写一个使用蓝牙的 Cocoa 应用程序。我正在尝试连接到蓝牙设备,但它失败了。

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 Kit 错误的宏。 http://developer.apple.com/library/mac/#qa/qa1075/_index.html

在您的情况下,这似乎是一个马赫错误(这可能是错误的 0x4 hi 位,在您的日志行中显示为十进制 4)。

于 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。 py

于 2017-02-16T13:27:45.453 回答