Android/OSX - 使用 NodeJS 和 Phonegap,通过蓝牙通话
Android/OSX - Using NodeJS and Phonegap, Speak over Bluetooth
我正在尝试制作一个通过蓝牙在 OSX 10.10.1(最终将是 Linux)和我的 Android(Nexus 5、5.0.1)上进行通信的小应用程序。 1).
在 OSX,我 运行 NodeJS 0.10.35 bluetooth-serial-port。根据我找到的一个示例,我放在一起的一个简单脚本看起来像这样。
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"
在我的 android 上,我将 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" 或类固醇订阅都不会触发。我已经通过代码和 OSX 首选项确认连接处于活动状态,但仍然卡住。
旁注,如果我必须为将来选择要建立连接的设备,那将是 NodeJS/OSX。
欢迎提供任何帮助。非常感谢!
最后没能让二人开口。但是,以下使用 serialport (OSX 10.0.1) 从节点读取和写入的工作。 OSX 或 phone 都可以建立初始连接,它们都可以工作,但如果 OSX 初始化它,那么类固醇将必须在继续之前检查连接是否存在。
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
我正在尝试制作一个通过蓝牙在 OSX 10.10.1(最终将是 Linux)和我的 Android(Nexus 5、5.0.1)上进行通信的小应用程序。 1).
在 OSX,我 运行 NodeJS 0.10.35 bluetooth-serial-port。根据我找到的一个示例,我放在一起的一个简单脚本看起来像这样。
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"
在我的 android 上,我将 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" 或类固醇订阅都不会触发。我已经通过代码和 OSX 首选项确认连接处于活动状态,但仍然卡住。
旁注,如果我必须为将来选择要建立连接的设备,那将是 NodeJS/OSX。
欢迎提供任何帮助。非常感谢!
最后没能让二人开口。但是,以下使用 serialport (OSX 10.0.1) 从节点读取和写入的工作。 OSX 或 phone 都可以建立初始连接,它们都可以工作,但如果 OSX 初始化它,那么类固醇将必须在继续之前检查连接是否存在。
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