微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 node.js SerialPort 打开通过 USB 连接的二极管?

如何解决如何使用 node.js SerialPort 打开通过 USB 连接的二极管?

我目前有一个简单的二极管配置,通过 USB 连接到我电脑的 COM4。该配置有一个红色二极管(始终开启),当将 1 传递给 COM 时,二极管将快速闪烁绿色。

我目前在使用 SerialPort for node.js 编写此代码时遇到一些问题(代码如下)。

  1. 此刻,绿灯闪烁得如此之快,几乎让人察觉不到。我如何让端口写 1 并维持至少一秒钟?这样,灯会变绿一秒钟,然后变回红色。

  2. 由于某种原因,端口没有关闭。写入端口后,我必须关闭它,以便我可以随时再次运行代码。现在,端口保持打开状态,所以如果我再次尝试运行代码,它会抛出错误并且不会闪烁绿灯。现在解决此问题的唯一方法是拔下然后重新插入 USB。如何关闭端口或完全重置它,以便无需拔下/重新插入 USB 即可再次运行序列?

这是我当前的代码

const SerialPort = require('serialport')
var msg = "1"; 
var comName = "/COM4";
var _baudrate = 9600;

var port = new SerialPort(comName,{
         baudrate: _baudrate,"disconnectedCallback": function () {
         console.log("DEVICE: disconnected.");
         //call the next function or whatever
        }
},false);

port.open(function (error) {
    if(error){
        console.log(error);
        //Handle Error
    }
else{  
    //start your coding from here
    port.write(msg,function(error,results) {
        if(error){
            console.log(error);
            //Handle Error
        }

        else{
            console.log("Write : " + msg);
            // uncomment below line to close the port internally after writing. 
            port.close();                        
        }

    });

    port.on('data',function(data) {
        console.log("Read : " +  data);
    });
}
});

port.on("close",function(){
    //this is called when you close the port internally 
    //or the device is unplug externally after connected.
    console.log("port Close");
});
port.on("error",function(error){
    console.log(error);
    //Handle Error
});

我在拔出/重新插入设备后第一次运行代码时,指示灯呈绿色闪烁,但终端抛出以下错误

错误:端口正在打开 在 SerialPort.open (C:\Users\name\node_modules@serialport\stream\lib\index.js:225:29) 在对象。 (C:\Users\name\Documents\testserial\testPorts.js:16:6) 在 Module._compile (internal/modules/cjs/loader.js:1063:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) 在 Module.load (internal/modules/cjs/loader.js:928:32) 在 Function.Module._load (internal/modules/cjs/loader.js:769:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
在内部/main/run_main_module.js:17:47

如果我再次运行代码(不拔掉 USB),指示灯将保持红色并且终端会抛出以下错误

错误:端口正在打开 在 SerialPort.open (C:\Users\name\node_modules@serialport\stream\lib\index.js:225:29) 在对象。 (C:\Users\name\Documents\testserial\testPorts.js:14:6) 在 Module._compile (internal/modules/cjs/loader.js:1063:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) 在 Module.load (internal/modules/cjs/loader.js:928:32) 在 Function.Module._load (internal/modules/cjs/loader.js:769:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) 在内部/main/run_main_module.js:17:47

感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。