遇到的问题是使用node-red的串口模块向串口发送16进制数据,控制LED灯。

初学者经常想当然的认为只要msg的payload里放上对应的数就行了。其实不是。

Node-red是node.js环境支撑的物联网开发工具。自然需要遵循node.js的要求。node.js是在javascript语言基础上发展的服务器端单线程开发工具。而javascrip最初只是开发前端的工具,不具备服务器端开发的能力。node.js在改进过程中,提供了一个Buffer类,即缓冲区类。提供这个类的目的就是让开发者在使用node.js进行开发时可以操作内存,进而直接操作二进制数据,就突破了javascript只能操作文本的局限,对于类似图片、声音等各种二进制保存的对象就都可以操作了。

Buffer类提供了一系列API来供开发者来创建Buffer实例:

Buffer.alloc(size[,fill[,encoding]]):可以返回一个指定大小的Buffer实例,如果开发者没有指定fill,则默认填满0;

Buffer.allocUnsafe(size):作用同上,但是不进行初始化。也就意味着划拨的区域如果前面有进程使用过,里面可能还放着上一个进程使用过的数据。新的进程如果直接使用,可能产生意外的结果。

Buffer.allocUnsafeSlow(size):此方法不同于Buffer.allocUnsafe()方法。在allocUnsafe()方法中,如果缓冲区大小小于4KB,则它会自动从预分配的缓冲区中切出所需的缓冲区,即不会初始化新的缓冲区。通过不分配许多小的Buffer实例来节省内存。但是,如果开发人员需要在一段时间内保留一定数量的开销内存,则可以使用allocUnsafeSlow()方法。

Buffer.from(array):返回一个呗array的值初始化的新的Buffer实例(传入的array的元素只能是数字,不然就会自动被0覆盖)。

Buffer.from(arrayBuffer[,byteOffset[,length]]):返回一个新建的与给定的ArrayBuffer共享同一内存的Buffer。

更多内容可以参看:https://nodejs.org/api/buffer.html#static-method-bufferfromarraybuffer-byteoffset-length

这里用最简单的一个方式来表达控制LED的方法

var Buffer1=Buffer.from([0x01]);
msg={payload:Buffer1};
return msg;

更多的变化无非是如何调整逻辑。

node.js缓冲区类与node-red向串口发数据的更多相关文章

  1. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  2. node.js入门系列(一)--Node.js简介

    什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...

  3. Node.js的安装以及Node.js的模块管理

    索引: Node.js的安装以及Node.js的模块管理Node.js开发环境搭建以及对ES6的支持Node.js构建Vue.js项目Vue.js单文件组件的开发基于Vue.js的UI组件(Eleme ...

  4. Installing Node.js via package manager | Node.js

    Installing Node.js via package manager | Node.js   i386 (32-bit)

  5. koa 基础(十)原生node.js 在 koa 中获取表单提交的数据

    1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...

  6. Node.js 从零开发 web server博客项目[数据存储]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  7. node.js—Buffer类(二进制数据处理模块)

    Buffer类概述 一个用于更好的操作二进制数据的类 我们在操作文件或者网络数据的时候,其实操作的就是二进制数据流 Node为我们提供了一个更加方便的去操作这种数据流的类 Buffer,他是一个全局的 ...

  8. Node.js权威指南 (3) - Node.js基础知识

    3.1 Node.js中的控制台 / 19 3.1.1 console.log方法 / 19 3.1.2 console.error方法 / 20 3.1.3 console.dir方法 / 21 3 ...

  9. Node.js入门教程:Node.js如何安装配置并部署第一个网站

    前言:作为一个资深的前端开发人员,不懂的Node.js 那你绝对是不能跟别人说你是资深的前端程序猿滴! 今天洋哥就来和大家一起学习被大牛称之为前端必学的技能之一Node! 那么Node到底是什么呢? ...

  10. node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用提高nodejs调试效率

    在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也 总是要不断地重复这几个很烦人的操作.这是因为Node.js ...

随机推荐

  1. maridb数据库表及字段增删改

    mariadb数据类型 mariadb数据类型分为数字.日期.时间以及字符串值. 适用类型原则:够用就行,尽量使用范围小的,而不用大的 常用数据类型: 1.整数 int,bit   #例如 年纪 适用 ...

  2. 利用python中的win32com模块操作Word、Excel文件

    word操作 doc文件转换为docx文件 安装win32com模块:pip3 install pypiwin32 import os from win32com.client import Disp ...

  3. asp.net mvc api swagger 配置

    1.安装插件 Swashbuckle(版本5.6.0) 和 Swagger.Net.UI(版本1.1.0) 2.SwaggerNet类中注释掉一下代码: using System; using Sys ...

  4. 杭电oj 水仙花数

    Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:"水仙花数"是指一个三位数,它的各位数字的立方和等于其本身 ...

  5. 065_VFPage中CallBack回调函数的解释

    关于JS 的回调函数解释: https://blog.csdn.net/baidu_32262373/article/details/54969696 https://www.cnblogs.com/ ...

  6. 20202411 2020-2021-2 《Python程序设计》实验二报告

    20202411 2020-2021-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 2024 姓名: 陈书桓 学号:20202411 实验教师 ...

  7. python机器学习——SVM支持向量机

    背景与原理: 支持向量机是一种用来解决分类问题的算法,其原理大致可理解为:对于所有$n$维的数据点,我们希望能够找到一个$n$维的直线(平面,超平面),使得在这个超平面一侧的点属于同一类,另一侧的点属 ...

  8. ssh连接不上、Xshell意外关闭Socket error Event: 32 Error: 10053.

    Xshell意外关闭可能会出现这种问题,如遇如下错误可解决: Connecting to 47.106.80.28:22- Connection established. To escape to l ...

  9. Vue.js + TypeScript 项目构建

    一:全局安装vue/cli  npm install -g @vue/cli安装完成后检查版本vue --version 二:构建项目创建文件 vue create projectName 有的刚开始 ...

  10. java pta第三次阶段性总结

    一.前言 这是这学期最后一次总结,这三次的pta大作业也是最后一次,这几次大作业主要写了电信计费系统的主要功能,第一次大作业是座机计费功能,第二次大作业是手机计费功能,第三次大作业是短信计费的功能.这 ...