版本号:Serialport@5.0.0-beta3

本文链接

想象一个世界,你可以在那写javascript来控制搅拌机,灯,安全系统或者甚至是机器人。是的,我说的是机器人。那个世界就是这儿,现在使用node serialport。它提供一个非常简单的接口所需要的串口程序代码Arduino 单片机, X10 无线通信模块, 或者甚至是上升到 Z-Wave 和Zigbee . 在这个物理世界,你可以随心所欲(The physical world is your oyster with this goodie.)。想完全了解为什么我们做这个,请阅读NodeBots - The Rise of JS Robotics.

为了入门node-serialport,我们建议你从下列文章开始:

Johnny-Five - Johnny-Five 机器人技术和物联网平台的六行“helloworld”(太棒了).

NodeBots - The Rise of JS Robotics - 一篇调查文章关于为什么一个世界需要在js里编写机器人程序以及如何开始。

平台支持

serialport支持NodeJS v4 以及更高版本。0.10和0.12版本使用serialport@4。serialport支持的平台,体系架构和nodejs版本可以查看下列表格信息。

平台/架构

Node v4.x

Node v6.x

Node v7.x

Linux / ia32

Linux / x64

Linux / ARM v6¹

Linux / ARM v7¹

Linux / ARM v8¹

Linux / MIPSel¹

Linux / PPC64¹

Windows² / x86

Windows² / x64

OSX³ / x64

¹ ARM, MIPSel and PPC64¹ 平台已知可以运行但是不属于我们的测试范围或者构建矩阵。 #846 ARM v4 and v5 在 Node v0.10版本之后从Nodejs中取消.

² Windows 7, 8, 10, and 10 IoT 是支持的但是只有Windows Server 2012 R2 是由我们测试的.

³ OSX 10.4 Tiger 以及更高版本是支持的 但是只有 10.9.5 Mavericks 和 Xcode 6.1 是由我们测试的.

安装说明

对于大多数“标准”使用案例(在mac,linux,windows x86或者x64上node V4.x),node-serialport将会很好以及很容易的安装。

npm install serialport

安装的平台环境

我们使用node-pre-gyp来编译以及公布大多数常见使用平台(linux,mac,windows在标准的处理器平台)的二进制库。如果你是特别的平台,node-serialport将会工作,但是当你安装的时候它将会编译二进制文件。

这假定你有必要让你可以在自己系统中编译一些nodejs模块。这个或许并非如此,可是,请确认下列对于你系统是正确的,在你提出关于“无法安装”的issue之前。对于所有操作系统,请确认你有安装了Python 2.x 以及不是3.0,node-gyp(你用来编译的工具)需要Python 2.x。

Alpine Linux

Alpine 是一个(非常)小的linux开发版系统, 但是它使用组织标准库来代替函数库 (大多数开发版linux系统使用的), 所以他需要编译。 它通常使用Docker.我们已经编译了可以工作的 apline-node.

# 如果你没有安装node/npn,先添加它们

sudo apk add --no-cache nodejs

# 添加必要的构建库和运行依赖

sudo apk add --no-cache make gcc g++ python linux-headers udev

# 然后我们就能安装 serialport, 强制它编译

npm install serialport --build-from-source

# 如果你使用root来安装,你需要使用

Electron

Electron是一个框架用来创建跨平台桌面程序。Electron自带他自己的Node.js运行版本

如果你需要serialport作为一个Electron项目的依赖,你需要为你用在项目里的Electron项目编译它。

当你第一次安装serialport,它会编译针对你机器的Node.js版本的serialport,而不是针对Electron捆绑的Node.js运行版本。

再次为Electron编译serialport(或者一个本地模块),你可以使用electron-rebuild.

1.npm install --save-dev electron-rebuild

2.将electron-rebuild加入到你项目中的package.json的安装钩子。

3.运行npm install

更多关于electron-rebuild的信息访问README.

非法指令

假定一个完全有能力的芯片预编译的二进制文件。例如Galileo2缺乏一些ia32指令集架构。一些其他平台有相似的问题。所以当你试图运行serialport时,如果你得到非法指令,你将需要重新构建serialport二进制文件通过告知npm去重新构建它。

#告知npm构建serialport在安装的时间内

npm install serialport --build-from-source

#如果你有一个依赖serialport的包,你可以告知npm去特别重新构建它。

npm rebuild serialport --build-from-source

#或者除去包名,重新构建所有

npm rebuild --build-from-source

Mac OS X

