Nol.A SDK Library 26.11.2
For IoT System Software Development
Loading...
Searching...
No Matches
SerialPort Class Referenceabstract

시리얼 포트를 제어하기 위한 클래스 More...

#include <SerialPort.hpp>

Inheritance diagram for SerialPort:
Stream Print

Public Types

enum  Config_t {
  _5N1 = DATABITS_5 | PARITY_NONE | STOPBITS_1 , _6N1 = DATABITS_6 | PARITY_NONE | STOPBITS_1 , _7N1 = DATABITS_7 | PARITY_NONE | STOPBITS_1 , _8N1 = DATABITS_8 | PARITY_NONE | STOPBITS_1 ,
  _5N2 = DATABITS_5 | PARITY_NONE | STOPBITS_2 , _6N2 = DATABITS_6 | PARITY_NONE | STOPBITS_2 , _7N2 = DATABITS_7 | PARITY_NONE | STOPBITS_2 , _8N2 = DATABITS_8 | PARITY_NONE | STOPBITS_2 ,
  _5E1 = DATABITS_5 | PARITY_EVEN | STOPBITS_1 , _6E1 = DATABITS_6 | PARITY_EVEN | STOPBITS_1 , _7E1 = DATABITS_7 | PARITY_EVEN | STOPBITS_1 , _8E1 = DATABITS_8 | PARITY_EVEN | STOPBITS_1 ,
  _5E2 = DATABITS_5 | PARITY_EVEN | STOPBITS_2 , _6E2 = DATABITS_6 | PARITY_EVEN | STOPBITS_2 , _7E2 = DATABITS_7 | PARITY_EVEN | STOPBITS_2 , _8E2 = DATABITS_8 | PARITY_EVEN | STOPBITS_2 ,
  _5O1 = DATABITS_5 | PARITY_ODD | STOPBITS_1 , _6O1 = DATABITS_6 | PARITY_ODD | STOPBITS_1 , _7O1 = DATABITS_7 | PARITY_ODD | STOPBITS_1 , _8O1 = DATABITS_8 | PARITY_ODD | STOPBITS_1 ,
  _5O2 = DATABITS_5 | PARITY_ODD | STOPBITS_2 , _6O2 = DATABITS_6 | PARITY_ODD | STOPBITS_2 , _7O2 = DATABITS_7 | PARITY_ODD | STOPBITS_2 , _8O2 = DATABITS_8 | PARITY_ODD | STOPBITS_2
}

Public Member Functions

 SerialPort (uint16_t txBufferSize=64, uint16_t rxBufferSize=64)
virtual error_t begin (uint32_t speed=115200, Config_t config=_8N1)=0
 시리얼 포트를 초기화합니다.
bool isBegan ()
 시리얼 포트가 시작되었는지 확인합니다.
virtual void end ()
 시리얼 포트를 종료합니다.
virtual void listen ()=0
 포트로부터 문자 입력을 받기 시작합니다.
virtual void stopListening ()=0
 포트로부터 문자 수신을 중단합니다.
bool isListening ()
 포트가 현재 수신 중인지 알아봅니다.
virtual int available ()
 포트 내부 수신버퍼에 수신된 문자의 갯수를 반환합니다.
virtual int peek ()
 포트 내부 수신버퍼의 가장 앞에 위치한 문자를 반한합니다.
virtual int availableForWrite ()
 포트 내부 송신버퍼의 여유공간을 반환합니다.
virtual int read ()
 포트 내부 버퍼에 수신된 문자를 하다 꺼냅니다.
uint8_t readBytes (char *buf, uint8_t len)
uint8_t readBytes (uint8_t *buf, uint8_t len)
uint8_t readBytesUntil (char terminator, char *buf, uint8_t len)
 readBytes() 와 동일하나 꺼내는 중간에 terminator 문자를 만나면 즉시 반환됩니다.
