node-red教程6 串口控件的使用

node-red 专栏收录该内容
15 篇文章 40 订阅

6.1 串口控件安装与介绍

  串口控件是一个很有用的控件,它可以通过电脑或树莓派的串口收发数据。由于我们要做一个基于node-red的应用,并不是做一个只运行与电脑的纯软件,所以必然要与一定的硬件产生关联。这些硬件往往可以支持串口,所以,通过串口控件,可以把node-red程序控制的对象从电脑扩展到实际的硬件中,极大提升了node-red的实用性。
  如果有嵌入式的开发经验,那么对于“上位机”这个名词一定不会陌生。把“下位机”采集到的数据通过串口发送给电脑或树莓派,然后用node-red搭建一个上位机真的是很简单的事情。如果没有听说过上位机,也没有关系。假设有这么一个设备,可以定时采集到一些传感器的数据,比如室内的温度,这些数据总得汇报给另外一个设备,以便进行显示和分析。负责显示和分析的设备,就可以是上位机。

6.1.1 串口控件安装

  默认情况下,node-red并不会带有串口控件。我们可以进行手动安装。顺带提一下,node-red共有1000多种各式各样的控件,默认情况只会安装最常用的几十种。所有控件的安装过程都类似。
  点击选项按钮,找到节点管理
这里写图片描述
  切换到“安装”标签内,在输入框内输入serialport,找到node-red-node-serialport,点击安装。
这里写图片描述
这里写图片描述
  安装完成以后,输入控件与输出控件区都会增加一个名为“serial”的控件
这里写图片描述
这里写图片描述

6.1.2 串口控件简介

  串口输入控件说明
    从本地串行端口读取数据
    它可以用以下方式分割字符
    等待“分割”字符(默认\n)。也接受hex表示法(0x0d)。
    等待从第一个字符接收到的毫秒数
    等待填充一个固定大小的缓冲区
    然后输出msg.payload作为UTF8 ascii字符串或二进制Buffer对象。
    Msg.port设置为被选择端口的名字。
    如果没有指定分割字符,或者超时或缓冲区大小为0,那么就会发送单个字符的流——要么作为ascii字符,要么是1位二进制缓冲区。
  串口输出控件说明
    提供到输出串口的连接。
    只发送msg.payload
    可以选择吧用于分割输入的新行字符追加到发送到串口的每条消息。
    二进制的载荷可以使用Buffer对象发送

6.2 使用串口助手与虚拟串口工具

  串口助手软件有很多,推荐使用SSCOM,串口/网络数据调试器,下载地址是
http://www.daxia.com/sscom/sscom5.13.1.rar
  虚拟串口工具可以使用VSPD。由于版权问题,请自行搜索下载地址。该软件可能需要破解,请尽可能支持正版。
串口/网络数据调试器可以把串口收到的数据显示出来,也可以通过串口发送数据,十分直观,可以用与显示串口控件的数据,和给串口控件发送数据。但是,一般来说,同一个串口只允许一个软件占用。例如串口控件占用了COM10(串口2),那么串口/网络数据调试器就不能使用COM10了。如果COM10可以与COM11进行通信,而串口/网络数据调试器使用COM11,那么串口/网络数据调试器就可以与串口控件通信。虚拟串口工具可以把COM10与COM11连接起来,也就是借助虚拟串口工具,可以在不需要任何硬件的情况下,可以用串口/网络数据调试器模拟真实的串口,与串口控件通信。连接情况可以下图说明
这里写图片描述

6.2.1 虚拟串口工具设置

  打开虚拟串口工具,文件名可能是Configure Virtual Serial Port Driver
这里写图片描述
  在Manage ports下,添加端口的地方改为COM10与COM11连接。也可任意填写其它串口号。
这里写图片描述
  完成添加以后左侧的virtual ports显示新添加的串口。注意,两个串口设置为连接以后,即便关闭程序,串口的连接仍然保持,所以建议使用比较大的串口号,其它设备用不到的。如果需要解除连接,可以点击删除端口或是重置端口。
这里写图片描述

6.2.2 串口/网络数据调试器的介绍

  串口/网络数据调试器功能强大,使用方便,基本可以通过自己的摸索学会使用。为了照顾无基础的读者,我这里还是把常用的功能罗列一下,有基础的可以跳过这一小节。
1选择端口号
  可以看到端口号下边已经有了通过虚拟串口工具仿真出来的串口。除了串口以外,还有TCP和UDP的功能。
