serial_read(ser, length=-1, timeout=-1)
기능
Serial 포트에서 데이터를 읽어옵니다.
인수
인수명 | 자료형 | 기본값 | 설명 |
---|---|---|---|
Ser | serial.Serial | - | Serial instance |
Length | int | -1 | Read 할 바이트 수
|
timeout | int float | -1 | Read 대기 시간
|
리턴
값(res, rx_data) | 설명 | |
res | n | 수신한 데이터의 바이트 수 |
-1 | Port가 open 상태가 아닙니다. | |
-2 | serial.SerialException 예외 발생 | |
rx_data | Read 한 데이터(byte type) |
예외
예외 | 설명 |
---|---|
DR_Error (DR_ERROR_TYPE) | 인수의 데이터형 오류 시 |
DR_Error (DR_ERROR_VALUE) | 인수의 값이 유효하지 않을 시 |
예제
ser = serial_open(port="COM", baudrate=115200, bytesize=DR_EIGHTBITS,
parity=DR_PARITY_NONE, stopbits=DR_STOPBITS_ONE)
res, rx_data = serial_read(ser)
#데이터가 수신될 때 까지 무한 대기
res, rx_data = serial_read(ser, timeout=3)
#데이터가 수신될 때 까지 대기, 3초 타임 아웃 설정
#3초 이내 수신되면 읽은 데이터 바로 리턴
#3초가 지나면 현재까지 읽은 값을 리턴한다
res, rx_data = serial_read(ser, length=100)
#100byte 읽을 때까지 무한대기
res, rx_data = serial_read(ser, length=100, timeout=3)
#100byte 읽을 때 까지 대기, 3초 타임 아웃 설정
#3초 이내 100byte 수신되면 읽은 데이터 바로 리턴
#3초가 지나면 현재까지 읽은 값을 리턴한다
#수신된 byte형을 string 형으로 변환
rx_msg = rx_data.decode()
#rx_data는 byte형이고 string형으로 변환하기 위해서는 decode() 사용합니다.
#예를 들어, rx_data = b”abcd” 이면, rx_msg=”abcd”가 됩니다.
res, rx_data = serial_close(ser)