uint8_t readBytesUntil (char terminator, uint8_t *buf, uint8_t len)
 readBytes() 와 동일하나 꺼내는 중간에 terminator 문자를 만나면 즉시 반환됩니다.
void onReceive (void(*func)(void *, SerialPort &), void *ctx, bool interrupt=false)
 포트로 문자가 입력될 때마다 호출될 콜백함수를 지정합니다.
void onReceive (void(*func)(void *), void *ctx, bool interrupt=false)
 포트로 문자가 입력될 때마다 호출될 콜백함수를 지정합니다.
void onReceive (void(*func)(SerialPort &), bool interrupt=false)
 포트로 문자가 입력될 때마다 호출될 콜백함수를 지정합니다.
virtual size_t write (uint8_t val)
 문자 하나를 출력합니다.
error_t input (char *str, uint8_t len, char terminator)
 포트로부터 문자열 입력을 받습니다.
error_t inputKeyboard (char *str, uint8_t len)
 포트와 연결된 키보드로부터 문자열 입력을 받습니다.
char * getInputData (uint8_t *len)
 입력이 완료된 문자열을 가져옵니다.
char * getInputData ()
 입력이 완료된 문자열을 가져옵니다.
void stopInput ()
 input() 또는 inputKeyboard() 로 시작된 문자열 입력을 중단합니다.
bool isSending ()
size_t write (const char *str)
 문자열을 출력합니다.
virtual size_t write (const uint8_t *buffer, size_t size)
 데이터 배열을 출력합니다.
size_t write (const char *buffer, size_t size)
 데이터 배열을 출력합니다.
Public Member Functions inherited from Stream
virtual void flush ()=0
void setTimeout (unsigned long timeout)
bool find (const char *target)
bool find (uint8_t *target)
bool find (const char *target, size_t length)
bool find (const uint8_t *target, size_t length)
bool find (char target)
bool findUntil (const char *target, const char *terminator)
bool findUntil (const uint8_t *target, const char *terminator)
bool findUntil (const char *target, size_t targetLen, const char *terminate, size_t termLen)
bool findUntil (const uint8_t *target, size_t targetLen, const char *terminate, size_t termLen)
long parseInt ()
float parseFloat ()
size_t readBytes (char *buffer, size_t length)
size_t readBytes (uint8_t *buffer, size_t length)
size_t readBytesUntil (char terminator, char *buffer, size_t length)
size_t readBytesUntil (char terminator, uint8_t *buffer, size_t length)
std::string readString ()
std::string readStringUntil (char terminator)
Public Member Functions inherited from Print
int getWriteError ()
void clearWriteError ()
size_t write (const char *str)
 문자열을 출력합니다.
size_t write (const char *buffer, size_t size)
 데이터 배열을 출력합니다.
size_t print (const __FlashStringHelper *)
 프로그램 메모리(읽기 전용 플래시) 영역에 저장된 문자열을 출력합니다.
size_t print (const std::string &)
 문자열을 출력합니다.
size_t print (const char[])
 NULL로 종료되는 문자열을 출력합니다.
size_t print (char)
 문자 하나를 출력합니다.
size_t print (unsigned char, int=DEC)
 부호가 없는(unsigned) 8-byte 정수를 지정한 진수 형태로 출력합니다.
size_t print (int, int=DEC)
 int 형 정수를 지정한 진수 형태로 출력합니다.
size_t print (unsigned int, int=DEC)
 unsigned int 형 정수를 지정한 진수 형태로 출력합니다.
size_t print (long, int=DEC)
 long 형 정수를 지정한 진수 형태로 출력합니다.
size_t print (unsigned long, int=DEC)
 unsigned long 형 정수를 지정한 진수 형태로 출력합니다.
size_t print (double, int=2)
 double 형 실수를 지정한 소수점 이하 출력 개수로 출력합니다.
size_t print (const Printable &)
 Printable을 구현한 클래스를 출력합니다.
size_t println (const __FlashStringHelper *)
 프로그램 메모리(읽기 전용 플래시) 영역에 저장된 문자열과 개행문자(CR+LF)를 출력합니다.
