8.3 串口读写

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

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

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

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

npm install serialport

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

cnpm install serialport

读取串口步骤:

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

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

var SerialPort = require('serialport')

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

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

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

const cmd = Buffer.from([0x01,0x03,0x00,0x00,0x00,0x02,0xC4,0x0B]);

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

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

serialPort.write(cmd, function (error, result){});

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

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

原文发布于微信公众号 - 传输过程数值模拟学习笔记(SongSimStudio)

原文发表时间:2019-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券