물론 Adafruit 페이지에 가면 가장 기본적인 읽기 정도는 나와 있다.
CircuitPython UART Serial
https://learn.adafruit.com/circuitpython-essentials/circuitpython-uart-serial
"""CircuitPython Essentials UART Serial example"""
import board
import busio
import digitalio
# For most CircuitPython boards:
led = digitalio.DigitalInOut(board.LED)
# For QT Py M0:
# led = digitalio.DigitalInOut(board.SCK)
led.direction = digitalio.Direction.OUTPUT
uart = busio.UART(board.TX, board.RX, baudrate=9600)
while True:
data = uart.read(32) # read up to 32 bytes
# print(data) # this is a bytearray type
if data is not None:
led.value = True
# convert bytearray to string
data_string = ''.join([chr(b) for b in data])
print(data_string, end="")
led.value = False
busio 는 circuitpython의 기본 라이브러리 이므로 따로 폴더를 가져올 필요없이 circuitpython이 동작하는 환경이면 된다.
핀을 맘 속으로 정해두고, 연결하고
busio.UART 를 호출해 주면 기본 준비는 끝. 기본적인 핀 말고 속도난 flow control 등을 설정할 수 있다.
이 예제는 데이터를 읽어서 스트링으로 출력해주는 예제, 즉 read 부분은 잘 나와 있다.
그럼 시리얼로 데이터를 보내고 싶다면 어떻게 하나? read 가 읽기이니 write 가 쓰기가 되겠다.
uart.write(buffer)
이렇게 써주면 된다.
buffer 는 바이트 배열로 선언해 주면 된다. ESP8266 AT command 를 처리하는 코드을 살펴보면 그 예를 가져다 쓸 수 있다.
uart.reset_input_buffer() # flush it
if _debug:
print("--->", at_cmd)
uart.write(bytes(at_cmd, "utf-8"))
uart.write(b"\x0d\x0a")
자세한 API 함수에 대한 것은 아래 페이지를 꼭 참고하세요.
https://circuitpython.readthedocs.io/en/6.3.x/shared-bindings/busio/#busio.UART
읽는 예를 들어 보면, busio.UART 를 호출해야 한다고 하면 위 페이지로 가서 UART 함수 부분을 자세히 보는 것이다.
busio.UART(tx: microcontroller.Pin, rx: microcontroller.Pin, *, baudrate: int = 9600, bits: int = 8, parity: Optional[Parity] = None, stop: int = 1, timeout: float = 1, receiver_buffer_size: int = 64)
넘겨주는 파라메터 설명도 이렇게 자세히 되어 있다. (사실 대부분 기본값으로 쓰니깐 보통때는 잘 안보지만)
- tx (Pin) – the pin to transmit with, or None if this UART is receive-only.
- rx (Pin) – the pin to receive on, or None if this UART is transmit-only.
- rts (Pin) – the pin for rts, or None if rts not in use.
- cts (Pin) – the pin for cts, or None if cts not in use.
- rs485_dir (Pin) – the output pin for rs485 direction setting, or None if rs485 not in use.
- rs485_invert (bool) – rs485_dir pin active high when set. Active low otherwise.
- baudrate (int) – the transmit and receive speed.
- bits (int) – the number of bits per byte, 5 to 9.
- parity (Parity) – the parity used for error checking.
- stop (int) – the number of stop bits, 1 or 2.
- timeout (float) – the timeout in seconds to wait for the first character and between subsequent characters when reading. Raises ValueError if timeout >100 seconds.
- receiver_buffer_size (int) – the character length of the read buffer (0 to disable). (When a character is 9 bits the buffer will be 2 * receiver_buffer_size bytes.)
BJ.
'IT > 파이썬' 카테고리의 다른 글
Django ORM - 중복 레코드 제거 방법 (0) | 2023.04.18 |
---|---|
파이썬 라이브러리 패키지 업데이트 방법 - 한꺼번에 여러개 (0) | 2021.11.17 |
vscode git bash terminal 에서 파이썬 버전 변경 실행 (0) | 2021.08.10 |
임베디드 보드 파이썬 - CircuitPython MicroPython (0) | 2021.08.06 |
파이썬 리스트 축약 문법 : 리스트 항목에 어떤 특정함수를 일괄 적용 (0) | 2021.07.28 |