size_t println (const std::string &s)
 문자열과 개행문자(CR+LF)를 출력합니다.
size_t println (const char[])
 NULL로 종료되는 문자열과 개행문자(CR+LF)를 출력합니다.
size_t println (char)
 문자 하나와 개행문자(CR+LF)를 출력합니다.
size_t println (unsigned char, int=DEC)
 부호가 없는(unsigned) 8-byte 정수를 지정한 진수 형태로, 개행문자(CR+LF)와 함께 출력합니다.
size_t println (int, int=DEC)
 int 형 정수를 지정한 진수 형태로, 개행문자(CR+LF)와 함께 출력합니다.
size_t println (unsigned int, int=DEC)
 unsigned int 형 정수를 지정한 진수 형태로, 개행문자(CR+LF)와 함께 출력합니다.
size_t println (long, int=DEC)
 long 형 정수를 지정한 진수 형태로, 개행문자(CR+LF)와 함께 출력합니다.
size_t println (unsigned long, int=DEC)
 unsigned long 형 정수를 지정한 진수 형태로, 개행문자(CR+LF)와 함께 출력합니다.
size_t println (double, int=2)
 double 형 실수를 지정한 소수점 이하 출력 개수로, 개행문자(CR+LF)와 함께 출력합니다.
size_t println (const Printable &)
 Printable을 구현한 클래스를, 개행문자(CR+LF)와 함께 출력합니다.
size_t println (void)
 개행문자(CR+LF)를 출력합니다.
virtual int printf (const char *,...)
 printf 출력을 내보냅니다.

Protected Member Functions

void receive (uint8_t data)
Protected Member Functions inherited from Stream
int timedRead ()
int timedPeek ()
int peekNextDigit ()
long parseInt (char skipChar)
float parseFloat (char skipChar)
Protected Member Functions inherited from Print
void setWriteError (int err=1)

Protected Attributes

bool began = false
bool rxEnabled = false
bool notifyImmediatelyOnRx = false
volatile bool txBusy = false
const uint16_t RxBufferSize
uint8_t * rxBuffer = nullptr
volatile uint16_t rxBufferHead = 0
volatile uint16_t rxBufferTail = 0
const uint16_t TxBufferSize
uint8_t * txBuffer = nullptr
volatile uint16_t txBufferHead = 0
volatile uint16_t txBufferTail = 0
void(* doAfterReceive )(void *ctx) = nullptr
Protected Attributes inherited from Stream
unsigned long _timeout
unsigned long _startMillis

Detailed Description

Member Enumeration Documentation

◆ Config_t

enum SerialPort::Config_t
78 {
79 _5N1 = DATABITS_5 | PARITY_NONE | STOPBITS_1,
80 _6N1 = DATABITS_6 | PARITY_NONE | STOPBITS_1,
81 _7N1 = DATABITS_7 | PARITY_NONE | STOPBITS_1,
82 _8N1 = DATABITS_8 | PARITY_NONE | STOPBITS_1, //default
83 _5N2 = DATABITS_5 | PARITY_NONE | STOPBITS_2,
84 _6N2 = DATABITS_6 | PARITY_NONE | STOPBITS_2,
85 _7N2 = DATABITS_7 | PARITY_NONE | STOPBITS_2,
86 _8N2 = DATABITS_8 | PARITY_NONE | STOPBITS_2,
87 _5E1 = DATABITS_5 | PARITY_EVEN | STOPBITS_1,
88 _6E1 = DATABITS_6 | PARITY_EVEN | STOPBITS_1,
89 _7E1 = DATABITS_7 | PARITY_EVEN | STOPBITS_1,
90 _8E1 = DATABITS_8 | PARITY_EVEN | STOPBITS_1,
91 _5E2 = DATABITS_5 | PARITY_EVEN | STOPBITS_2,
92 _6E2 = DATABITS_6 | PARITY_EVEN | STOPBITS_2,
93 _7E2 = DATABITS_7 | PARITY_EVEN | STOPBITS_2,
94 _8E2 = DATABITS_8 | PARITY_EVEN | STOPBITS_2,
95 _5O1 = DATABITS_5 | PARITY_ODD | STOPBITS_1,
96 _6O1 = DATABITS_6 | PARITY_ODD | STOPBITS_1,
97 _7O1 = DATABITS_7 | PARITY_ODD | STOPBITS_1,
98 _8O1 = DATABITS_8 | PARITY_ODD | STOPBITS_1,
99 _5O2 = DATABITS_5 | PARITY_ODD | STOPBITS_2,
100 _6O2 = DATABITS_6 | PARITY_ODD | STOPBITS_2,
101 _7O2 = DATABITS_7 | PARITY_ODD | STOPBITS_2,
102 _8O2 = DATABITS_8 | PARITY_ODD | STOPBITS_2,
103 } Config_t;

