我正在使用nodejs对一些东西进行排序,然后将其发送到FTDI,但我无法弄清楚如何这样做。
我尝试从npm安装ftdi,但它的安装脚本失败了,所以现在我想知道如何不用它(教一个钓鱼)。我不想让这个特定的包工作,但我真的很想知道它是如何工作的。
到目前为止我的逻辑是:
serialport
。usb.getDeviceList()
,并且没有办法辨别列表中的内容。这一切看起来都是正确的吗?或者,是否有人愿意向我展示一个寻找ftdi设备并发送串行数据的小例子(假设安装了驱动程序)?
在这个网站上找到了答案:https://itp.nyu.edu/physcomp/labs/labs-serial-communication/lab-serial-communication-with-node-js/
npm i serialport
(我正在使用打字稿,所以如果需要将其转换为js)
然后,列出所有端口。尝试使用插入的ftdi进行列表,然后拔掉插头。你应该看到一个额外的条目。如果没有...抱歉。我被称为“/dev/tty.usbserial-A5XK3RJT”
import SerialPort from 'serialport';
// list serial ports:
SerialPort.list(function (err, ports) {
ports.forEach(function(port) {
console.log("PORT", port.comName);
});
});
获得串口名称后,只需向其发送Uint8Array缓冲区即可。例如:
import SerialPort from 'serialport';
// baudRate is specific to my project
const myPort = new SerialPort("/dev/tty.usbserial-A5XK3RJT", { baudRate: 57600 });
var bellOnMidi = new Uint8Array(3);
bellOnMidi[0] = (0b1001 << 4) + 2;
bellOnMidi[1] = 1;
bellOnMidi[2] = 0;
myPort.write(Buffer.from(bellOnMidi));
var bellOffMidi = new Uint8Array(3);
bellOffMidi[0] = (0b1000 << 4) + 2;
bellOffMidi[1] = 1;
bellOffMidi[2] = 0;
setTimeout(() => myPort.write(Buffer.from(bellOffMidi)), 500);
我仍然不确定usb驱动程序会发生什么,但这可能是另一个Q&A。