알뜰살뜰 정보/Node-red

node-red serial 통신 예제

쉬고싶은 거북이 2020. 6. 25. 17:11

Node-RED Serial 포트 기본 예제 

1. 결과

test 버튼쪽은 없어도 가능합니다.

기본 node-red-node-serialport를 사용하였습니다.


연결 상태

PC - rs485 커넥터 - 라즈베리파이(Node-red 구동중)

만약 PC에서 Node-RED를 사용 중이라면 /dev/ttyAMA0이 아닌 COM2 를 사용하셔야 합니다.

2. TX

슬라이더를 움직여보면 pc에 serial 통신이 오는 것을 확인할 수 있습니다.

3. RX

숫자 값을 넣으면 게이지칸이 해당 값 만큼 움직이는 것을 볼 수 있습니다.

4. 응용하기

tx의 슬라이더는 rx의 게이지 값에 변하지 않지만
그것을 해결하기 위해서는 아래와 같이 응용하면 가능


참조

아래 포인트만 읽어도 기능에 대한 원리는 알 수 있다.

Usage

Provides three nodes - one to receive messages, and one to send, and a request node which can send then wait for a response.

Input

Reads data from a local serial port.

Clicking on the search icon will attempt to autodetect serial ports attached to the device, however you many need to manually specify it. COM1, /dev/ttyUSB0, etc

It can either

  • wait for a "split" character (default \n). Also accepts hex notation (0x0a).
  • wait for a timeout in milliseconds from the first character received
  • wait to fill a fixed sized buffer

It then outputs msg.payload as either a UTF8 ascii string or a binary Buffer object.

If no split character is specified, or a timeout or buffer size of 0, then a stream of single characters is sent - again either as ascii chars or size 1 binary buffers.

Output

Provides a connection to an outbound serial port.

Only the msg.payload is sent.

Optionally the character used to split the input can be appended to every message sent out to the serial port.

Request

Provides a connection to a request/response serial port.

This node behaves as a tightly coupled combination of serial in and serial out nodes, with which it shares the configuration.

Send the request message in msg.payload as you would do with a serial out node. The message will be forwarded to the serial port following a strict FIFO (First In, First Out) queue, waiting for a single response before transmitting the next request. Once a response is received (with the same logic of a serial in node), or after a timeout occurs, a message is produced on the output, with msg.payload containing the received response (or missing in case if timeout), msg.status containing relevant info, and all other fields preserved.

For consistency with the serial in node, msg.port is also set to the name of the port selected.