Member Function Documentation

◆ available()

◆ availableForWrite()

virtual int SerialPort::availableForWrite ( )
virtual

포트 내부 송신버퍼의 여유공간을 반환합니다.

Reimplemented from Print.

◆ begin()

virtual error_t SerialPort::begin ( uint32_t speed = 115200,
Config_t config = _8N1 )
pure virtual

시리얼 포트를 초기화합니다.

Parameters
speed설정 가능한 speed는 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 또는 115200 입니다.
configData bit, parity, stop bit 등을 설정합니다.

◆ end()

virtual void SerialPort::end ( )
virtual

시리얼 포트를 종료합니다.

Tx, Rx 핀들은 input 상태가 됩니다.

◆ getInputData() [1/2]

char * SerialPort::getInputData ( )
inline

입력이 완료된 문자열을 가져옵니다.

335 {
336 return getInputData(NULL);
337 }
char * getInputData()
입력이 완료된 문자열을 가져옵니다.
Definition SerialPort.hpp:335

◆ getInputData() [2/2]

char * SerialPort::getInputData ( uint8_t * len)

입력이 완료된 문자열을 가져옵니다.

Parameters
len[out]문자열 길이를 반환받을 포인터

◆ input()

error_t SerialPort::input ( char * str,
uint8_t len,
char terminator )

포트로부터 문자열 입력을 받습니다.

terminator 를 수신할 때까지 buf 에 문자열이 저장됩니다. 문자열 입력이 완료되면 onReceive() 함수로 지정된 콜백함수가 호출되며, getInputData() 로 문자열을 가져올 수 있습니다. 문자열 길이는 (len - 1) 을 넘을 수 없습니다. 이미 문자열 입력을 받고 있는 포트에서 이 함수를 호출 시 새로 문자열을 받습니다.

Parameters
str문자열 입력이 저장될 포인터
lenstr 의 길이
terminator문자열 종료를 의미하는 문자
Returns
  • ERROR_SUCCESS : 문자열을 정상적으로 입력받기 시작함
  • ERROR_INVALID_ARGS : len 이 2 보다 작거나 str 이 NULL 이라서 실패

◆ inputKeyboard()

error_t SerialPort::inputKeyboard ( char * str,
uint8_t len )

포트와 연결된 키보드로부터 문자열 입력을 받습니다.

Carrige return (0x0D) 또는 NULL (0x00) 을 수신할 때까지 str 에 문자열이 저장됩니다. Back-space (0x80) 를 수신하면 가장 마지막 문자를 제거합니다. 문자열 입력이 완료되면 onReceive() 함수로 지정된 콜백함수가 호출되며, getInputData() 로 문자열을 가져올 수 있습니다. 문자열 길이는 (len - 1) 을 넘을 수 없습니다. 이미 문자열 입력을 받고 있는 포트에서 이 함수를 호출시 새로 문자열을 받습니다.

