new SerialPort(port [, baudRate] [, dataBits] [, stopBits] [, parityBits] [, flowControl])
Classe que possibilita a comunicação por meio de portas seriais.
Parameters:
Name | Type | Argument | Description |
---|---|---|---|
port |
number | string | Nome ou número da porta serial que será aberta para comunicação. Caso apenas o número tenha sido informado, será usado o prefixo 'COM' no windows e '/dev/ttyUSB' no linux. |
|
baudRate |
number |
<optional> |
Velocidade da transmissão dos dados entre os equipamentos que usam comunicação serial. A velocidade da porta e a velocidade do equipamento precisam ser iguais, alguns equipamentos podem detectar automaticamente a velocidade da porta serial. Valor padrão: 9600 bits/s. |
dataBits |
number |
<optional> |
Número de bits usados para representar um caractere. Pode ser 5 (para Código Baudot), 6 (Usado raramente), 7 (para true ASCII) ou 8 (para qualquer tipo de dados, pois este valor confere com o tamanho de um byte). Valor padrão: 8 bits. |
stopBits |
number |
<optional> |
Quantidade de bits enviados no final de cada caractere que permitem o equipamento receptor do sinal detectar o fim do caractere e re-sincronizar com a stream de caracteres. Pode ser 1 ou 2. Valor padrão: 1. |
parityBits |
string |
<optional> |
Tipo do método de paridade usado para detectar erros na transmissão. Pode ser: 'odd', 'even' ou 'none' (sem paridade). Valor padrão: 'none'. |
flowControl |
string |
<optional> |
Tipo de controle de fluxo, Pode ser: 'hardware', 'software' ou 'none'(sem controle de fluxo). Valor padrão: 'none'. |
Members
-
baudRate :number
-
Obtém a velocidade da transmissão dos dados.
Type:
- number
-
dataBits :number
-
Obtém o número de bits usados para representar um caractere. Os possíveis valores retornados são: 5, 6, 7 ou 8.
Type:
- number
-
flowControl :string
-
Define o tipo de controle de fluxo. Pode ser: 'hardware', 'software' ou 'none' (sem controle de fluxo).
Type:
- string
-
parityBits :string
-
Define o tipo do método de paridade usado para detectar erros na transmissão. Os possíveis valores são: 'odd', 'even', ou 'none'.
Type:
- string
-
portName :string
-
Nome da porta serial.
Type:
- string
-
readIntervalTimeout :number
-
Define o timeout em ms entre bytes recebidos.
Importante: esta propriedade é suportada apenas no Windows e o seu uso no Linux gera um erro.
Type:
- number
- Deprecated:
-
- Utilize apenas a propriedade readTimeout.
-
readTimeout :number
-
Define o timeout de leitura em ms.
Type:
- number
-
readTotalTimeoutConstant :number
-
Define a constante do cálculo do valor total de timeout de uma operação de leitura.
O valor do timeout total de leitura em ms é calculado usando a seguinte expressão:
timeoutTotal = (readTotalTimeoutMultiplier * nBytesRead) + readTotalTimeoutConstant
Importante: esta propriedade é suportada apenas no Windows. No Linux é equivalente a readTimeout.
Type:
- number
- Deprecated:
-
- Utilize apenas a propriedade readTimeout.
-
readTotalTimeoutMultiplier :number
-
Define o multiplicador do cálculo do valor total de timeout de uma operação de leitura.
O valor do timeout total de leitura em ms é calculado usando a seguinte expressão:
timeoutTotal = (readTotalTimeoutMultiplier * nBytesRead) + readTotalTimeoutConstant
Importante: esta propriedade é suportada apenas no Windows e o seu uso no Linux gera um erro.
Type:
- number
- Deprecated:
-
- Utilize apenas a propriedade readTimeout.
-
stopBits :number
-
Define a quantidade de bits enviados no final de cada caractere. Os possíveis valores são: 1 ou 2.
Type:
- number
-
writeTimeout :number
-
Define o timeout de escrita em ms.
Type:
- number
-
writeTotalTimeoutConstant :number
-
Define a constante do cálculo do valor total de timeout de uma operação de escrita.
O valor do timeout total de escrita em ms é calculado usando a seguinte expressão:
timeoutTotal = (writeTotalTimeoutMultiplier * nBytesWrote) + writeTotalTimeoutConstant
Importante: esta propriedade é suportada apenas no Windows. No Linux é equivalente a writeTimeout.
Type:
- number
- Deprecated:
-
- Utilize apenas a propriedade writeTimeout.
-
writeTotalTimeoutMultiplier :number
-
Define o multiplicador do cálculo do valor total de timeout de uma operação de escrita.
O valor do timeout total de escrita em ms é calculado usando a seguinte expressão:
timeoutTotal = (writeTotalTimeoutMultiplier * nBytesWrote) + writeTotalTimeoutConstant
Importante: esta propriedade é suportada apenas no Windows e o seu uso no Linux gera um erro.
Type:
- number
- Deprecated:
-
- Utilize apenas a propriedade writeTimeout.
Methods
-
<static> getAvailablePorts()
-
Obtém a relação de portas seriais disponíveis no computador onde o Engine está sendo executado. Será retornado um array de objetos com as seguintes propriedades:
- See:
-
- SerialPortInfo
- SerialPort.logAvailablePorts
Returns:
Relação de portas seriais disponíveis no computador onde o Engine está sendo executado.
- Type
- Array.<SerialPortInfo>
-
<static> logAvailablePorts( [logger])
-
Registra no arquivo de log informações sobre as portas seriais disponíveis no computador onde o Engine está sendo executado.
Parameters:
Name Type Argument Description logger
Logger <optional>
Log onde deverão ser registradas as informações. Caso não seja informado, elas serão registradas na categoria de log application.
- See:
-
- SerialPort.getAvailablePorts
-
clear()
-
Libera todos os threads aguardando uma leitura/escrita na porta serial e limpa os buffers.
-
close()
-
Fecha a comunicação com a porta serial.
-
getCTS()
-
Lê o estado da linha Clear To Send (CTS).
Esta linha é normalmente usada para controle de fluxo em conjunto com a linha RTS. Um sinal afirmativo indica que o receptor está pronto para receber dados.
Observação: esta é uma opção avançada que permite implementar um controle de fluxo de hardware customizado. Utilize apenas em dispositivos que não implementam os fluxos padronizados de "hardware" ou "software", que podem ser configurados pela opção
flowControl
.Returns:
Estado da linha.
- Type
- boolean
-
getDSR()
-
Lê o estado da linha Data Set Ready (DSR).
Esta linha possui diferentes usos a depender da aplicação, mas é normalmente usada para handshaking ou controle de fluxo em conjunto com a linha DTR.
Observação: esta é uma opção avançada que permite implementar um controle de fluxo de hardware customizado. Utilize apenas em dispositivos que não implementam os fluxos padronizados de "hardware" ou "software", que podem ser configurados pela opção
flowControl
.Returns:
Estado da linha.
- Type
- boolean
-
read(maxLen)
-
Lê uma quantidade de bytes da porta serial. A quantidade de bytes lidos é entre 0 e
maxLen
. Resultado com tamanho 0 indica que a leitura chegou ao fim (EOF) ou quemaxLen
passado foi 0.Não é um erro que o tamanho do valor retornado seja menor que
maxLen
, mesmo que a leitura não tenha chegado ao fim ainda. Isto pode acontecer caso um número menor de bytes esteja disponível ou a leitura tenha sido interrompida por um sinal.Parameters:
Name Type Description maxLen
number Quantidade máxima de bytes que podem ser lidos da porta serial.
Returns:
Resultado da leitura da porta serial. Esta função retorna os bytes lidos no formato conhecido por Binary Strings. Para conteúdos binários ou textos que não sejam codificados em ASCII, pode ser necessário a recodificação do valor retornado.
- Type
- string
Examples
const SerialPort = require('@nginstack/engine/lib/io/SerialPort.js'); // O código abaixo lê 50 bytes da porta serial COM4 e guarda em result const serial = new SerialPort('COM4', 9600, 8, 1, 'none', 'none'); let result = ''; let partial = ''; const maxLen = 50; do { partial = serial.read(maxLen - result.length); result += partial; } while (result.length < maxLen && partial.length > 0);
const SerialPort = require('@nginstack/engine/lib/io/SerialPort.js'); // O código abaixo lê 42 bytes da porta serial /dev/ttyS0 e guarda em result const serial = new SerialPort('/dev/ttyS0'); let result = ''; const maxLen = 42; while (result.length < maxLen) { let partial = serial.read(maxLen - result.length); if (partial.length === 0) { break; } result += partial; }
-
setDTR(state)
-
Atribui um estado à linha Data Terminal Ready (DTR).
Esta linha possui diferentes usos a depender da aplicação, mas é normalmente usada para handshaking ou controle de fluxo em conjunto com a linha DSR. A porta é criada com DTR verdadeiro para manter compatibilidade com dispositivos antigos que somente enviam dados quando este sinal está ativo.
Observação: esta é uma opção avançada que permite implementar um controle de fluxo de hardware customizado. Utilize apenas em dispositivos que não implementam os fluxos padronizados de "hardware" ou "software", que podem ser configurados pela opção
flowControl
.Parameters:
Name Type Description state
boolean Estado a ser atribuído à linha.
-
setRTS(state)
-
Atribui um estado à linha Ready To Send (RTS).
Esta linha é normalmente usada para controle de fluxo em conjunto com a linha CTS. Atribuir falso limpa o sinal. Atribuir verdadeiro envia um sinal afirmativo, indicando que o transmissor está pronto para enviar dados.
Observação: esta é uma opção avançada que permite implementar um controle de fluxo de hardware customizado. Utilize apenas em dispositivos que não implementam os fluxos padronizados de "hardware" ou "software", que podem ser configurados pela opção
flowControl
.Parameters:
Name Type Description state
boolean Estado a ser atribuído à linha.
-
write(buffer)
-
Escreve o conteúdo completo do buffer na porta serial.
Caso a escrita seja interrompida por qualquer motivo, a função gera erro.
Parameters:
Name Type Description buffer
string | ArrayBuffer | Uint8Array Bytes que serão transmitidos para a porta serial.
Example
const SerialPort = require('@nginstack/engine/lib/io/SerialPort.js'); // O código abaixo escreve a string "Hello World!" na porta serial COM4 const serial = new SerialPort('COM4', 9600, 8, 1, 'none', 'none'); const content = 'Hello World!'; serial.write(content);
-
writeln(buffer)
-
Escreve o conteúdo completo do buffer acrescido de quebra de linha na porta serial.
Quebra de linha acrescida: 0x13(CR) e 0x10(LF) para Windows. 0x10(LF) para Linux.
Parameters:
Name Type Description buffer
string | ArrayBuffer | Uint8Array Bytes que serão transmitidos para a porta serial.
Example
const SerialPort = require('@nginstack/engine/lib/io/SerialPort.js'); // O código abaixo escreve a string "Hello World!\r\n" na porta serial COM4 let serial = new SerialPort('COM4'); const content = 'Hello World!'; serial.writeln(content);