确定你有是在最低的xCode命令行工具里安装适用你系统的配置。如果你最近更新了系统,可能会移除你安装的命令行工具,请在提交问题前仔细查证。你需要使用g++ v4.8或者更高版本来编译Node.js 4.x+的node-serialport。

Raspberry Pi Linux

下列是关于使用Johnny-Five和Raspi IO设置树莓派的说明。这些项目使用Node Serialport。

Revision

CPU

Arm Version

A, A+, B, B+

32-bit ARM1176JZF-S

ARMv6

Compute Module

32-bit ARM1176JZF-S

ARMv6

Zero

32-bit ARM1176JZF-S

ARMv6

B2

32-bit ARM Cortex-A7

ARMv7

B3

32-bit ARM Cortex-A53

ARMv8

sudo / root

如果你准备使用sudo或者root权限去安装node Serialport,npm需要你使用不安全的参数标志。这个需求一般很少需要。

sudo npm install serialport --unsafe-perm --build-form-source

使用标志失败导致类似的错误如下;

root@rpi3:~# npm install -g serialport

/usr/bin/serialport-list -> /usr/lib/node_modules/serialport/bin/serialport-list.js

/usr/bin/serialport-term -> /usr/lib/node_modules/serialport/bin/serialport-terminal.js

> serialport@4.0.3 install /usr/lib/node_modules/serialport

> node-pre-gyp install --fallback-to-build

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/6.9.1"

gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/lib/node_modules/serialport/.node-gyp"

make: Entering directory '/usr/lib/node_modules/serialport/build'

make: *** No rule to make target '../.node-gyp/6.9.1/include/node/common.gypi', needed by 'Makefile'. Stop.

make: Leaving directory '/usr/lib/node_modules/serialport/build'

gyp ERR! build error

gyp ERR! stack Error: `make` failed with exit code: 2

Ubuntu/Debian Linux

最好的方式来安装任何版本的NodeJS是使用NodeSource Node.js Binary Distributions.旧版本的Ubuntu安装错误的nodejs版本和二进制名称。如果你node二进制文件是nodejs不是node或者如果你的nodejs版本是v0.10.29 ,那么你应该根据以下这个说明来操作。

build-essential包是编译serialport必要的包。如果那儿有一个你不需要的你平台的二进制文件,请继续!

#Using Ubuntu and node 6

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -

sudo apt-get install -y nodejs

#Using Debian and node 6,使用root权限

curl -sL https://deb.nodesource.com/setup_7.x | bash -

apt-get install -y nodejs

Windows

Windows 7,Windows 8.1,Windows 10和Windows 10 IoT是支持的。预编译二进制文件是可用的,但是如果你想要从源码构建它的话,你需要查看node-gyp 的安装的说明。一旦这些都完成了并且可以工作了你将能从源码来安装serialport。

npm install serialport --build-from-source

这不是node-gyp说明的一部分,但是有些时候它会帮助你,如果你在visual studio创建了一个c++项目,它将会安装那些在两个小时安装visual studio过程中不能安装的必要的组件,而你只能坐在那儿。这个将解决一些Failed to locate:"CL.exe"的实例。

协议

SerialPort 使用的是MIT协议以及它所有的依赖关系都是遵循MIT或者BSD协议。

使用

打开一个串口:

var SerialPort = require('serialport');

var port = new SerialPort('/dev/tty-usbserial1',{

baudRate: 57600

});

当打开一个串口,你可以指定(按这个顺序)

1.串口的路径 - 需要

2.选项 - 可选的,下面会描述

打开一个串口

构造一个SerialPort项目将会立即打开一个串口。当你可以在任何时候能读出和写入(它会在打开的串口中排列),大多数串口函数要求一个开启的串口。当串口是打开的时候,你可以使用以下三个方式调用代码。

open事件经常会触发当串口打开的时候。 当autoOpen选项没有失效的时候,构造函数的 openCallback

被传递给.open()。如果你已经将它关闭,callback回调会被忽视。

.open()函数需要一个在串口打开后的回调。如果你关闭了autoOpen选项或者已经关闭了串口,这个就可以被使用。

var SerialPort = require('serialport');

var port = new SerialPort('/dev/tty-usbserial1');

port.on('open',function(){

port.write('main screen turn on ',function(err){

if(err){

return console.log('Error on write: ' ,err.message);

}

console.log('message written');

});

});

//打开错误将会发出一个错误事件

port.on('error',function(err){

console.log('Error: ',err.message);

});

