node.js调试串口,nodejs编写后端接口

发布时间:2022-11-23

本文目录一览:

  1. node.js 使用serialport打开串口报错
  2. node-serialport windows下怎么使用
  3. nodejs 获取串口数据
  4. web实现串口调试助手
  5. 如何调试nodejs

node.js 使用serialport打开串口报错

  1. 先判断在关闭原先串口 com:
if (com != null)
{
  com.Close();
}
  1. 然后重新new,在打开串口:
com = new System.IO.Ports.SerialPort(strComName); //strComName串口名
com.Open();
// ...设置属性
// ...绑定串口接收函数

node-serialport windows下怎么使用

node-serialport 是一个 Node.js 的包,用来对串口数据进行读写操作。

基本示例代码:

var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort("/dev/tty-usbserial1", {
  baudrate: 57600
}, false); // this is the openImmediately flag [default is true]
serialPort.open(function (error) {
  if ( error ) {
    console.log('failed to open: '+error);
  } else {
    console.log('open');
    serialPort.on('data', function(data) {
      console.log('data received: ' + data);
    });
    serialPort.write("ls\n", function(err, results) {
      console.log('err ' + err);
      console.log('results ' + results);
    });
  }
});

罗列所有串口:

var serialPort = require("serialport");
serialPort.list(function (err, ports) {
  ports.forEach(function(port) {
    console.log(port.comName);
    console.log(port.pnpId);
    console.log(port.manufacturer);
  });
});

串口配置:

  • baudRate
  • dataBits
  • stopBits
  • parity
  • rtscts
  • xon
  • xoff
  • xany
  • flowControl
  • bufferSize
  • parser
  • encoding
  • dataCallback
  • disconnectedCallback
  • platformOptions - 设置平台特定选项

nodejs 获取串口数据

由于项目要求,项目为(B/S)架构,需要在页面上读取串口数据,于是就需要 nodejs。 使用 nodejs 的一个插件:serialport 现在先做个测试 demo:

  1. 先建立测试文件夹
  2. 在文件夹中安装 serialport,在文件夹下的 cmd 中输入
  3. 可能会出现一个警告,可以忽略
  4. 安装后编写读取串口 js 文件 testport.js
  5. 运行 js,在文件夹下 cmd 中输入 执行成功:

可能的问题:

问题一:File not found 这个是电脑上没有安装串口驱动,或者虚拟串口。 可以使用虚拟串口程序建立测试串口。 问题二:Port is opening 需要加入串口属性 autoOpen: false

web实现串口调试助手

最近受朋友之托试图用 web 前端实现串口调试助手,一开始觉得不太有可行性,以前用过的串口调试助手都是客户端程序。觉得浏览器怎么会有调用电脑上的串口的功能呢。后来朋友找了几个资料给我,说网上有人实现,他看不懂。我看了之后恍然大悟,原来是用 node。如此万能。 node 实现操作串口的模块是一个 serialport 的模块,网上一搜有很多好文,此处记录一下实现过程中遇到的一些问题以及解决方法。 一开始被忽略的问题,我把 node 服务搭在自己的服务器上,后来返回的串口数组全是一堆令我懵逼的数据。后来想起那是 node 读取了我的 Linux 服务器的串口,而不是用户使用的 pc。 由此引出的两个问题:

  1. node 服务必须搭建在用户使用的 pc 上,因此用户使用的电脑必须有 node 环境。
  2. 用户 pc 一般是 windows 系统,node 的模块很多在 Linux 上很容易安装成功,在 Windows 上安装比较困难。

解决第二个问题:在 Windows 上安装 serialport 失败

解决方法:

npm install --global --production windows-build-tools

参考链接1:
参考链接2: 安装好之后就可以安装 serialport 模块了。

解决第一个问题:用户电脑的 node 环境

解决方法:Electron 使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用(官网链接:)(w3c:) 使用 Electron 搭建的桌面应用可以像平常我们使用的 exe 应用程序一样直接运行,不需要搭建环境。

npm install -g electron-prebuilt //提示electron-prebuilt已经更名为electron
npm install -g electron //安装失败

使用淘宝镜像安装问题解决:

