1

我在运行 Ubuntu mate 的 Raspberry PI 2 上使用 node-serialport(版本 2.0.6)。我有一根 USB 转串行电缆连接到 RP 的 USB 端口,名称为 \dev\ttyUSB0。我正在尝试使用名为 PHP(不是编程语言)的协议与旧的串行设备通信。使用 minicom 时,串行通信工作得很好。

在 minicom 中,我可以输入字符串;402'\PT\GC1.FE02:CV'980B,后跟回车,设备返回'=CV65204E0000A30'。这是正确的反应。

当我运行 node.js 程序(版本 4.3.1)时,我只得到部分数据。零件每次都在变化。例如,我会得到4E0000A一次3D0又一次。 3D0很有趣,因为返回消息中应该没有D

/*jslint node : true, bitwise: true, esnext: true, vars: true, plusplus: true, devel: true, nomen: true, indent: 4, maxerr: 50, globalstrict: $
"use strict";

var SerialPort = require("serialport").SerialPort;
var serialPort = new SerialPort("/dev/ttyUSB0", {
    baudrate: 9600,
    databits: 8,
    parity: 'none',
    stopbits: 1,
    flowcontrol: false
});


serialPort.on("open", function () {
    console.log('open');
    serialPort.on('data', function(data) {
        console.log('data received: ' + data);
    });

    var bytesToSend = ";402'\\PT\\GC1.FE02:CV'980B\r";
    console.log("sending:",bytesToSend);
    serialPort.write(bytesToSend, function(err, results) {
        serialPort.drain();
        if (err) {
            console.log('err ' + err);
        }
        console.log('results ' + results);
    });

});

下面的实际输出(应该返回'=CV65204E0000A30'

tvann@tvann-pi2:~/node/serial$ node app
open
sending: ;402'\PT\GC1.FE02:CV'980B
results 26
data received: 00A
^C
tvann@tvann-pi2:~/node/serial$ node app
open
sending: ;402'\PT\GC1.FE02:CV'980B
results 26
data received: 65
data received: 0000A3
data received: D0
^C
tvann@tvann-pi2:~/node/serial$ node app
open
sending: ;402'\PT\GC1.FE02:CV'980B
results 26
data received: A
data received: 3D0
^C
tvann@tvann-pi2:~/node/serial$ node app
open
sending: ;402'\PT\GC1.FE02:CV'980B
results 26
data received: 4E
^C
tvann@tvann-pi2:~/node/serial$ node app
open
sending: ;402'\PT\GC1.FE02:CV'980B
results 26
data received: 4E0000A

我还有一个程序变体,它以 Uint8Array 的形式发送数据。结果完全一样。

4

0 回答 0