这个可以被移动到构造函数的回调

var SerialPort = require('serialport');

var port = new SerialPort('/dev/tty-usbserial1',function(err){

if(err){

return console.log('Error:',err.message);

}

port.write('main screen turn on',function(err){

if(err){

return console.log('Error on write: ',err.message);

}

console.log('message written');

});

});

当关闭autoOpen选项,你将要自己打开串口。

var SerialPort = require('serialport');

var port = new SerialPort('/dev/tty-usbserial1',{autoOpen:false});

port.open(function(err){

if(err){

return console.log('Error opening port: ',err.message);

}

//写入失败将会被串口发出由于没有写回调。

port.write('main screen turn on');

});

//开启事件总是会被发出

port.on('open',function(){

//打开的逻辑

});

你可以从下列串口更新新的数据

port.on('data',function(data){

console.log('Data: '+data);

});

你可以通过发送一个字符串或者缓冲给写入方法来向串口写入数据。像下列一样:

port.write('Hi Mon!');

port.write(new Buffer('Hi Mom!'));

享受以及使用这些代码做一些酷的事情吧!

调试

我们使用debug 包以及记录下serialport的命名空间。我们的日志;

serialport:main对于所有高等级的主要日志

serialport:binding 对于所有低级的日志

你可以通过环境变量来应用日志。检查debug文档给更多的信息。

DEBUG=serialport:main node myapp.js

DEBUG=serialport:* node myapp.js

DEBUG=* node myapp.js

错误处理

所有函数在SerialPort的两个约定。

参数错误抛出一个TypeError对象。当这些函数被叫做无效参数时,你将会看见这些。

如果没有回调被提供,运行时错误提供Error对象给函数回调或者发出一个error event。你将会看到这些当一个运行错误发生,比如试图开启一个错误的串口,或者设置一个不支持的波特率。

如果你调用正确参数的函数,它应该不需要在一个try/catch结构中包括一个SerialPort对象

SerialPort ⏏

Kind: 输出类

Kind: Exported class

Emits: open, data, close, error, disconnect

Properties

Name

Type

Description

baudRate

number

串口的波特率,使用.update来改变它。只读

binding

object

支持串口的绑定对象,只读.

isOpen

boolean

如果串口打开时为true ,其他情况是 false.只读. (since 5.0.0)

path

string

串口的系统路径或者名称. 只读.

new SerialPort(path,[options],[openCallback])

为path创建一个新的串口对象.用无效的参数或者无效的选项构造一个新的串口时,会抛出错误。串口将默认自动打开,其次这相当于调用port.open(openCallback)。这个可以被关闭,通过设置autoOpen选项为false。

Throws:

TypeError 当提供无效参数时, 将会抛出TypeError。

参数

类型

描述

path

string

串口打开的系统路径.例如, 在Mac/Linux上/dev/tty.XXX 或者 Windows上的 COM1 .

[options]

openOptions

串口配置选项

[openCallback]

errorCallback

当连接已经打开. 如果它没有提供以及由错误发生,它将会发出串口error事件。如果在openOptions中autoOpen被设置为false,回调将不会调用

serialPort.open([callback])

打开一个连接到串口

Kind:实例方法 SerialPort

Emits:open

参数

类型

描述

[callback]

errorCallback

当连接已经被打开. 如果它没有被提供以及有一个错误发生, 它将在串口上被发出error事件``.

serialPort.update([options],[callback])

改变打开的串口的波特率。抛出异常如果你提供了一个错误的参数。当波特率不支持事,会抛出错误或者产生回调。

Kind: instance method of SerialPort

参数

类型

描述

[options]

object

目前只有波特率是支持的

[options.baudRate]

number

设置波特率的串口是打开的。这应该匹配常见的波特率之一, 比如 110, 300, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200. 当然不能担保, 串口连接的设备将支持请求的波特率,只要串口自己支持那个波特率.

[callback]

errorCallback

当波特率被改变的时候. 如果 .update 被调用而没有回调以及有一个错误,错误事件将会被触发。

serialPort.write(data,[encoding],[callback])⇒ boolean

向给定的串口写入数据。如果端口没有打开,会缓存写入数据。

写入操作是无阻塞的。当它返回时,数据或许还没有被写入串口。看drain()

一些设备,比如当你打开一个连接到Arduino时,它会重启。在这种情况下,如果你立刻向设备写入,它们将不能接收到数据。这经常在Arduino发送“ready”字节后工作,你的node程序会在写入前等待。你也可以侥幸认为等待大概400ms.

