我正在开发一个简单的Chrome网上应用商店应用,它使用名为 chrome.bluetooth 的新API。该API相当新,仅适用于Google Chrome开发者频道。
我设法发现所有设备,搜索他们的服务,如果他们有我需要连接的服务,它就建立了一个连接。
我的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代码:3758097088”
我不太确定我做错了什么,主要是因为我不明白错误。 “IOReturn代码:3758097088”是什么意思?我想知道是否有人知道我做错了什么以及这个错误意味着什么?
干杯,
答案 0 :(得分:1)
最近对API进行了改进,包括对OS X支持的重大更新;现在代码将由chrome.bluetoothSocket.send替换。试一试。
答案 1 :(得分: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引用0x2c0代表“kIOReturnNoDevice”,但是当定义常量时,0xe0000000似乎被添加到每个中(可能这是一个偏移,所以它们不会与其他常数),因此十进制值是3758097088而不是704.
我无法确切地告诉您OSX正在尝试用错误代码告诉您什么,但希望能为您提供找到问题所需的上下文。