遇到的问题是使用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. fabric学习笔记3

    fabric学习笔记3 20201303张奕博 2023.1.11 Hyperledger Fabric架构设计 分布式帐本 区块链核心概念是分布式帐本,就像下面的图1所示,同样的帐本(全量的交易数据 ...

  2. SAP 布局编辑器无法使用问题处理

    因一些事情,公司将正式系统的数据拷贝到了开发机,后来在开发中用到了布局编辑器,发现打不开且会报错RFC callback call rejected by whitelist 这个是因为正式机和开发机 ...

  3. java自定义的异常类

    java自定义的异常类 1.自定义异常类,需要继承 RuntimeException @Datapublic class EmployeeCheckException extends RuntimeE ...

  4. js - class 操作

    js - class 操作 // 添加 function addClass(dom, classNameString = '') { if (!dom.className.length) dom.cl ...

  5. 错题笔记:int a=b=1这样定义为什么是错误的

    C语言中定义同一类型的多个变量必须以逗号分隔.如: int a,b,c ; =在C语言中是赋值运算符,等号左边的变量,必须是已以定义好的变量才可以. int a=b=1 ; 中,若b已经定义,则是正确 ...

  6. 比较有趣的C语言小程序

    1.判断是否是闰年: #include <stdio.h> int main(void) {     int year, a;     printf("Please enter  ...

  7. 第三讲: xpath定位方法

    ​ 如果大家有机会做web自动化测试的工作,在框架搭建好之后,大部分的工作都是在写定位表达式,然而,8大元素定位方法中,id.name.class_name.link_text.partial_lin ...

  8. unity game Developemnt in 24 hours 第1章 untiy

    屏幕有3个主要窗口 , Hierarchy.Project.Insepector ,个人理解Project是类定义,Hierarchy是创建类.实例化类,而Insepector是对类的属性进行管理

  9. JavaScript常见事件记录

    JavaScript常见事件记录 onblur: 元素失去焦点 onfocus: 元素获得焦点 onchange: 用户改变域的内容 onclick: 鼠标点击某个对象 ondblclick: 鼠标双 ...

  10. 3dmax专用卸载修复工具,一键完全彻底卸载删除3dmax软件的专用卸载工具

    标题:3dmax重新安装方法经验总结,利用卸载清理工具完全彻底排查删除干净3dmax各种残留注册表和文件.3dmax显示已安装或者报错出现提示安装未完成某些产品无法安装的问题,怎么完全彻底删除清理干净 ...