尽管串口是一个流,但当写入它可以接受的字节数组除了字符串和缓存时,这个格外的功能非常有用。

Kind: 实例方法 SerialPort

Returns: boolean - 如果流渴望在继续写入其他数据之前调用代码等待被触发的drain事件,就是false; 其他情况是 true.

Since: 5.0.0

参数

类型

描述

data

string

array

buffer

接收一个 Buffer 对象, 或者一个接受buffer构造函数的类型 (除了字节数组或者一个字符串).

[encoding]

string

编码, 如果数据块是一个字符串. 默认的是 'utf8'. 也接受 'ascii', 'base64', 'binary', 'hex' 查看 Buffers and Character Encodings了解所有可用的选项.

[callback]

function

第一次写入操作结束.数据可能还没有刷新到底层端口,没有参数.

serialPort.read([size]) ⇒ string | Buffer | null

从串口请求一个字节数.read()方法从内存缓冲区拉取一些数据然后返回它。如果没有可用数据被读取,会返回null。默认的,数据将会被返回成一个缓存对象,除非一个编码已经指明使用了.setEncoding()方法。

Kind: 实例方法 SerialPort

Returns: string | Buffer | null - 内存缓冲区数据

Since: 5.0.0

参数

类型

描述

[size]

number

指明了会返回多少字节的数据如果是可用的话。

serialPort.close(callback)

关闭开启的连接

Kind: 实例方法 SerialPort

Emits: close

参数

类型

描述

callback

errorCallback

当连接被关闭.

serialPort.set([options], [callback])

在打开的串口上设置控制标志. Uses SetCommMask for windows and ioctl for mac and linux.

Kind:实例方法 SerialPort

Since: 5.0.0

参数

类型

默认值

描述

[options]

object

所有选项是操作系统默认的当串口被打开. 每个标志被设置为相同的调用提供或者是默认数据.如果选项没有提供将要使用的默认选项.

[options.brk]

Boolean

false

[options.cts]

Boolean

false

[options.dsr]

Boolean

false

[options.dtr]

Boolean

true

[options.rts]

Boolean

true

[callback]

errorCallback

当串口标志被设置.

serialPort.get([callback])

返回控制标志 (CTS, DSR, DCD)在开启的串口上.

使用GetCommModemStatus for windows and ioctl for mac and linux.

Kind: 实例方法 SerialPort

参数

类型

描述

[callback]

Called once the modem bits have been retrieved(当比特被恢复)

serialPort.flush([callback])

刷新收到的丢弃的数据,但是不读出和写入,也不传输。. 更多的详细技术请看 tcflush(fd, TCIFLUSH) for Mac/Linux and FlushFileBuffers for Windows.

Kind: 实例方法 SerialPort

参数

类型

描述

[callback]

errorCallback

当刷新操作完成.

serialPort.drain([callback])

等待直到所有发出的数据被传输到串口。 查看 tcdrain() or FlushFileBuffers() 了解更多信息。

Kind: 实例方法 SerialPort

参数

类型

描述

[callback]

errorCallback

当耗尽操作返回

Example

写入 data 以及等待直到在调用回调之前,结束对目标串口的传输。

function writeAndDrain (data, callback) {

sp.write(data, function () {

sp.drain(callback);

});

}

serialPort.pause() ⇒

pause()方法会导致一个流的流动模式停止触发'data'事件,切换的流动模式. 任何可用的数据将仍然存放在内存缓存区。

Kind: 实例方法SerialPort

Returns: this

See: module:serialport#resume

Since: 5.0.0

serialPort.resume() ⇒

resume()会导致一个明确的暂停可读的流,来恢复触发的‘data'事件,切换流到流模式

Kind: 实例方法 SerialPort

Returns: this

See: module:serialport#pause

Since: 5.0.0

Event: "error"

无论何时这有一个错误就会回调error 事件。

Kind: 事件由此触发 SerialPort

Event: "open"

当串口打开以及准备进行写入时,open 事件将会无参回调。 如果碰巧如果你有构造函数立即打开或者如果你通过open()手动打开串口。查看 Useage/Opening a Port 了解更多信息.

Kind: 事件由此触发 SerialPort

Event: "data"

data 事件输出字符串到串口在流动模式中. 一旦被接受到,数据就会被发出。 数据将会是一个缓存对象,很多不同的数据量在其中.readLine解析器将数据转换成字符串.查看 parsers部分了解关于解析器的更多信息以及 NodeJS stream documentation 了解更多关于数据事件的信息.

