2025-03-18 20:08:23 +04:00
|
|
|
# Serial module {#js_serial}
|
2024-04-09 12:06:37 +03:00
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let serial = require("serial");
|
|
|
|
|
```
|
|
|
|
|
# Methods
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
## setup()
|
2024-04-09 12:06:37 +03:00
|
|
|
Configure serial port. Should be called before all other methods.
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Parameters**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
- Serial port name (usart, lpuart)
|
|
|
|
|
- Baudrate
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Example**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
```js
|
|
|
|
|
// Configure LPUART port with baudrate = 115200
|
|
|
|
|
serial.setup("lpuart", 115200);
|
|
|
|
|
```
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
## write()
|
2025-03-18 20:08:23 +04:00
|
|
|
Write data to serial port.
|
2024-04-09 12:06:37 +03:00
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Parameters**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
One or more arguments of the following types:
|
|
|
|
|
- A string
|
|
|
|
|
- Single number, each number is interpreted as a byte
|
|
|
|
|
- Array of numbers, each number is interpreted as a byte
|
|
|
|
|
- ArrayBuffer or DataView
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Example**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
```js
|
|
|
|
|
serial.write(0x0a); // Write a single byte 0x0A
|
|
|
|
|
serial.write("Hello, world!"); // Write a string
|
|
|
|
|
serial.write("Hello, world!", [0x0d, 0x0a]); // Write a string followed by two bytes
|
|
|
|
|
```
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
## read()
|
2024-04-09 12:06:37 +03:00
|
|
|
Read a fixed number of characters from serial port.
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Parameters**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
- Number of bytes to read
|
2025-03-18 20:08:23 +04:00
|
|
|
- *(optional)* Timeout value in ms
|
2024-04-09 12:06:37 +03:00
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Returns**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
A sting of received characters or undefined if nothing was received before timeout.
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Example**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
```js
|
|
|
|
|
serial.read(1); // Read a single byte, without timeout
|
|
|
|
|
serial.read(10, 5000); // Read 10 bytes, with 5s timeout
|
|
|
|
|
```
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
## readln()
|
2025-03-18 20:08:23 +04:00
|
|
|
Read from serial port until line break character.
|
2024-04-09 12:06:37 +03:00
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Parameters**
|
|
|
|
|
|
2025-03-18 20:08:23 +04:00
|
|
|
*(optional)* Timeout value in ms.
|
2024-04-09 12:06:37 +03:00
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Returns**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
A sting of received characters or undefined if nothing was received before timeout.
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Example**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
```js
|
|
|
|
|
serial.readln(); // Read without timeout
|
|
|
|
|
serial.readln(5000); // Read with 5s timeout
|
|
|
|
|
```
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
## readBytes()
|
2025-03-18 20:08:23 +04:00
|
|
|
Read from serial port until line break character.
|
2024-04-09 12:06:37 +03:00
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Parameters**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
- Number of bytes to read
|
2025-03-18 20:08:23 +04:00
|
|
|
- *(optional)* Timeout value in ms
|
2024-04-09 12:06:37 +03:00
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Returns**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
ArrayBuffer with received data or undefined if nothing was received before timeout.
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Example**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
```js
|
|
|
|
|
serial.readBytes(4); // Read 4 bytes, without timeout
|
|
|
|
|
|
2024-06-30 15:18:46 +04:00
|
|
|
// Read one byte from receive buffer with zero timeout, returns UNDEFINED if Rx buffer is empty
|
2024-04-09 12:06:37 +03:00
|
|
|
serial.readBytes(1, 0);
|
|
|
|
|
```
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
## expect()
|
2025-03-18 20:08:23 +04:00
|
|
|
Search for a string pattern in received data stream.
|
2024-04-09 12:06:37 +03:00
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Parameters**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
- Single argument or array of the following types:
|
|
|
|
|
- A string
|
|
|
|
|
- Array of numbers, each number is interpreted as a byte
|
2025-03-18 20:08:23 +04:00
|
|
|
- *(optional)* Timeout value in ms
|
2024-04-09 12:06:37 +03:00
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Returns**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
Index of matched pattern in input patterns list, undefined if nothing was found.
|
|
|
|
|
|
2025-03-26 17:29:26 +03:00
|
|
|
**Example**
|
|
|
|
|
|
2024-04-09 12:06:37 +03:00
|
|
|
```js
|
|
|
|
|
// Wait for root shell prompt with 1s timeout, returns 0 if it was received before timeout, undefined if not
|
|
|
|
|
serial.expect("# ", 1000);
|
|
|
|
|
|
|
|
|
|
// Infinitely wait for one of two strings, should return 0 if the first string got matched, 1 if the second one
|
|
|
|
|
serial.expect([": not found", "Usage: "]);
|
|
|
|
|
```
|