우선 serial module을 import하여 사용하기 위해서 PySerial 모듈을 install 해준다.
파이챰의 Terminal에서 pip install pyserial 명령어를 통해 설치해주자.
install command : pip install pyserial
- openSerial
가변적인 port만 입력받게 하고 그 외의 값은 default 값을 주었다. 상황에 맞게 baudrate와 sytesize등을 변경해 주어 사용가능하다.
def openSerial(port, baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False):
ser = serial.Serial()
ser.port = port
ser.baudrate = baudrate
ser.bytesize = bytesize
ser.parity = parity
ser.stopbits = stopbits
ser.timeout = timeout
ser.xonxoff = xonxoff
ser.rtscts = rtscts
ser.dsrdtr = dsrdtr
ser.open()
return ser
- write
def writePort(ser, data):
ser.write(data)
- write with encode
encode함수를 사용하여 encoding된 데이터를 write해 줄 수 있다.
def writePortUnicode(ser, data):
writePort(ser, data.encode())
- read
size 1씩 읽어온다
def read(ser, size=1, timeout=None):
ser.timeout = timeout
readed = ser.read(size)
return readed
- read until specific code
특정 코드가 날라올 때까지 read할 수 있다. 예제의 경우 byte \x03을 입력 받을 때까지 읽어오도록 되어 있다.
def readUntilExitCode(ser, exitcode=b'\x03'):
readed = b''
while True:
data = ser.read()
print(data)
readed += data
if exitcode in data:
return readed[:1]
- readEOF
def readEOF(ser):
readed = ser.readline()
return readed[:-1]
- pyserial 예제
if __name__ == '__main__':
ser = openSerial('com1')
string = 'hello world\r\n'
writePort(ser, string)
writePort(ser, string.encode())
writePortUnicode(ser, string)
string = b'Hello World\r\n'
writePort(ser, string)
string = '한글 전송 테스트\r\n'
writePortUnicode(ser, string)
readed = read(ser)
print(readed)
print(read(ser, 10))
print(read(ser, size=3, timeout=5))
print(readEOF(ser))
print(readUntilExitCode(ser))
'개발 > Python' 카테고리의 다른 글
[파이썬] pynput을 이용한 키보드 제어 (0) | 2020.07.28 |
---|---|
[파이썬] 한글 바이트 변환 방법 (0) | 2020.07.27 |
[파이썬] 랜덤모듈 (random module) (0) | 2020.07.25 |
[파이썬] datetime으로 날짜, 시간 다루기 (0) | 2020.07.23 |
[파이썬] 파일 디렉터리 다루기 - os 모듈(import os) (0) | 2020.07.22 |