1

我正在开发一个简单的 chrome 网上商店应用程序,它使用一个名为chrome.bluetooth的新 API 。该 API 相当新,仅适用于 google chrome dev 频道。

我设法发现了所有设备,搜索了他们的服务,如果他们有我需要连接的服务,它就会建立连接。

我的 chrome.bluetooth.onConnection 函数工作正常,它返回一个我试图写入的套接字:

chrome.bluetooth.onConnection.addListener(function(socket){
log("Connected", arguments);
if (socket) {
    sockets.push(socket);
    var data = str2ab("hello"); //My string to array buffer converter
    chrome.bluetooth.write({ //Try to write to socket
        socket:socket,
        data:data
    },function(){
        log("Wrote to socket",socket,data,arguments)
    })
}
});

在我尝试写之后,chrome.runtime.lastError消息是:

“发送数据失败。IOReturn code: 3758097088”

我不太确定我做错了什么,主要是因为我不理解错误。“IOReturn 代码:3758097088”是什么意思?我想知道是否有人知道我做错了什么以及这个错误意味着什么?

干杯,

4

2 回答 2

1

最近对 API 进行了改进,包括对 OS X 支持的重大更新;该代码现在将被chrome.bluetoothSocket.send替换。试试看。

于 2014-06-19T03:20:02.337 回答
0

如果您还没有追踪到这一点,如果您在 OSX 上运行(至少)映射到 IOReturn.h 中定义的“kIOReturnNoDevice”: http ://www.opensource.apple.com/source/xnu/xnu -1504.7.4/iokit/IOKit/IOReturn.h

通过chrome源代码跟踪错误后,我确定这是chrome“bluetooth_socket_mac.mm”方法“BluetoothSocketMac::Send”中“IOBluetoothRFCOMMChannel writeAsync”返回的错误

这个错误变得更加迟钝,因为 IOReturn.h 为“kIOReturnNoDevice”引用 0x2c0,但是当定义常量时,似乎每个常量都添加了 0xe0000000(可能这是一个偏移量,因此它们不会与其他常量发生冲突),因此十进制值是 3758097088 而不是 704。

我无法确切地告诉您 OSX 试图通过该错误代码告诉您什么,但希望这可以为您提供查找问题所需的上下文。

于 2014-02-26T22:34:35.863 回答