Kind: 事件由此触发 SerialPort

Event: "disconnect"

disconnect 事件回调会调用一个错误对象. 这个经常发生在 close 事件之前如果断开连接被发现。

Kind: 事件由此触发SerialPort

Event: "close"

close事件是无参回调当串口被关闭时. 当一个错误发生,错误事件将被触发。

Kind: 事件由此触发 SerialPort

SerialPort.Binding : BaseBinding

Binding是node Serialport底层的系统. 默认的我们自动检测 windows, Linux 和 OSX系统 以及为你系统加载合适的模块. 你可以指定 SerialPort.Binding 去绑定任何你喜欢的后台. 你可以搜索更多信息从 npm.

你也可以禁止自动后台加载,通过一下代码实现

var SerialPort = require('serialport/lib/serialport');

SerialPort.Binding = MyBindingClass;

Kind: 静态性能SerialPort

Since: 5.0.0

SerialPort.parsers : object

默认的分析程序是Transform streams 可以用各种各样的方式来解析数据,可以被使用来处理传入的数据。

使用各种解析程序你都需要创建他们然后输送SerialPort到解析程序。千万别编写解析程序,而是编写SerialPort对象。

Kind: 静态特性SerialPort

Since: 5.0.0

Properties

名称

状态

描述

ByteLength

Class

发出数据的转换流作为缓存,在收到一个特定的字节数后

Delimiter

Class

发出数据的转换流,每次接受一个字节序列

Readline

Class

发出数据的转换流,在收到一个换行符之后

例子

var SerialPort = require('serialport');

var Readline = SerialPort.parsers.Readline;

var port = new SerialPort('/dev/tty-usbserial1');

var parser = new Readline();

port.pipe(parser);

parser.on('data', console.log);

port.write('ROBOT PLEASE RESPOND\n');

// 可以缩短创建的解析程序和传输管道

var parser = port.pipe(new Readline());

使用字节长度解析器,你必须提供字节数的长度:

var SerialPort = require('serialport');

var ByteLength = SerialPort.parsers.ByteLength

var port = new SerialPort('/dev/tty-usbserial1');

var parser = port.pipe(new ByteLength({length: 8}));

parser.on('data', console.log);

使用分隔符解析器你必须指明分隔符,你必须在一个字符串、缓存或者一个字节数组中提供一个分隔符:

var SerialPort = require('serialport');

var Delimiter = SerialPort.parsers.Delimiter;

var port = new SerialPort('/dev/tty-usbserial1');

var parser = port.pipe(new Delimiter({delimiter: new Buffer('EOL')}));

parser.on('data', console.log);

使用换行符解析器,你必须提供一个分隔符 (默认是 '\n')

var SerialPort = require('serialport');

var Readline = SerialPort.parsers.Readline;

var port = new SerialPort('/dev/tty-usbserial1');

var parser = port.pipe(Readline({delimiter: '\r\n'}));

parser.on('data', console.log);

SerialPort.list(callback) : function

从元数据中找回可用的串口列表. 只有“串口名”是可用的,所有其他的字段如果它们不可用,将会无意义。 串口名 也是一个路径或者一个标识符(例如 COM1)用来打开串口.

Kind: 静态方法 SerialPort

参数

类型

callback

listCallback

例子

// 示例的串口信息

{

comName: '/dev/cu.usbmodem1421',

manufacturer: 'Arduino (www.arduino.cc)',

serialNumber: '757533138333964011C1',

pnpId: undefined,

locationId: '0x14200000',

vendorId: '0x2341',

productId: '0x0043'

}

var SerialPort = require('serialport');

SerialPort.list(function (err, ports) {

ports.forEach(function(port) {

console.log(port.comName);

console.log(port.pnpId);

console.log(port.manufacturer);

});

});

SerialPort~BaseBinding

你永远不能直接使用Binding对象,因为它们通过SerialPort来接触底层硬件. 这个文档是针对绑定不同平台的用户.这个类能被继承来为每个方法进行类型检查.

Kind: 内部类 SerialPort

Since: 5.0.0

Properties

名称

类型

描述

isOpen

boolean

必须的属性. 串口打开就是true , 其他的是false.只读.

~BaseBinding

instance

.close() ⇒ Promise

.read(data, length) ⇒ Promise

.write(data) ⇒ Promise

.update([options]) ⇒ Promise

.set([options]) ⇒ Promise

.get() ⇒ Promise

.flush() ⇒ Promise

.drain() ⇒ Promise

static

.list() ⇒ Promise

new BaseBinding(options)

Throws:

TypeError 当给定一个无效的参数,将会抛出TypeError错误.

参数

类型

描述

options

object

options.disconnect

function

当binding被检测到一个没连接的串口,方法将会被调用. 这个方法应该在所有操作期间调用,而不是在操作正常回调后调用。SerialPort 将试图调用 close在断开连接后,以及会忽视所有错误.

baseBinding.open(path, openOptions) ⇒ Promise

通过路径打开一个引用的串口连接

Kind: 实例方法BaseBinding

Returns: Promise - 在串口打开和配置好后返回解决.

Throws:

TypeError 当给定一个无效的参数,将会抛出TypeError错误.

参数

类型

path

string

openOptions

openOptions

baseBinding.close() ⇒ Promise

关闭一个串口连接

Kind: 实例方法 BaseBinding

Returns: Promise - 一旦串口被关闭返回解决.

Throws:

TypeError 当给定一个无效的参数,将会抛出TypeError错误.

baseBinding.read(data, length) ⇒ Promise

从SerialPort请求一个字节数。这个方法和node的 fs.read相似.

Kind: 实例方法 BaseBinding

Returns: Promise -在阅读操作结束之后返回读取的字节数.

Throws:

TypeError当给定一个无效的参数,将会抛出TypeError错误.

Params: integer 偏移 - 在缓存区偏移处开始写入.

参数

类型

描述

data

buffer

length

integer

读取指定的最大字节数

baseBinding.write(data) ⇒ Promise

向SerialPort写入一个字节数,这将只能在没有等待写入的操作时被调用.

Kind: 实例方法 BaseBinding

Returns: Promise - 在数据传递给操作系统编写后返回.

Throws:

TypeError 当给定一个无效的参数,将会抛出TypeError错误.

参数

类型

描述

data

buffer

baseBinding.update([options]) ⇒ Promise

改变开启的串口的连接设置。当前只能设置波特率。

Kind: 实例方法 BaseBinding

Returns: Promise - 当串口波特率被改变后返回.

Throws:

TypeError 当给定一个无效的参数,将会抛出TypeError错误.

参数

类型

描述

[options]

object

目前只有波特率支持

[options.baudRate]

number

如果通过bingdings提供一个不支持的波特率,它将回调一个错误。

baseBinding.set([options]) ⇒ Promise

设置一个打开的串口的控制标志。

Kind: 实例方法BaseBinding

Returns: Promise - 在串口的标识被设置后返回.

Throws:

TypeError 当给定一个无效的参数,将会抛出TypeError错误.

参数

类型

默认

描述

[options]

object

当串口被打开时,所有设置都是操作系统的默认设置. 每个标识都被设置成每次调用时提供的或者默认的数值。所有设置通常都是被提供的.

[options.brk]

Boolean

false

[options.cts]

Boolean

false

[options.dsr]

Boolean

false

[options.dtr]

Boolean

true

[options.rts]

Boolean

true

baseBinding.get() ⇒ Promise

从打开的串口中获得控制标识(CTS, DSR, DCD).

Kind: 实例 BaseBinding

Returns: Promise - 当标识被获取后返回.

Throws:

TypeError 当给定一个无效的参数,将会抛出TypeError错误.

baseBinding.flush() ⇒ Promise

接收到的冲洗 (丢弃)的数据不会被读写也不会传输.

Kind: 实例方法 BaseBinding

Returns: Promise - 当冲洗操作结束后返回.

Throws:

TypeError 当给定一个无效的参数,将会抛出TypeError错误.

baseBinding.drain() ⇒ Promise

耗尽等待所有输出数据被传输到串口后.

Kind: instance method of BaseBinding

Returns: Promise - 耗尽操作结束后调用.

Throws:

TypeError当给定一个无效的参数,将会抛出TypeError错误.

BaseBinding.list() ⇒ Promise

从元数据中找回可用的串口列表. 只有“串口名”是可用的,所有其他的字段如果它们不可用,将会无意义。 串口名 也是一个路径或者一个标识符(例如 COM1)用来打开串口.

Kind: 实例方法 BaseBinding

Returns: Promise - 串口列表数组info objects.

SerialPort~errorCallback : function

错误或者null的回调

Kind: 内部类型定义 SerialPort

参数

类型

error

error

SerialPort~modemBitsCallback : function

控制标识(cts, dsr, dcd)一个错误或者对象产生回调.