这里写图片描述
2 波特率与更多串口设置
  波特率代表数据发送的速率(每秒发送多少位数据),发送方与接收方必须保持一致。
这里写图片描述
  有时串口通信还需要配置一些其它参数,如数据位,校验位,控制位等,默认是8个数据位,没有校验位,1个停止位。这种设置简称为8N1。
这里写图片描述
3扩展工具
  SSCOM由于拥有扩展工具,所以十分方便,简直可以作为一个简单的上位机来用。
这里写图片描述
  点击扩展工具以后可以看到一个新的工具栏。可在输入框输入需要发送的信息,双击输入框可以修改注释。可以勾选是否使用hex发送,以及按顺序定时发送。
  此处有作者打的一个广告,如果方便请给作者一点支持。
这里写图片描述
  我们可以根据通信协议来编辑一下扩展按钮。这是我用的情况。
  另外,可能是软件的BUG,修改过配置的软件在另一台电脑上可能打不开。
这里写图片描述

6.3串口控件详细介绍

6.3.1 hello serial

  跟“hello world”类似,,虚拟串口工具与串口助手都设置完毕以后,我们先用一个最简单的程序检验下环境搭建情况如何。首先使用串口助手打开COM11,并设置为“非HEX显示”, “非HEX发送”。
这里写图片描述
  然后在node-red工作区里添加以下几个控件:
这里写图片描述
  设置inject输出文字“hello serial”;
  两个串口控件都设置如下:
这里写图片描述
这里写图片描述
然后连线并部署。
这里写图片描述
  点击inject的输入按钮,可以在串口工具看到“hello serial”。
  在串口工具的输入栏输入“hello node-red”,也可以在node-red的调试窗口看到此信息。
这里写图片描述
  程序如下

[{"id":"cb562972.5a2c68","type":"inject","z":"7903386e.1145c8","name":"","topic":"","payload":"hello serial","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":220,"wires":[["2200b227.8ca95e"]]},{"id":"fcd04751.620598","type":"debug","z":"7903386e.1145c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":390,"y":300,"wires":[]},{"id":"2200b227.8ca95e","type":"serial out","z":"7903386e.1145c8","name":"","serial":"c2dc38d4.dccf18","x":380,"y":220,"wires":[]},{"id":"f6ff26db.07b568","type":"serial in","z":"7903386e.1145c8","name":"","serial":"401ee499.6d790c","x":170,"y":300,"wires":[["fcd04751.620598"]]},{"id":"c2dc38d4.dccf18","type":"serial-port","z":"","serialport":"COM10","serialbaud":"9600","databits":"8","parity":"none","stopbits":"1","newline":"1","bin":"false","out":"time","addchar":true},{"id":"401ee499.6d790c","type":"serial-port","z":"","serialport":"COM10","serialbaud":"9600","databits":"8","parity":"none","stopbits":"1","newline":"1","bin":"false","out":"time","addchar":true}]

6.3.2 收发数组

  工作环境搭建好以后,我们根据《通信协议》来完成一个简单的任务:使用串口助手发送一个40度的温度数据,然后使用node-red回复一条使继电器1工作的数据。
  先在node-red里搭建接收串口数据的流程。我们仍使用“hello serial”里的程序。可以在串口助手中打开扩展,新建一条40度的数据,内容是AA 00 00 08 00 00 00 00 03 03 10 10 10 10 00 FF。
这里写图片描述
  点击发送,发现node-red收到的数据是乱码:
这里写图片描述
  这是因为,串口控件在发送字符时用ASCII码,而发送数字时要用二进制缓存。
这里写图片描述
  由于通信协议的数据都是以0xff结尾,可以把分开字符的方式也修改一下,就可以使用0xff来截断数据。但是这么做有一个弊端,就是正常的数据段中有0xff的话,也会被截断。
这里写图片描述
  然后重新部署并发送数据,就可以在调试窗口中看到正常的数据了。默认是十进制显示,也可以切换为十六进制。
这里写图片描述
  接下来修改node-red里的输入信息。
  可以直接把inject节点的输出改为数组,例如
这里写图片描述
  部署程序,点击发送按钮,并在串口数据里勾选hex显示,可以看到如下现象。
这里写图片描述
  当然,这种用法的缺点也很明显:在inject节点里没有办法输入十六进制的数字,只能把十六进制的数换算为十进制,再填写到inject的输入框。
  可以使用函数节点来新建一个数组,数组中填写十六进制的数。代码如下:

