php hex2bin nodejs,Nodejs Serialport文档翻译
版本號:Serialport@5.0.0-beta3
本文鏈接
想象一個世界,你可以在那寫javascript來控制攪拌機,燈,安全系統(tǒng)或者甚至是機器人。是的,我說的是機器人。那個世界就是這兒,現在使用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 v61
Linux / ARM v71
Linux / ARM v81
Linux / MIPSel1
Linux / PPC641
Windows2 / x86
Windows2 / x64
OSX3 / x64
1 ARM, MIPSel and PPC641 平臺已知可以運行但是不屬于我們的測試范圍或者構建矩陣。 #846 ARM v4 and v5 在 Node v0.10版本之后從Nodejs中取消.
2 Windows 7, 8, 10, and 10 IoT 是支持的但是只有Windows Server 2012 R2 是由我們測試的.
3 OSX 10.4 Tiger 以及更高版本是支持的 但是只有 10.9.5 Mavericks 和 Xcode 6.1 是由我們測試的.
安裝說明
對于大多數“標準”使用案例(在mac,linux,windows x86或者x64上node V4.x),node-serialport將會很好以及很容易的安裝。
npm install serialport
安裝的平臺環(huán)境
我們使用node-pre-gyp來編譯以及公布大多數常見使用平臺(linux,mac,windows在標準的處理器平臺)的二進制庫。如果你是特別的平臺,node-serialport將會工作,但是當你安裝的時候它將會編譯二進制文件。
這假定你有必要讓你可以在自己系統(tǒng)中編譯一些nodejs模塊。這個或許并非如此,可是,請確認下列對于你系統(tǒng)是正確的,在你提出關于“無法安裝”的issue之前。對于所有操作系統(tǒng),請確認你有安裝了Python 2.x 以及不是3.0,node-gyp(你用來編譯的工具)需要Python 2.x。
Alpine Linux
Alpine 是一個(非常)小的linux開發(fā)版系統(tǒng), 但是它使用組織標準庫來代替函數庫 (大多數開發(fā)版linux系統(tǒng)使用的), 所以他需要編譯。 它通常使用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是一個框架用來創(chuàng)建跨平臺桌面程序。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命令行工具里安裝適用你系統(tǒng)的配置。如果你最近更新了系統(tǒng),可能會移除你安裝的命令行工具,請在提交問題前仔細查證。你需要使用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必要的包。如果那兒有一個你不需要的你平臺的二進制文件,請繼續(xù)!
#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創(chuàng)建了一個c++項目,它將會安裝那些在兩個小時安裝visual studio過程中不能安裝的必要的組件,而你只能坐在那兒。這個將解決一些Failed to locate:"CL.exe"的實例。
協(xié)議
SerialPort 使用的是MIT協(xié)議以及它所有的依賴關系都是遵循MIT或者BSD協(xié)議。
使用
打開一個串口:
var SerialPort = require('serialport');
var port = new SerialPort('/dev/tty-usbserial1',{
baudRate: 57600
});
當打開一個串口,你可以指定(按這個順序)
1.串口的路徑 - 需要
2.選項 - 可選的,下面會描述
打開一個串口
構造一個SerialPort項目將會立即打開一個串口。當你可以在任何時候能讀出和寫入(它會在打開的串口中排列),大多數串口函數要求一個開啟的串口。當串口是打開的時候,你可以使用以下三個方式調用代碼。
open事件經常會觸發(fā)當串口打開的時候。 當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');
});
});
//打開錯誤將會發(fā)出一個錯誤事件
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);
}
//寫入失敗將會被串口發(fā)出由于沒有寫回調。
port.write('main screen turn on');
});
//開啟事件總是會被發(fā)出
port.on('open',function(){
//打開的邏輯
});
你可以從下列串口更新新的數據
port.on('data',function(data){
console.log('Data: '+data);
});
你可以通過發(fā)送一個字符串或者緩沖給寫入方法來向串口寫入數據。像下列一樣:
port.write('Hi Mon!');
port.write(new Buffer('Hi Mom!'));
享受以及使用這些代碼做一些酷的事情吧!
調試
我們使用debug 包以及記錄下serialport的命名空間。我們的日志;
serialport:main對于所有高等級的主要日志
serialport:binding 對于所有低級的日志
你可以通過環(huán)境變量來應用日志。檢查debug文檔給更多的信息。
DEBUG=serialport:main node myapp.js
DEBUG=serialport:* node myapp.js
DEBUG=* node myapp.js
錯誤處理
所有函數在SerialPort的兩個約定。
參數錯誤拋出一個TypeError對象。當這些函數被叫做無效參數時,你將會看見這些。
如果沒有回調被提供,運行時錯誤提供Error對象給函數回調或者發(fā)出一個error event。你將會看到這些當一個運行錯誤發(fā)生,比如試圖開啟一個錯誤的串口,或者設置一個不支持的波特率。
如果你調用正確參數的函數,它應該不需要在一個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
串口的系統(tǒng)路徑或者名稱. 只讀.
new SerialPort(path,[options],[openCallback])
為path創(chuàng)建一個新的串口對象.用無效的參數或者無效的選項構造一個新的串口時,會拋出錯誤。串口將默認自動打開,其次這相當于調用port.open(openCallback)。這個可以被關閉,通過設置autoOpen選項為false。
Throws:
TypeError 當提供無效參數時, 將會拋出TypeError。
參數
類型
描述
path
string
串口打開的系統(tǒng)路徑.例如, 在Mac/Linux上/dev/tty.XXX 或者 Windows上的 COM1 .
[options]
openOptions
串口配置選項
[openCallback]
errorCallback
當連接已經打開. 如果它沒有提供以及由錯誤發(fā)生,它將會發(fā)出串口error事件。如果在openOptions中autoOpen被設置為false,回調將不會調用
serialPort.open([callback])
打開一個連接到串口
Kind:實例方法 SerialPort
Emits:open
參數
類型
描述
[callback]
errorCallback
當連接已經被打開. 如果它沒有被提供以及有一個錯誤發(fā)生, 它將在串口上被發(fā)出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 被調用而沒有回調以及有一個錯誤,錯誤事件將會被觸發(fā)。
serialPort.write(data,[encoding],[callback])? boolean
向給定的串口寫入數據。如果端口沒有打開,會緩存寫入數據。
寫入操作是無阻塞的。當它返回時,數據或許還沒有被寫入串口。看drain()
一些設備,比如當你打開一個連接到Arduino時,它會重啟。在這種情況下,如果你立刻向設備寫入,它們將不能接收到數據。這經常在Arduino發(fā)送“ready”字節(jié)后工作,你的node程序會在寫入前等待。你也可以僥幸認為等待大概400ms.
盡管串口是一個流,但當寫入它可以接受的字節(jié)數組除了字符串和緩存時,這個格外的功能非常有用。
Kind: 實例方法 SerialPort
Returns: boolean - 如果流渴望在繼續(xù)寫入其他數據之前調用代碼等待被觸發(fā)的drain事件,就是false; 其他情況是 true.
Since: 5.0.0
參數
類型
描述
data
string
array
buffer
接收一個 Buffer 對象, 或者一個接受buffer構造函數的類型 (除了字節(jié)數組或者一個字符串).
[encoding]
string
編碼, 如果數據塊是一個字符串. 默認的是 'utf8'. 也接受 'ascii', 'base64', 'binary', 'hex' 查看 Buffers and Character Encodings了解所有可用的選項.
[callback]
function
第一次寫入操作結束.數據可能還沒有刷新到底層端口,沒有參數.
serialPort.read([size]) ? string | Buffer | null
從串口請求一個字節(jié)數.read()方法從內存緩沖區(qū)拉取一些數據然后返回它。如果沒有可用數據被讀取,會返回null。默認的,數據將會被返回成一個緩存對象,除非一個編碼已經指明使用了.setEncoding()方法。
Kind: 實例方法 SerialPort
Returns: string | Buffer | null - 內存緩沖區(qū)數據
Since: 5.0.0
參數
類型
描述
[size]
number
指明了會返回多少字節(jié)的數據如果是可用的話。
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
所有選項是操作系統(tǒng)默認的當串口被打開. 每個標志被設置為相同的調用提供或者是默認數據.如果選項沒有提供將要使用的默認選項.
[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])
等待直到所有發(fā)出的數據被傳輸到串口。 查看 tcdrain() or FlushFileBuffers() 了解更多信息。
Kind: 實例方法 SerialPort
參數
類型
描述
[callback]
errorCallback
當耗盡操作返回
Example
寫入 data 以及等待直到在調用回調之前,結束對目標串口的傳輸。
function writeAndDrain (data, callback) {
sp.write(data, function () {
sp.drain(callback);
});
}
serialPort.pause() ?
pause()方法會導致一個流的流動模式停止觸發(fā)'data'事件,切換的流動模式. 任何可用的數據將仍然存放在內存緩存區(qū)。
Kind: 實例方法SerialPort
Returns: this
See: module:serialport#resume
Since: 5.0.0
serialPort.resume() ?
resume()會導致一個明確的暫停可讀的流,來恢復觸發(fā)的‘data'事件,切換流到流模式
Kind: 實例方法 SerialPort
Returns: this
See: module:serialport#pause
Since: 5.0.0
Event: "error"
無論何時這有一個錯誤就會回調error 事件。
Kind: 事件由此觸發(fā) SerialPort
Event: "open"
當串口打開以及準備進行寫入時,open 事件將會無參回調。 如果碰巧如果你有構造函數立即打開或者如果你通過open()手動打開串口。查看 Useage/Opening a Port 了解更多信息.
Kind: 事件由此觸發(fā) SerialPort
Event: "data"
data 事件輸出字符串到串口在流動模式中. 一旦被接受到,數據就會被發(fā)出。 數據將會是一個緩存對象,很多不同的數據量在其中.readLine解析器將數據轉換成字符串.查看 parsers部分了解關于解析器的更多信息以及 NodeJS stream documentation 了解更多關于數據事件的信息.
Kind: 事件由此觸發(fā) SerialPort
Event: "disconnect"
disconnect 事件回調會調用一個錯誤對象. 這個經常發(fā)生在 close 事件之前如果斷開連接被發(fā)現。
Kind: 事件由此觸發(fā)SerialPort
Event: "close"
close事件是無參回調當串口被關閉時. 當一個錯誤發(fā)生,錯誤事件將被觸發(fā)。
Kind: 事件由此觸發(fā) SerialPort
SerialPort.Binding : BaseBinding
Binding是node Serialport底層的系統(tǒng). 默認的我們自動檢測 windows, Linux 和 OSX系統(tǒng) 以及為你系統(tǒng)加載合適的模塊. 你可以指定 SerialPort.Binding 去綁定任何你喜歡的后臺. 你可以搜索更多信息從 npm.
你也可以禁止自動后臺加載,通過一下代碼實現
var SerialPort = require('serialport/lib/serialport');
SerialPort.Binding = MyBindingClass;
Kind: 靜態(tài)性能SerialPort
Since: 5.0.0
SerialPort.parsers : object
默認的分析程序是Transform streams 可以用各種各樣的方式來解析數據,可以被使用來處理傳入的數據。
使用各種解析程序你都需要創(chuàng)建他們然后輸送SerialPort到解析程序。千萬別編寫解析程序,而是編寫SerialPort對象。
Kind: 靜態(tài)特性SerialPort
Since: 5.0.0
Properties
名稱
狀態(tài)
描述
ByteLength
Class
發(fā)出數據的轉換流作為緩存,在收到一個特定的字節(jié)數后
Delimiter
Class
發(fā)出數據的轉換流,每次接受一個字節(jié)序列
Readline
Class
發(fā)出數據的轉換流,在收到一個換行符之后
例子
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');
// 可以縮短創(chuàng)建的解析程序和傳輸管道
var parser = port.pipe(new Readline());
使用字節(jié)長度解析器,你必須提供字節(jié)數的長度:
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);
使用分隔符解析器你必須指明分隔符,你必須在一個字符串、緩存或者一個字節(jié)數組中提供一個分隔符:
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: 靜態(tài)方法 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請求一個字節(jié)數。這個方法和node的 fs.read相似.
Kind: 實例方法 BaseBinding
Returns: Promise -在閱讀操作結束之后返回讀取的字節(jié)數.
Throws:
TypeError當給定一個無效的參數,將會拋出TypeError錯誤.
Params: integer 偏移 - 在緩存區(qū)偏移處開始寫入.
參數
類型
描述
data
buffer
length
integer
讀取指定的最大字節(jié)數
baseBinding.write(data) ? Promise
向SerialPort寫入一個字節(jié)數,這將只能在沒有等待寫入的操作時被調用.
Kind: 實例方法 BaseBinding
Returns: Promise - 在數據傳遞給操作系統(tǒng)編寫后返回.
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
當串口被打開時,所有設置都是操作系統(tǒng)的默認設置. 每個標識都被設置成每次調用時提供的或者默認的數值。所有設置通常都是被提供的.
[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如何和底層系統(tǒng)通信.默認的,我們自動判斷Windows (WindowsBinding), Linux (LinuxBinding) 和 OSX (DarwinBinding)系統(tǒng),以及加載合適我們系統(tǒng)的模塊.
autoOpen
boolean
true
在 nextTick自動打開串口
lock
boolean
true
防止其他進程打開串口. 目前不支持Windows系統(tǒng).
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
讀寫緩存區(qū)大小,默認是 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 數據字節(jié) 默認是: 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文档翻译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab教程点语言,编程语言 /
- 下一篇: 企业 Win10 设备出现开始菜单和任务