Kind: 内部类型定义 SerialPort

参数

类型

默认

error

error

status

object

[status.cts]

boolean

false

[status.dsr]

boolean

false

[status.dcd]

boolean

false

SerialPort~openOptions : Object

Kind: 内部类型定义 SerialPort

Properties

名称

类型

默认

描述

Binding

module:serialport~Binding

硬件访问绑定, 绑定是node SreialPort如何和底层系统通信.默认的,我们自动判断Windows (WindowsBinding), Linux (LinuxBinding) 和 OSX (DarwinBinding)系统,以及加载合适我们系统的模块.

autoOpen

boolean

true

在 nextTick自动打开串口

lock

boolean

true

防止其他进程打开串口. 目前不支持Windows系统.

baudRate

number

9600

已经打开的串口的波特率. 这个应该匹配一个常用的波特率,比如 110, 300, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200. 这些是不确定的, 设备连接到串口上将支持请求的波特率,即使串口自己支持那个波特率。

dataBits

number

8

必须是其中之一: 8, 7, 6, or 5.

stopBits

number

1

必须是其中之一: 1 or 2.

highWaterMark

number

16384

读写缓存区大小,默认是 16k

parity

string

"none"

必须是其中之一: 'none', 'even', 'mark', 'odd', 'space'

rtscts

boolean

false

流控制设置

xon

boolean

false

流控制设置

xoff

boolean

false

流控制设置

xany

boolean

false

流控制设置

bindingOptions

object

设置特定的绑定选项

bindingOptions.vmin

number

1

查看man termios LinuxBinding和 DarwinBinding

bindingOptions.vtime

number

0

查看man termios LinuxBinding 和 DarwinBinding

SerialPort~listCallback : function

这个回调类型叫做 requestCallback,作为一个全局标识展示。

Kind: 内部类型定义 SerialPort

参数

类型

描述

error

error

ports

array

串口信息的对象数组

命令行工具

如果你全局安装了 serialport. (例如 npm install -g serialport) 你会获得两个命令行工具.

串口列表

serialport-list 将会通过不同的格式列出所有可用的串口.

$ serialport-list -h

Usage: serialport-list [options]

List available serial ports

Options:

-h, --help 输出帮助信息

-V, --version 输出版本号

-f, --format 输出的格式: text, json, or jsonline. 默认的是: text

$ serialport-list

/dev/cu.Bluetooth-Incoming-Port

/dev/cu.usbmodem1421 Arduino (www.arduino.cc)

$ serialport-list -f json

[{"comName":"/dev/cu.Bluetooth-Incoming-Port"},{"comName":"/dev/cu.usbmodem1421","manufacturer":"Arduino (www.arduino.cc)","serialNumber":"752303138333518011C1","locationId":"0x14200000","vendorId":"0x2341","productId":"0x0043"}]

$ serialport-list -f jsonline

{"comName":"/dev/cu.Bluetooth-Incoming-Port"}

{"comName":"/dev/cu.usbmodem1421","manufacturer":"Arduino (www.arduino.cc)","serialNumber":"752303138333518011C1","locationId":"0x14200000","vendorId":"0x2341","productId":"0x0043"}

串口终端

serialport-term 提供基础的命令的接口给一个串口通信使用。 通过ctrl+c退出.

$ serialport-term -h

Usage: serialport-term -p [options]

A basic terminal interface for communicating over a serial port. Pressing ctrl+c exits.

Options:

-h, --help 输出帮助信息

-V, --version 输出版本号

-l --list 列出可用串口然后退出

-p, --port, --portname 串口的路径或者名称

-b, --baud 波特率,默认是: 9600

--databits 数据字节 默认是: 8

--parity 奇偶性,默认是: none

--stopbits 停止位,默认是: 1

--echo --localecho 打印类型,你输入它们时.

$ serialport-term -l

/dev/cu.Bluetooth-Incoming-Port

/dev/cu.usbmodem1421 Arduino (www.arduino.cc)