cnpm install -g electron

参考链接:

npm install -g electron-rebuild

以后每次重新运行 electron . 的时候再执行一次 ./node_modules/.bin/electron-rebuild 对原生模块进行 rebuild 参考链接:
参考链接:

cnpm install -g electron-packager
electron-packager . 可执行文件的文件名 --win --out 打包成的文件夹名 --arch=x64位还是32位 --version版本号 --overwrite --ignore=node_modules

因为打包的时候执行的命令带有 --ignore=node_modules,即不将 node_modules 里面的依赖包打包,所以在打包后的新文件中,进入 resource 目录会发现 node_modules 是一个空文件夹,所以自然找不到依赖包。如果去掉打包时的命令参数 --ignore=node_modules,则需要非常长的打包时间。我的解决方法是将原来 node_modules 文件夹中的相关的依赖包文件复制进打包后的 node_modules 中,虽然是一个比较无脑的方法,每次打包都要拖动相关文件进去,不过我备份了一个 node_modules 文件夹,下一次打包后就把备份的 node_modules 直接复制进去。 node 模块 ccap: 用于生成验证码图片,可以在 express 后台 res.send(图片),前端的 imgsrc 设置为请求这个接口。 ccap 的用法可以参考链接:

如何调试nodejs

1. 基于 Node.js 内建的调试器

Node.js 提供了一个内建调试器来帮助开发者调试应用程序。想要开启调试器我们需要在代码中加入 debugger 标签,当 Node.js 执行到 debugger 标签时会自动暂停(debugger 标签相当于在代码中开启一个断点)。代码如下:

var path = url.parse(req.url).pathname;
debugger;
res.writeHead(200, {'Content-Type': 'text/plain'});

执行命令:

node debug example.js

就可以进入调试模式。 在 debug 模式下,可以使用内建命令如 repl 去评估变量和表达式的值。我们也可以通过 help 命令来获取完整的调试命令列表。 Commands:

  • run (r)
  • cont (c)
  • next (n)
  • step (s)
  • out (o)
  • backtrace (bt)
  • setBreakpoint (sb)
  • clearBreakpoint (cb)
  • watch
  • unwatch
  • watchers
  • repl
  • restart
  • kill
  • list
  • scripts
  • breakpoints
  • version

2. 基于 V8 插件的调试器

Node.js 是基于 Google V8 的引擎上构建的,Google 为 Eclipse 提供了一个对应的调试插件。关于如何在 Eclipse 中安装和调试 Node.js 程序就不再重复描述了,网上已经有很多的文章了(具体可以参考这篇文章)。唯一要注意的是在默认情况下 V8 引擎支持的调试模式是本地模式。如果想要开启远程调试的话,我们需要修改 Node.js 中的 V8 源文件:/deps/v8/src/platform-posix.cc

addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); // INADDR_ANY
addr.sin_port = htons(port);

然后重新编译 Node.js。 提示: 用插件来调试 nodejs 程序,你有时候会遇到什么 connect refuse, get version failed 等等错误。那么请注意你使用的 ip 的地址,一般下 127.0.0.1 的回环地址是都工作的。如果你使用真实的 ip 地址,请检查防火墙设置。

3. 基于 Chrome 浏览器的调试器

既然我们可以通过 V8 的调试插件来调试,那是否也可以借用 Chrome 浏览器的 JavaScript 调试器来调试呢?node-inspector 模块提供了这样一种可能。我们需要先通过 npm 来安装 node-inspector

npm install -g node-inspector // -g 导入安装路径到环境变量

node-inspector 是通过 websocket 方式来转向 debug 输入输出的。因此,我们在调试前要先启动 node-inspector 来监听 Node.js 的 debug 调试端口。 默认情况下 node-inspector 的端口是 8080,可以通过参数 --web-port=[port] 来设置端口。在启动 node-inspector 之后,我们可以通过 --debug--debug-brk 来启动 nodejs 程序。通过在浏览器输入 http://[ip address]:8080/debug?port=5858,我们会得到如下的调试窗口: 这三种方法各自有优缺点,我个人比较欣赏 node-inspector 的方式。 具体可以参考这个帖子: