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

在 NodeJS 中重用 SerialPort 对象

如何解决在 NodeJS 中重用 SerialPort 对象

我正在使用 node js 串行端口包 (https://serialport.io/docs/)。

我创建了以下串口对象:

var port = new SerialPort(data.device.hostPort,{
                baudrate: 115200,autoOpen: false,}
           );

我将这个对象保存在一个 json 文件中,以便稍后我可以重用它。 但是在检索json文件中的数据并解析后我无法使用串口对象方法,我尝试使用:

port.open(function(err){
    if(err){
        return console.log('Error opening port: ',err.message);
    }
});

但是我收到一个错误,说无法识别 open 方法。 有人可以帮我解决这个问题吗? 提前致谢!

解决方法

我认为你的问题的根源在于你在学会走路之前试图跑步。你认为你理解了一些东西(比如 JSON 和类)并试图继续前进;但很明显,你缺乏一些基础知识,导致你理解错误,因为你是从基础开始的。

  1. 了解有关 objects 的 JavaScript 基础知识。

  2. 了解什么是JSON。它是 JavaScript 的一个子集,只包含一些原始数据。

  3. 了解有关 JavaScript 的 classesfunctions、原型和 closures

  4. 了解serialization

我认为,到那时,您可能会理解为什么您尝试做的事情与您尝试做的事情的方式不同。更重要的是,通常物理资源没有唯一标识符就无法序列化。

另一方面,您没有说明您无法解决的问题是什么,而只是说明您尝试了什么以及得到的结果。这只是问题的一半。

如果你只是想以同样的方式连接到“相同”的端口,你只需要存储信息来重建它和一些函数来做到这一点:可能你需要:

  • 端口名称(唯一标识符!!):data.device.hostPort
  • 配置:{baudRate: 115200,autoOpen: false}

此外,您必须考虑:

  • 也许您需要存储其他信息,与您的问题域的具体情况更相关。
  • 某些信息可能会在初始配置后发生变化。最好的方法是使用一个函数来获取 SerialPort,读取相关属性并返回一个序列化对象。然后创建另一个函数来反转操作,这将调用 SerialPort 构造函数。
  • 如果您要混合序列化类,则可能需要某种方式来指示该类。此外,如果您不小心发送了另一个对象,您可以检测到它并抛出更有用的错误。

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