var temp= new Buffer([0xaa,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x13,0x06,0x01,0x00,0x00,0x00,0x00,0xff]);
msg.payload = temp;
return msg;

这里写图片描述

  程序保存如下:

[{"id":"cb562972.5a2c68","type":"inject","z":"7903386e.1145c8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":180,"y":220,"wires":[["7393ad68.b80b24"]]},{"id":"fcd04751.620598","type":"debug","z":"7903386e.1145c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":390,"y":300,"wires":[]},{"id":"2200b227.8ca95e","type":"serial out","z":"7903386e.1145c8","name":"","serial":"c2dc38d4.dccf18","x":380,"y":220,"wires":[]},{"id":"f6ff26db.07b568","type":"serial in","z":"7903386e.1145c8","name":"","serial":"401ee499.6d790c","x":170,"y":300,"wires":[["fcd04751.620598"]]},{"id":"7393ad68.b80b24","type":"function","z":"7903386e.1145c8","name":"新建数组","func":"var temp= new Buffer([0xaa,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x13,0x06,0x01,0x00,0x00,0x00,0x00,0xff]);\nmsg.payload = temp;\nreturn msg;","outputs":1,"noerr":0,"x":280,"y":140,"wires":[["2200b227.8ca95e"]]},{"id":"c2dc38d4.dccf18","type":"serial-port","z":"","serialport":"COM10","serialbaud":"9600","databits":"8","parity":"none","stopbits":"1","newline":"0xff","bin":"bin","out":"count","addchar":true},{"id":"401ee499.6d790c","type":"serial-port","z":"","serialport":"COM10","serialbaud":"9600","databits":"8","parity":"none","stopbits":"1","newline":"0xff","bin":"bin","out":"char","addchar":true}]
  • 11
    点赞
  • 0
    评论
  • 28
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
<p> <span style="color:#313d54;font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;font-size:16px;background-color:#ffffff;">Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备中都安装了Node-RED,表明它在工业物联网和控制中已经广泛应用了。</span> </p> <p> <img src="https://img-bss.csdnimg.cn/202010200935441926.png" alt="" width="1316" height="524" /> </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;">   </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;">   </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网小平台,给大家带来更好的学习效果。 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> <img src="https://img-bss.csdnimg.cn/202010200936289051.png" alt="" width="1841" height="948" /> </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> <img src="https://img-bss.csdnimg.cn/202010200936561564.png" alt="" width="1920" height="977" /> </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;">   </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;">   </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开: </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED入门 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED安装与配置 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED教学实战 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED的优势与不足 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED能为我们带来什么 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED总结与展望 </p>
<p> 本课程通过一步步的实践演示,带领大家在开源项目的基础上,搭建随心所欲的物联网与智能家居平台。在过程实践中,大家会学习与应用到linux、python、云服务、图像识别、智能语音、单片机、数据库、前端开发等多方面的知识,帮助大家成为IT的全栈工程师。以实战为导向结合物联网各类知识要点学习经典框架进行项目实战,快速掌握智能家居、家庭自动化、物联网等必备基础与实战技巧。带你从零玩转智能家居,了解物联网的整体格局,将零散的知识点通过项目快速串联提升自身成就感 </p> <p> 【更新规则】<br />  视频与参考文档内容,随时更新,与最新的软件版本/云服务环境匹配。 </p> <p> <br /> </p> <p> 【课程特色】<br /> 1.通俗易懂,快速入门<br /> 对物联网、智能家居学习经典实践项目结合技术推导进行形象解释,实例演示。<br /> 2. Python主导,实用高效<br /> 使用物联网领域最主流语言Python及其homeassistant 开源家庭自动化框架作为课程核心工具。<br /> 3. 案例为师,实战护航<br /> 基于真实操作展示,从零开始结合homeassistant与python自创组件、树莓派或者nas完成整个案例实战。<br /> 4. 持续更新,一劳永逸<br /> 会伴随homeassistant的更新与DIY实战项目课程会支持更新下去,逐步加入更多算法与案例。 </p> <p> <br /> </p> <p> 【联系我们】<br /> 官方网站:https://www.hachina.io<br /> QQ学习讨论群(仅限学员加入):741140729 </p> <p> <img src="https://img-bss.csdn.net/201907040403375571.jpg" alt="" /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页

打赏

yummy说电子

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值