【发布时间】:2019-08-01 13:17:09
【问题描述】:
我通过 Trendnet TU-S9 串行转 USB 转换器电缆将 Digi DS-781 数字秤连接到 PC。
设备管理器发现 COM 端口很好。接下来我尝试使用 node-serialport 与之通信(主要目标是获取显示在刻度屏幕上的值)。
const port = new serialport('COM3', {
baudRate: 9600,
parity: 'even',
stopBits: 1,
dataBits: 8
});
port.on('open', () => {
console.log('Port opened');
});
port.on('data', (data) => {
console.log(`Got data: ${data.toString()}`);
});
port.on('error', (err) => {
console.log(`Port error: ${err.message}`);
});
port.on('close', () => {
console.log('Port closed');
});
相应地设置了秤,因此上面显示的串行端口设置与秤匹配。
然后我运行我的节点应用程序。连接成功建立,一切似乎都正常,但是当我把东西放在秤上时,“数据”回调没有输出。秤似乎没有发送任何内容。我的期望是,只要我把东西放在秤上,它就应该将数据传输到我的节点应用程序(秤处于“标准流”模式)。
我开始怀疑在秤向我发送任何东西之前我还需要做另一个步骤(尽管秤的文档显示其他内容,可以在此处找到 https://www.marsden-weighing.co.uk/index.php/digi-ds-781-user-manual.html)
【问题讨论】:
-
尝试使用终端应用程序(例如 putty)连接到秤,看看它是否在发送任何内容。
-
您需要按照您介绍的手册第 16 至 33 页中的说明配置设备。特别是第 20 页和第 21 页将是 RS232C 相关设置。
-
还要考虑(手册第 20.3 段。控制代码和字符)数据由 CR 终止,文本由 LF。您可能需要一个解析器,例如 parser: serialport.parsers.readline('\n')。
-
@luigif 我试过解析器。但是 .on('data') 回调不应该在有任何数据时立即亮起吗?我会试试你的腻子建议。
-
当解析器认为接收到完整的数据块时,会触发 .on('data') 事件。不同的解析器行为不同。在您的情况下,readline 解析器应该就足够了,也许它是默认解析器,不确定。您将在文档中找到更多信息 github.com/serialport/node-serialport#parsers github.com/serialport/node-serialport/blob/master/packages/…
标签: node.js serial-port node-serialport