首页 > 解决方案 > “端口未打开错误/权限问题”或“没有显示数据的错误”电表读数,Node.js

问题描述

我已经用谷歌搜索并搜索了很多我的问题,但没有受到任何使用威胁。我有与https://github.com/yaacov/node-modbus-serial/issues/115相同的问题,但我使用的是 Windows 10 操作系统。我尝试了建议的解决方案,但仍然是同样的问题。我认为这应该很简单,但现在卡住了好几天

    var path = "COM3";
    var ModbusRTU = require("modbus-serial");
    var client = new ModbusRTU();
    client.connectRTUBuffered(path, { baudRate: 9600, stopbits: 1, databits: 8, parity: 'none' }, false, read());
    client.setID(1);
      
function read() {
    // read the 20 registers starting at address 0
    // on device number 1.
    var data = client.readHoldingRegisters(0, 20)
    console.log(data)
} 

使用此代码,我没有得到端口权限/权限被拒绝错误。通过设备管理器端口属性的端口信息

  1. 每秒比特数:9600
  2. 数据位:8
  3. 奇偶校验:无
  4. 停止位:1
  5. 流量控制:无

输出 1:(节点:10784)UnhandledPromiseRejectionWarning:错误:打开 COM3:访问被拒绝

尝试手动打开端口

var x = setInterval(function () {
if (client.isOpen) {
    client.setID(1);
    //console.log("WORKING WORKING");
    try {
        client.readHoldingRegisters(0, 10, function (err, data) {
            console.log(data);
        });
    } catch (err) {
        console.log("Error Encountered: " + err)
    }
} else {
    console.log("ERROR ERROR ERROR");
    }

}, 1000);

标签: node.jssmartmeter

解决方案


推荐阅读