node.js缓冲区类与node-red向串口发数据
遇到的问题是使用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向串口发数据的更多相关文章
- node.js系列笔记之node.js初识《一》
node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...
- node.js入门系列(一)--Node.js简介
什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...
- Node.js的安装以及Node.js的模块管理
索引: Node.js的安装以及Node.js的模块管理Node.js开发环境搭建以及对ES6的支持Node.js构建Vue.js项目Vue.js单文件组件的开发基于Vue.js的UI组件(Eleme ...
- Installing Node.js via package manager | Node.js
Installing Node.js via package manager | Node.js i386 (32-bit)
- koa 基础(十)原生node.js 在 koa 中获取表单提交的数据
1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...
- Node.js 从零开发 web server博客项目[数据存储]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- node.js—Buffer类(二进制数据处理模块)
Buffer类概述 一个用于更好的操作二进制数据的类 我们在操作文件或者网络数据的时候,其实操作的就是二进制数据流 Node为我们提供了一个更加方便的去操作这种数据流的类 Buffer,他是一个全局的 ...
- 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 ...
- Node.js入门教程:Node.js如何安装配置并部署第一个网站
前言:作为一个资深的前端开发人员,不懂的Node.js 那你绝对是不能跟别人说你是资深的前端程序猿滴! 今天洋哥就来和大家一起学习被大牛称之为前端必学的技能之一Node! 那么Node到底是什么呢? ...
- node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用提高nodejs调试效率
在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也 总是要不断地重复这几个很烦人的操作.这是因为Node.js ...
随机推荐
- 2019-2020-1 20199318《Linux内核原理与分析》第九周作业
第8章 进程的切换和系统的一般执行过程 一.学习总结 Linux系统的一般执行过程: 最一般的情况:正在运行的用户态进程X切换到运行用户态进程Y的过程. (1)正在运行的用户态进程X; (2)发生中断 ...
- 准备工作——安装python和开发工具
1.安装python 官网(https://www.python.org/downloads/)下载,按步骤安装,注意点击环境变量设置. 网上很多安装步骤详解. 2.或者直接安装anaconda,集成 ...
- ES语法(简)
1.上编写到怎样安装部署elk,这篇记录怎样简单使用.以便于后期复习使用. 2.登录localhost:5601进入开发者模式. 3.初学担心没有数据可以自己PUT数据比较直观的学习语法.这里可以用网 ...
- spider_使用request库进行get传参
"""使用requests库 在这里爬取百度搜索的端午节页面(使用request库进行get传参)"""import requestsimp ...
- 转载--文章(感谢陈晨博主分享) 关于 Json.net
本文出自地址: http://www.cnblogs.com/freshman0216/p/4161800.html#undefined Newtonsoft.Json,一款.NET中开源的Json序 ...
- Jmeter的简单配置和使用
对于测试大佬来说,最常见的压测工具莫过于Apache旗下的 JMeter . 那么测试大佬经常使用,对于我们后端开发者来说,也是属于必备的一个技能. 接下来咱们就一起简单的配置一下烫手的jmeter ...
- Html5本地存储概念,有什么优点,与cookie有什么区别?
html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有 ...
- mumu模拟器pin码忘记,如何找回
1.进入mumu安装目录:D:\Program Files (x86)\MuMu\emulator\nemu\vmonitor\bin 2.通过cmd进入mumu的bin目录,输入命令:adb_ser ...
- react和vue的区别及优缺点
区别: vue是双向绑定的,采用template: react是单向的,采用jsx. Vue的优缺点: 简单.快速.强大.对模块友好,但不支持IE8. React的优缺点: 速度快.跨浏览器兼容.模块 ...
- vue项目中axios跨域设置
最近项目中遇到一个问题,测试环境和线上环境需要调同一个接口(接口地址是线上的),本地开发的时候遇到了跨域的问题,刚开始用了fetch解决的,代码如下 方法一 step1:安装包node-fetch,然 ...