使用node-serial读取SerialPort

时间:2013-07-11 20:53:36

标签: node.js ubuntu serial-port node-serialport

我正在尝试在Ubuntu中读取带有Mag Stripe读取器的RS232串行端口。我有一个USB工作正常(ID-Tech)。但我也想让一个神经元读者工作。我一般都不熟悉串口通信,但是对于node-serial我写了一个简单的应用程序,它等待设备:

node tester.js /dev/ttyS0 

比吐出读卡器的输出。适用于USB ID-Tech阅读器,但是当我插入串行端口设备时,我什么也得不到。我还有点不确定如何判断它正在使用哪个串口。有没有更好的工具来“探测”Ubuntu中的串口并找出Mag Reader正在使用哪一个?

更新

研究它似乎使用的工具是:

sudo cat /dev/ttyS0

我遇到的问题是设备连接到哪个端口,在ttyS0,1,2,3上执行上述操作什么都不做,应该从设备中转储出一些输出。但是我不确定是否需要先运行它:

sudo inputattach -dump /dev/ttyS0

这只是挂在光标处,我想尝试和读卡器的键盘类型,但同样的问题只是挂起。 dmesg |的输出grep ttyS显示启用的端口:

[    1.906700] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.927250] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    1.947758] serial8250: ttyS2 at I/O 0x3e8 (irq = 4) is a 16550A
[    1.968273] serial8250: ttyS3 at I/O 0x2e8 (irq = 3) is a 16550A
[    1.990199] 00:04: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    2.010770] 00:05: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    2.031335] 00:06: ttyS2 at I/O 0x3e8 (irq = 5) is a 16550A
[    2.051952] 00:07: ttyS3 at I/O 0x2e8 (irq = 11) is a 16550A

1 个答案:

答案 0 :(得分:0)

插入设备后,您可以运行此节点代码并检查每个端口的信息。您可能会认出某些东西,而这正是您寻找的端口。

var serialport = require("serialport");

serialport.list(function (err, ports) {
    ports.forEach(function(port) {

        console.log("pnpId: " + port.pnpId);
        console.log("manufacturer: " + port.manufacturer);
        console.log("comName: " + port.comName);
        console.log("serialNumber: " + port.serialNumber);
        console.log("vendorId: " + port.vendorId);
        console.log("productId: " + port.productId);
    });
});

然后使用以下方式连接:

var myPort = new SerialPort("/dev/ttyACM0", { // replace ttyACM0 with the right port on your computer
    baudrate: 115200,
    parser: serialport.parsers.readline("\r\n")
});

希望它有所帮助!