php hex2bin nodejs,Nodejs Serialport文档翻译相关推荐

  1. linux nvm 管理 nodejs,Nodejs 版本管理器: nvm 介绍

    有时候,我们需要测试写的 Nodejs 的程序在不同 Nodejs 版本下是否能正常运行:或是我们想要尝试下最新版 Nodejs 的新特性,但常用的代码需要旧版本的 Nodejs.但是,一个电脑上只能 ...

  2. window操作系统安装多个版本的nodejs——nodejs版本控制工具nvm

    前言 在学习前端框架或者是nodejs时,有时候某些框架对nodejs的版本有要求.但此时你的电脑上已经安装了10.x版本的nodejs,你不想直接更新到12.x,想同时保存10.x和12.x版本,在 ...

  3. [转]NodeJS初探

    NodeJS初探之一--神秘的服务器端JS 什么是NodeJS? 第一次看到这个名字,是我在报名淘宝的知识分享时看到的,我很兴奋也很好奇这样的一个JS框架.而你看到这个名字的第一个反应会是什么,是否和 ...

  4. 让我们一起认识一下Nodejs

    Nodejs Nodejs是一个运行在chrome Javascript运行环境下(俗称GoogleV8引擎)的开发平台,用来方便快捷的创建服务器端网络应用程序.可以把它理解为一个轻量级的JSP或PH ...

  5. 京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践

    http://www.infoq.com/cn/articles/practise-of-phantomjs-and-nodejs-in-jingdong 1. 为什么需要一个前端监控系统 通常在一个 ...

  6. crossplatform---Nodejs in Visual Studio Code 01.简单介绍Nodejs

    1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...

  7. Win10安装NodeJS

    Win10安装NodeJS 文章目录 Win10安装NodeJS 前言 下载地址 安装流程 验证NodeJS 更换淘宝镜像 方法一 方法二 参考文章 前言 Node.js 是一个基于Chrome Ja ...

  8. Windows系统下使用Sublime搭建nodejs环境

    最近在研究Nodejs开发,俗话说,工欲善其事,必先利其器,当然要找到一款用着顺手的编辑器作为开始.这里我们选择的是Sublime Text 3,除了漂亮的用户界面,最吸引我的就是它的插件扩展功能以及 ...

  9. JavaScript怎么安装_几句话说清楚JavaScript、V8引擎、NodeJS、NMP,到底是什么东东...

    小程序开发如火如荼,如果你是程序员,你还不懂小程序的开发,恐怕会被同行认为太LOW了吧!不过,新入行小程序开发者确实会被新的名词搞得一头雾水. 比如JavaScript不是在浏览器端运行吗,怎么还可以 ...

最新文章

  1. 数据库里存json数据
  2. CISCO路由器、交换机密码破解
  3. boost::hana::replace_if用法的测试程序
  4. 【文文殿下】网络流学习笔记
  5. html内容封装为一个对象_技术赋能还是内容为王,哪一个才是短视频创作的关键?...
  6. 作者:​周绮凤(1976-),女,博士,厦门大学自动化系副教授。
  7. 怎样高效地管理自己阅读过的文献资料?
  8. 华为手机屏幕锁屏时间设置_华为手机锁屏时间怎么设置?
  9. docker添加新的环境变量_DockerFile 设置环境变量
  10. 笔记:常见TCP端口号
  11. java+selnium爬取凡人修仙传
  12. windows10 系统共享文件端口修改
  13. 揭秘:寻找水军组织,宝妈兼职月入3000+
  14. mysql性能监控 调优_MySQL管理之道:性能调优、高可用与监控(第2版)
  15. 约他没去玩 他却更爱好跟男共事一伏
  16. 失眠怎么办?试试汤臣倍健褪黑素和以下方法!
  17. PostgreSQL列存与行存
  18. matlab中nargin用法
  19. 红外线遥控协议简介(NEC格式)
  20. vol.162 女朋友来大姨妈,你该怎么办?

热门文章

  1. 想建一个带分隔条的label 控件;
  2. Delphi 与 DirectX 之 DelphiX(71): TDIB.Negative;
  3. 八皇后非递归算法c语言,要求;编写实现八皇后问题的递归解法或非递归解法,对于任意给定的一? 爱问知识人...
  4. 怎样把照片中的头像扶正_这些圣诞壁纸也太好看了吧,还能自制圣诞帽头像,换它...
  5. php里的%是什么意思,大家帮小弟我看下这段代码中的“%”是什么意思
  6. 带防夹功能的升降器原理_桌面光污染必不可少——骨伽Bunker RGB鼠标线夹
  7. 深度学习之基于DCGAN实现手写数字生成
  8. 基于tensorflow2.0实现猫狗大战(搭建网络迁移学习)
  9. charles请求转发_用免费开源的frp实现内网穿透,使用nginx转发的方式去掉端口号...
  10. c语言让数组地址对齐,C语言实现比特位数组在目标空间左右居中对齐三种方式...