前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs 串口读写

nodejs 串口读写

作者头像
周星星9527
发布2021-09-09 16:21:58
3.7K0
发布2021-09-09 16:21:58
举报

何谓串口?串口就是一个计算机接口,用于数据通信,例如计算机。老一点的PC和笔记本都有串口,工控机一般配置有串口,如果没有可以到淘宝上买USB-串口转换器。

串口能做什么?串口用于数据通信,例如可以通过计算机读取与计算机通过串口连接的温度传感器值。

为什么讲串口读写?有时候购置设备只提供了串口和通信协议,如果为了省钱就可以自行编程实现串口数据读取。

使用javascript读取串口,需要用到第三方serialport包,使用npm命令安装,例如下命令:

代码语言:javascript
复制
npm install serialport

如果很慢,请尝试如下,cnpm命令的安装配置请参考2.5节

代码语言:javascript
复制
cnpm install serialport

读取串口步骤:

  • 检查物理硬件连接;
  • 要打开串口(程序上的打开,非物理操作);
  • 给下位机发送命令,令其发送数据到计算机串口;
  • 守株待兔等待下位机上传数据,如上传到串口,则读取出来。

例如,先获取串口包,node里的require类似C语言的include,C#里的using,java/python里的import。Talk is cheap, show me the code:

代码语言:javascript
复制
var SerialPort = require('serialport')

接下来是关键,屛住呼吸,打开串口:

代码语言:javascript
复制
ar serialPort = new SerialPort('COM1', {
    //串口号到电脑设备管理器中查看,波特率取决于下位机设置
    baudRate : 9600,
    autoOpen:false
})

假设读取设备的命令如下:

代码语言:javascript
复制
const cmd = Buffer.from([0x01,0x03,0x00,0x00,0x00,0x02,0xC4,0x0B]);

不要小瞧这一串数据命令,门道比较多,涉及到通信协议。只有特定的命令下位机才会应答,该措施可以忽略信号干扰,也便于下位机的巡检。另外命令最后两个字节是前面6位数据的CRC校验,如下位机CRC校验不通过,则忽略该命令。

那如何向串口发送命令呢?其实就是写串口操作,代码如下:

代码语言:javascript
复制
serialPort.write(cmd, function (error, result){});

那怎么知道串口有数据,可以读取呢?我们需要监听串口,见证奇迹,数据读取到了:

代码语言:javascript
复制
serialPort.on('data',function (data) {
    console.log('data received: ',data);//data就是你要读取的数据
}

难道我只读取1次就Game Over了?不不不,你可以每1s读一次,setInterval了解下啊。

一次读取一堆数据,难道我拿个记事本不断手动记录数据吗?你可以存储到数据库,甚至可以实时显示。

周星星好友达文西的“太阳能手电筒”在有光的情况下会亮,没有光就不能亮。那是不是我电脑没有串口硬件,就不能做串口编程了呢?非也,Eltima Virtual Serial Port Driver虚拟串口(提供45天免费试用)了解下,创建虚拟串口,就可以愉快的编程操作串口了。

虚拟串口解决了,那没有下位机怎么办?下载个免费的串口调试助手吧,很有用的,结合VSPD虚拟串口,就可以模拟你的电脑/笔记本连接了一个下位机,网络很多站点提供下载。



更多更专业的讲解,可以参考:https://blog.csdn.net/u012612399/article/details/80421730

没有编译,没有链接、缪缪数行javascript代码就能读取串口了!这难免会让C/C++的开发者看到会很羡慕很嫉妒,比如我。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 传输过程数值模拟学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档