Parameters
str문자열 입력이 저장될 포인터
lenstr 의 길이
Returns
  • ERROR_SUCCESS : 문자열을 정상적으로 입력받기 시작함
  • ERROR_INVALID_ARGS : len 이 2 보다 작거나 str 이 NULL 이라서 실패

◆ listen()

virtual void SerialPort::listen ( )
pure virtual

포트로부터 문자 입력을 받기 시작합니다.

기본으로는 수신이 불가능한 상태이므로 시리얼 포트를 통해 입력을 받고 싶을 때 호출해야 합니다.

◆ onReceive() [1/3]

void SerialPort::onReceive ( void(* func )(SerialPort &),
bool interrupt = false )

포트로 문자가 입력될 때마다 호출될 콜백함수를 지정합니다.

콜백함수를 인터럽트 모드에서 실행할 지 지정할 수 있습니다.

Parameters
func콜백될 함수 포인터
interrupt인터럽트 모드에서 콜백할 지 여부

◆ onReceive() [2/3]

void SerialPort::onReceive ( void(* func )(void *),
void * ctx,
bool interrupt = false )

포트로 문자가 입력될 때마다 호출될 콜백함수를 지정합니다.

콜백함수를 인터럽트 모드에서 실행할 지 지정할 수 있습니다.

Parameters
func콜백될 함수 포인터
ctx콜백시 함께 전달될 인자 포인터
interrupt인터럽트 모드에서 콜백할 지 여부

◆ onReceive() [3/3]

void SerialPort::onReceive ( void(* func )(void *, SerialPort &),
void * ctx,
bool interrupt = false )

포트로 문자가 입력될 때마다 호출될 콜백함수를 지정합니다.

콜백함수를 인터럽트 모드에서 실행할 지 지정할 수 있습니다.

Parameters
func콜백될 함수 포인터
ctx콜백시 함께 전달될 인자 포인터
interrupt인터럽트 모드에서 콜백할 지 여부

◆ peek()

virtual int SerialPort::peek ( )
virtual

포트 내부 수신버퍼의 가장 앞에 위치한 문자를 반한합니다.

이 함수가 호출되더라도 수신버퍼의 내용에는 변화가 없습니다.

Implements Stream.

◆ read()

◆ readBytes() [1/2]

uint8_t SerialPort::readBytes ( char * buf,
uint8_t len )

포트 내부 버퍼에 수신된 문자들을 하나 이상 len 이하 꺼냅니다.

Parameters
buf꺼낸 문자들을 저장할 버퍼 포인터
len꺼낼 문자들의 최대 갯수
Returns
꺼낸 문자의 갯수

◆ readBytes() [2/2]

uint8_t SerialPort::readBytes ( uint8_t * buf,
uint8_t len )

포트 내부 버퍼에 수신된 문자들을 하나 이상 len 이하 꺼냅니다.

Parameters
buf꺼낸 문자들을 저장할 버퍼 포인터
len꺼낼 문자들의 최대 갯수
Returns
꺼낸 문자의 갯수

◆ write() [1/4]

size_t Print::write ( const char * buffer,
size_t size )
inline

데이터 배열을 출력합니다.

Parameters
buf전송할 배열의 시작 포인터
len전송할 배열의 길이 (byte)
98 {
99 return write((const uint8_t *)buffer, size);
100 }
virtual size_t write(uint8_t val)
문자 하나를 출력합니다.

◆ write() [2/4]

size_t Print::write ( const char * str)
inline

문자열을 출력합니다.

Parameters
cstr출력할 문자열. Null로 종료되는(null-terminated) 문자열이어야 합니다.
Returns
전송된 문자 수
79 {
80 if (str == NULL) return 0;
81 return write((const uint8_t *)str, strlen(str));
82 }

◆ write() [3/4]

virtual size_t Print::write ( const uint8_t * buffer,
size_t size )
virtual

데이터 배열을 출력합니다.

Parameters
buf전송할 배열의 시작 포인터
len전송할 배열의 길이 (byte)

Reimplemented from Print.

◆ write() [4/4]


The documentation for this class was generated from the following file: