我正在尝试制作一个小应用程序,通过OSX 10.10.1上的蓝牙(最终将是Linux)和我的Android(Nexus 5,5.0.1)进行通信。
在OSX上,我正在使用bluetooth-serial-port运行NodeJS 0.10.35。我放在一起的一个简单的脚本看起来像我发现的一个例子。
btSerial = new (require("bluetooth-serial-port")).BluetoothSerialPort()
address = 'bc-f5-ac-54-4d-ba'
btSerial.findSerialPortChannel address, ((channel) ->
console.log channel
console.log "Connecting..."
btSerial.connect address, channel, (->
console.log "connected"
btSerial.write new Buffer("Hello There\n", "utf-8"), (err, bytesWritten) ->
console.log err if err
btSerial.on "data", (buffer) ->
console.log buffer.toString("utf-8")
btSerial.on "failure", (err) ->
console.log err
btSerial.on "closed", () ->
console.log 'disconnected'
), (err) ->
console.log (err)
console.log "cannot connect"
# close the connection when you're ready
# btSerial.close()
), ->
console.log "found nothing"
在我的机器人上,我正在使用AppGyvers Supersonic / SteroidsJS和BluetoothSerial Phonegap plugin。我已经创建了一个自定义扫描程序构建,因此它包含了该插件。这里只是一些简单的事情,我把它们放在一起,以便在使用开发控制台时更容易进行测试。
bt = {}
bt.connect = ->
bluetoothSerial.connect "00:02:72:CD:62:2A", (success) ->
console.log 'btConnect: Success'
console.log success
, (failed) ->
console.log 'btConnect: Failed'
console.log failed
bt.disconnect = ->
bluetoothSerial.disconnect()
bt.isConnected = ->
bluetoothSerial.isConnected (success) ->
console.log 'btIsConnected: Success'
console.log success
, (failed) ->
console.log 'btIsConnected: Failed'
console.log failed
bt.list = ->
bluetoothSerial.list (success) ->
console.log 'btList: Success'
console.log success
, (failed) ->
console.log 'btList: Failed'
console.log failed
bt.write = ->
bluetoothSerial.write "Hello From Android!", (success) ->
console.log 'btWrite: Success'
console.log success
, (failed) ->
console.log 'btWrite: Failed'
console.log failed
bt.subRaw = ->
bluetoothSerial.subscribeRawData (success) ->
console.log 'btSubRaw: Success'
console.log success
, (failed) ->
console.log 'btSubRaw: Failed'
console.log failed
bt.sub = ->
bluetoothSerial.subscribeRawData '\n', (success) ->
console.log 'btSub: Success'
console.log success
, (failed) ->
console.log 'btSub: Failed'
console.log failed
window.bt = bt
现在,我被困在这里。我需要这些应用程序基本上相互通信(我想来回发送对象)。目前我可以从两个设备连接到两个设备,甚至两者都建立连接,但在所有情况下,NodeJS中的“on data”或者Steroids都没有激活。我已经通过代码和OSX prefs确认连接是活动的,但仍然卡住了。
侧注,如果我不得不选择我想建立连接的设备,那就是NodeJS / OSX。
对此有任何帮助。非常感谢!
答案 0 :(得分:0)
最后,我无法让两个人说话。但是,以下内容适用于使用serialport(OSX 10.0.1)从节点读取和写入。 OSX或手机都可以进行初始连接,但它们都可以正常工作,但如果OSX初始化它,则Steroids必须在继续之前检查连接是否存在。
SerialPort = require("serialport").SerialPort
serialPort = new SerialPort("/dev/cu.Bluetooth-Incoming-Port",
baudrate: 9600
)
serialPort.on "open", ->
console.log "open"
serialPort.on "data", (data) ->
console.log "data received: " + data
serialPort.write data, (err, results) ->
console.log "err " + err if err
console.log "results " + results