通过 Node JS 使用 serialport 包作为服务器是一种选择。这适用于 Windows,显然也适用于 Linux 和 OSX。请参阅https://github.com/node-serialport/node-serialport。
这是我用来通过 USB 读取微比特通信到浏览器的解决方案。我确实必须使用以下命令重建 Windows (10) 的驱动程序:
- npm install --global --production windows-build-tools
- npm install serialport --build-from-source
我在下面粘贴了一些代码以供参考:
const serialport = require('serialport')
// list serial ports:
const find_microbit = (error, success) => {
serialport.list((err, ports) => {
if (err) {
error(err)
} else {
let comName = null
ports.forEach((port) => {
if ((port.vendorId == '0D28') && (port.productId == '0204')) {
comName = port.comName
}
})
if (comName != null) {
success(comName)
} else {
error('Could not find micro:bit.')
}
}
})
}
exports.get_serial = (error, success) => {
find_microbit(error, (comName) => {
let serial = new serialport(comName, {baudRate: 115200, parser: serialport.parsers.readline('\n')}, (err) => {
if (err) {
error(err)
} else {
success(serial)
}
})
})
}
/* e.g.
get_serial((err)=>{console.log("Error:" + err)},
(serial)=>{
serial.on('data', (data) => {
let ubit = JSON.parse(data)
if (ubit.button == 'a') {
console.log('Button A Pressed')
}
if (ubit.button == 'b') {
console.log('Button B Pressed')
}
if (ubit.ir) {
console.log('Visitor detected')
}
})
})
*/
这种方法有效 - 对我来说 - 但让它工作起来可能很耗时。在我看来,这不是一个明显或简单的解决方案。它需要相当多的技术知识——而且,我觉得,比它应该的要复杂和“棘手”得多。
特别是 - 重建库不是我在使用 Node JS 时期望做的事情。一种可能的影响是您需要为不同的平台重建串行端口二进制文件。